Merge "Revert non-backward compatible changes in SliceLiveData" into androidx-master-dev
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 4c329c7..89fe9cb 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -8,3 +8,4 @@
commit_msg_changeid_field = true
commit_msg_test_field = true
commit_msg_relnote_field_format = true
+commit_msg_relnote_for_current_txt = true
diff --git a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
index b917f7f..0cfac9f 100644
--- a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
+++ b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
@@ -34,7 +34,7 @@
class ActivityResultFragmentVersionDetector : Detector(), UastScanner, GradleScanner {
companion object {
- const val FRAGMENT_VERSION = "1.3.0-alpha06"
+ const val FRAGMENT_VERSION = "1.3.0-alpha07"
val ISSUE = Issue.create(
id = "InvalidFragmentVersionForActivityResult",
diff --git a/activity/activity/api/api_lint.ignore b/activity/activity/api/api_lint.ignore
index d22641b..2784aac 100644
--- a/activity/activity/api/api_lint.ignore
+++ b/activity/activity/api/api_lint.ignore
@@ -3,10 +3,6 @@
ComponentActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
-KotlinOperator: androidx.activity.result.ActivityResultRegistry#invoke(int, androidx.activity.result.contract.ActivityResultContract<I,O>, I, androidx.core.app.ActivityOptionsCompat):
- Method can be invoked with function call syntax from Kotlin: `invoke` (this is usually desirable; just make sure it makes sense for this type of object)
-
-
MissingNullability: androidx.activity.ComponentActivity#startActivityForResult(android.content.Intent, int) parameter #0:
Missing nullability on parameter `intent` in method `startActivityForResult`
MissingNullability: androidx.activity.ComponentActivity#startActivityForResult(android.content.Intent, int, android.os.Bundle) parameter #0:
diff --git a/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java b/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
index 68023c1..d7785f6 100644
--- a/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
+++ b/activity/activity/src/main/java/androidx/activity/result/ActivityResultRegistry.java
@@ -59,7 +59,7 @@
private static final String LOG_TAG = "ActivityResultRegistry";
// Use upper 16 bits for request codes
- private final AtomicInteger mNextRc = new AtomicInteger(0x0000ffff);
+ private final AtomicInteger mNextRc = new AtomicInteger(0x00010000);
private final Map<Integer, String> mRcToKey = new HashMap<>();
private final Map<String, Integer> mKeyToRc = new HashMap<>();
diff --git a/ads/ads-identifier-benchmark/src/androidTest/AndroidManifest.xml b/ads/ads-identifier-benchmark/src/androidTest/AndroidManifest.xml
index b89cf16..5f8aea8 100644
--- a/ads/ads-identifier-benchmark/src/androidTest/AndroidManifest.xml
+++ b/ads/ads-identifier-benchmark/src/androidTest/AndroidManifest.xml
@@ -24,5 +24,8 @@
android:name=".AdsIdentifierBenchmarkApplication"
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/annotation/annotation-experimental/api/1.1.0-alpha01.txt b/annotation/annotation-experimental/api/1.1.0-alpha01.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/1.1.0-alpha01.txt
+++ b/annotation/annotation-experimental/api/1.1.0-alpha01.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/annotation/annotation-experimental/api/current.txt b/annotation/annotation-experimental/api/current.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/current.txt
+++ b/annotation/annotation-experimental/api/current.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/annotation/annotation-experimental/api/public_plus_experimental_1.1.0-alpha01.txt b/annotation/annotation-experimental/api/public_plus_experimental_1.1.0-alpha01.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/public_plus_experimental_1.1.0-alpha01.txt
+++ b/annotation/annotation-experimental/api/public_plus_experimental_1.1.0-alpha01.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/annotation/annotation-experimental/api/public_plus_experimental_current.txt b/annotation/annotation-experimental/api/public_plus_experimental_current.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/public_plus_experimental_current.txt
+++ b/annotation/annotation-experimental/api/public_plus_experimental_current.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/annotation/annotation-experimental/api/restricted_1.1.0-alpha01.txt b/annotation/annotation-experimental/api/restricted_1.1.0-alpha01.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/restricted_1.1.0-alpha01.txt
+++ b/annotation/annotation-experimental/api/restricted_1.1.0-alpha01.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/annotation/annotation-experimental/api/restricted_current.txt b/annotation/annotation-experimental/api/restricted_current.txt
index c4e699b..e854aa6 100644
--- a/annotation/annotation-experimental/api/restricted_current.txt
+++ b/annotation/annotation-experimental/api/restricted_current.txt
@@ -6,6 +6,8 @@
}
public enum Experimental.Level {
+ method public static androidx.annotation.experimental.Experimental.Level valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.annotation.experimental.Experimental.Level[] values();
enum_constant public static final androidx.annotation.experimental.Experimental.Level ERROR;
enum_constant public static final androidx.annotation.experimental.Experimental.Level WARNING;
}
diff --git a/appcompat/appcompat-benchmark/src/androidTest/AndroidManifest.xml b/appcompat/appcompat-benchmark/src/androidTest/AndroidManifest.xml
index 1302397..1c5fab4 100644
--- a/appcompat/appcompat-benchmark/src/androidTest/AndroidManifest.xml
+++ b/appcompat/appcompat-benchmark/src/androidTest/AndroidManifest.xml
@@ -23,6 +23,9 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
<activity android:name="androidx.appcompat.app.AppCompatActivity"
android:theme="@style/Theme.AppCompat"/>
</application>
diff --git a/appcompat/appcompat/api/1.3.0-alpha01.txt b/appcompat/appcompat/api/1.3.0-alpha01.txt
index dc3c5ab..89aae44 100644
--- a/appcompat/appcompat/api/1.3.0-alpha01.txt
+++ b/appcompat/appcompat/api/1.3.0-alpha01.txt
@@ -449,11 +449,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/api/api_lint.ignore b/appcompat/appcompat/api/api_lint.ignore
index fd01b04..edddedd 100644
--- a/appcompat/appcompat/api/api_lint.ignore
+++ b/appcompat/appcompat/api/api_lint.ignore
@@ -613,8 +613,6 @@
Missing nullability on method `onCreateInputConnection` return
MissingNullability: androidx.appcompat.widget.AppCompatAutoCompleteTextView#onCreateInputConnection(android.view.inputmethod.EditorInfo) parameter #0:
Missing nullability on parameter `outAttrs` in method `onCreateInputConnection`
-MissingNullability: androidx.appcompat.widget.AppCompatAutoCompleteTextView#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatAutoCompleteTextView#setCustomSelectionActionModeCallback(android.view.ActionMode.Callback) parameter #0:
Missing nullability on parameter `actionModeCallback` in method `setCustomSelectionActionModeCallback`
MissingNullability: androidx.appcompat.widget.AppCompatAutoCompleteTextView#setTextAppearance(android.content.Context, int) parameter #0:
@@ -625,14 +623,10 @@
Missing nullability on parameter `info` in method `onInitializeAccessibilityNodeInfo`
MissingNullability: androidx.appcompat.widget.AppCompatButton#onTextChanged(CharSequence, int, int, int) parameter #0:
Missing nullability on parameter `text` in method `onTextChanged`
-MissingNullability: androidx.appcompat.widget.AppCompatButton#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatButton#setCustomSelectionActionModeCallback(android.view.ActionMode.Callback) parameter #0:
Missing nullability on parameter `actionModeCallback` in method `setCustomSelectionActionModeCallback`
MissingNullability: androidx.appcompat.widget.AppCompatButton#setTextAppearance(android.content.Context, int) parameter #0:
Missing nullability on parameter `context` in method `setTextAppearance`
-MissingNullability: androidx.appcompat.widget.AppCompatCheckBox#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatCheckBox#setButtonDrawable(android.graphics.drawable.Drawable) parameter #0:
Missing nullability on parameter `buttonDrawable` in method `setButtonDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatCheckedTextView#onCreateInputConnection(android.view.inputmethod.EditorInfo):
@@ -647,26 +641,18 @@
Missing nullability on method `onCreateInputConnection` return
MissingNullability: androidx.appcompat.widget.AppCompatEditText#onCreateInputConnection(android.view.inputmethod.EditorInfo) parameter #0:
Missing nullability on parameter `outAttrs` in method `onCreateInputConnection`
-MissingNullability: androidx.appcompat.widget.AppCompatEditText#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatEditText#setCustomSelectionActionModeCallback(android.view.ActionMode.Callback) parameter #0:
Missing nullability on parameter `actionModeCallback` in method `setCustomSelectionActionModeCallback`
MissingNullability: androidx.appcompat.widget.AppCompatEditText#setTextAppearance(android.content.Context, int) parameter #0:
Missing nullability on parameter `context` in method `setTextAppearance`
-MissingNullability: androidx.appcompat.widget.AppCompatImageButton#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatImageButton#setImageBitmap(android.graphics.Bitmap) parameter #0:
Missing nullability on parameter `bm` in method `setImageBitmap`
-MissingNullability: androidx.appcompat.widget.AppCompatImageView#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatImageView#setImageBitmap(android.graphics.Bitmap) parameter #0:
Missing nullability on parameter `bm` in method `setImageBitmap`
MissingNullability: androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView#onCreateInputConnection(android.view.inputmethod.EditorInfo):
Missing nullability on method `onCreateInputConnection` return
MissingNullability: androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView#onCreateInputConnection(android.view.inputmethod.EditorInfo) parameter #0:
Missing nullability on parameter `outAttrs` in method `onCreateInputConnection`
-MissingNullability: androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView#setTextAppearance(android.content.Context, int) parameter #0:
Missing nullability on parameter `context` in method `setTextAppearance`
MissingNullability: androidx.appcompat.widget.AppCompatRadioButton#AppCompatRadioButton(android.content.Context) parameter #0:
@@ -675,8 +661,6 @@
Missing nullability on parameter `context` in method `AppCompatRadioButton`
MissingNullability: androidx.appcompat.widget.AppCompatRadioButton#AppCompatRadioButton(android.content.Context, android.util.AttributeSet, int) parameter #0:
Missing nullability on parameter `context` in method `AppCompatRadioButton`
-MissingNullability: androidx.appcompat.widget.AppCompatRadioButton#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatRadioButton#setButtonDrawable(android.graphics.drawable.Drawable) parameter #0:
Missing nullability on parameter `buttonDrawable` in method `setButtonDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatSeekBar#onDraw(android.graphics.Canvas) parameter #0:
@@ -697,8 +681,6 @@
Missing nullability on parameter `event` in method `onTouchEvent`
MissingNullability: androidx.appcompat.widget.AppCompatSpinner#setAdapter(android.widget.SpinnerAdapter) parameter #0:
Missing nullability on parameter `adapter` in method `setAdapter`
-MissingNullability: androidx.appcompat.widget.AppCompatSpinner#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatSpinner#setPopupBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
Missing nullability on parameter `background` in method `setPopupBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatSpinner#setPrompt(CharSequence) parameter #0:
@@ -711,8 +693,6 @@
Missing nullability on parameter `outAttrs` in method `onCreateInputConnection`
MissingNullability: androidx.appcompat.widget.AppCompatTextView#onTextChanged(CharSequence, int, int, int) parameter #0:
Missing nullability on parameter `text` in method `onTextChanged`
-MissingNullability: androidx.appcompat.widget.AppCompatTextView#setBackgroundDrawable(android.graphics.drawable.Drawable) parameter #0:
- Missing nullability on parameter `background` in method `setBackgroundDrawable`
MissingNullability: androidx.appcompat.widget.AppCompatTextView#setCustomSelectionActionModeCallback(android.view.ActionMode.Callback) parameter #0:
Missing nullability on parameter `actionModeCallback` in method `setCustomSelectionActionModeCallback`
MissingNullability: androidx.appcompat.widget.AppCompatTextView#setTextAppearance(android.content.Context, int) parameter #0:
diff --git a/appcompat/appcompat/api/current.txt b/appcompat/appcompat/api/current.txt
index dc3c5ab..89aae44 100644
--- a/appcompat/appcompat/api/current.txt
+++ b/appcompat/appcompat/api/current.txt
@@ -449,11 +449,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/api/public_plus_experimental_1.3.0-alpha01.txt b/appcompat/appcompat/api/public_plus_experimental_1.3.0-alpha01.txt
index 09e7731..dca14b8 100644
--- a/appcompat/appcompat/api/public_plus_experimental_1.3.0-alpha01.txt
+++ b/appcompat/appcompat/api/public_plus_experimental_1.3.0-alpha01.txt
@@ -449,11 +449,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/api/public_plus_experimental_current.txt b/appcompat/appcompat/api/public_plus_experimental_current.txt
index 09e7731..dca14b8 100644
--- a/appcompat/appcompat/api/public_plus_experimental_current.txt
+++ b/appcompat/appcompat/api/public_plus_experimental_current.txt
@@ -449,11 +449,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/api/restricted_1.3.0-alpha01.txt b/appcompat/appcompat/api/restricted_1.3.0-alpha01.txt
index 6f63cec..a210c6c 100644
--- a/appcompat/appcompat/api/restricted_1.3.0-alpha01.txt
+++ b/appcompat/appcompat/api/restricted_1.3.0-alpha01.txt
@@ -936,14 +936,14 @@
method public int getGroupId();
method public android.graphics.drawable.Drawable! getIcon();
method public android.content.Intent! getIntent();
- method @android.view.ViewDebug.CapturedViewProperty public int getItemId();
+ method public int getItemId();
method public android.view.ContextMenu.ContextMenuInfo! getMenuInfo();
method public char getNumericShortcut();
method public int getOrder();
method public int getOrdering();
method public android.view.SubMenu! getSubMenu();
method public androidx.core.view.ActionProvider! getSupportActionProvider();
- method @android.view.ViewDebug.CapturedViewProperty public CharSequence! getTitle();
+ method public CharSequence! getTitle();
method public CharSequence! getTitleCondensed();
method public boolean hasCollapsibleActionView();
method public boolean hasSubMenu();
@@ -1295,11 +1295,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/api/restricted_current.txt b/appcompat/appcompat/api/restricted_current.txt
index 6f63cec..a210c6c 100644
--- a/appcompat/appcompat/api/restricted_current.txt
+++ b/appcompat/appcompat/api/restricted_current.txt
@@ -936,14 +936,14 @@
method public int getGroupId();
method public android.graphics.drawable.Drawable! getIcon();
method public android.content.Intent! getIntent();
- method @android.view.ViewDebug.CapturedViewProperty public int getItemId();
+ method public int getItemId();
method public android.view.ContextMenu.ContextMenuInfo! getMenuInfo();
method public char getNumericShortcut();
method public int getOrder();
method public int getOrdering();
method public android.view.SubMenu! getSubMenu();
method public androidx.core.view.ActionProvider! getSupportActionProvider();
- method @android.view.ViewDebug.CapturedViewProperty public CharSequence! getTitle();
+ method public CharSequence! getTitle();
method public CharSequence! getTitleCondensed();
method public boolean hasCollapsibleActionView();
method public boolean hasSubMenu();
@@ -1295,11 +1295,11 @@
ctor public ActionMenuView.LayoutParams(android.view.ViewGroup.LayoutParams!);
ctor public ActionMenuView.LayoutParams(androidx.appcompat.widget.ActionMenuView.LayoutParams!);
ctor public ActionMenuView.LayoutParams(int, int);
- field @android.view.ViewDebug.ExportedProperty public int cellsUsed;
- field @android.view.ViewDebug.ExportedProperty public boolean expandable;
- field @android.view.ViewDebug.ExportedProperty public int extraPixels;
- field @android.view.ViewDebug.ExportedProperty public boolean isOverflowButton;
- field @android.view.ViewDebug.ExportedProperty public boolean preventEdgeOffset;
+ field public int cellsUsed;
+ field public boolean expandable;
+ field public int extraPixels;
+ field public boolean isOverflowButton;
+ field public boolean preventEdgeOffset;
}
public static interface ActionMenuView.OnMenuItemClickListener {
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatSpinnerTest.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatSpinnerTest.java
index 43197bb6..0e3e331 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatSpinnerTest.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/AppCompatSpinnerTest.java
@@ -55,6 +55,7 @@
import androidx.test.filters.FlakyTest;
import androidx.test.filters.LargeTest;
import androidx.test.filters.MediumTest;
+import androidx.test.filters.SdkSuppress;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.testutils.PollingCheck;
@@ -67,6 +68,7 @@
* In addition to all tinting-related tests done by the base class, this class provides
* tests specific to {@link AppCompatSpinner} class.
*/
+@SdkSuppress(maxSdkVersion=29) // Broken on API 30 b/159743495
@LargeTest
public class AppCompatSpinnerTest
extends AppCompatBaseViewTest<AppCompatSpinnerActivity, AppCompatSpinner> {
diff --git a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/ListPopupWindowTest.java b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/ListPopupWindowTest.java
index 06c06b4..b5a8acb 100644
--- a/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/ListPopupWindowTest.java
+++ b/appcompat/appcompat/src/androidTest/java/androidx/appcompat/widget/ListPopupWindowTest.java
@@ -61,6 +61,7 @@
import androidx.test.filters.FlakyTest;
import androidx.test.filters.LargeTest;
import androidx.test.filters.MediumTest;
+import androidx.test.filters.SdkSuppress;
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
@@ -70,6 +71,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+@SdkSuppress(maxSdkVersion=29) // Broken on API 30 b/159743495
@RunWith(AndroidJUnit4.class)
public class ListPopupWindowTest {
@Rule
diff --git a/appsearch/appsearch/api/1.0.0-alpha01.txt b/appsearch/appsearch/api/1.0.0-alpha01.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/1.0.0-alpha01.txt
+++ b/appsearch/appsearch/api/1.0.0-alpha01.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/api/current.txt b/appsearch/appsearch/api/current.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/current.txt
+++ b/appsearch/appsearch/api/current.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/api/public_plus_experimental_1.0.0-alpha01.txt b/appsearch/appsearch/api/public_plus_experimental_1.0.0-alpha01.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/public_plus_experimental_1.0.0-alpha01.txt
+++ b/appsearch/appsearch/api/public_plus_experimental_1.0.0-alpha01.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/api/public_plus_experimental_current.txt b/appsearch/appsearch/api/public_plus_experimental_current.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/public_plus_experimental_current.txt
+++ b/appsearch/appsearch/api/public_plus_experimental_current.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/api/restricted_1.0.0-alpha01.txt b/appsearch/appsearch/api/restricted_1.0.0-alpha01.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/restricted_1.0.0-alpha01.txt
+++ b/appsearch/appsearch/api/restricted_1.0.0-alpha01.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/api/restricted_current.txt b/appsearch/appsearch/api/restricted_current.txt
index 41e4226..74d9356 100644
--- a/appsearch/appsearch/api/restricted_current.txt
+++ b/appsearch/appsearch/api/restricted_current.txt
@@ -1,6 +1,27 @@
// Signature format: 3.0
package androidx.appsearch.app {
+ public final class AppSearchBatchResult<KeyType, ValueType> {
+ method public java.util.Map<KeyType!,androidx.appsearch.app.AppSearchResult<ValueType!>!> getFailures();
+ method public java.util.Map<KeyType!,ValueType!> getSuccesses();
+ method public boolean isSuccess();
+ }
+
+ public final class AppSearchResult<ValueType> {
+ method public String? getErrorMessage();
+ method public int getResultCode();
+ method public ValueType? getResultValue();
+ method public boolean isSuccess();
+ field public static final int RESULT_INTERNAL_ERROR = 2; // 0x2
+ field public static final int RESULT_INVALID_ARGUMENT = 3; // 0x3
+ field public static final int RESULT_INVALID_SCHEMA = 7; // 0x7
+ field public static final int RESULT_IO_ERROR = 4; // 0x4
+ field public static final int RESULT_NOT_FOUND = 6; // 0x6
+ field public static final int RESULT_OK = 0; // 0x0
+ field public static final int RESULT_OUT_OF_SPACE = 5; // 0x5
+ field public static final int RESULT_UNKNOWN_ERROR = 1; // 0x1
+ }
+
public final class AppSearchSchema {
}
@@ -37,5 +58,52 @@
method public androidx.appsearch.app.AppSearchSchema.PropertyConfig.Builder setTokenizerType(int);
}
+ public class GenericDocument {
+ ctor protected GenericDocument(androidx.appsearch.app.GenericDocument);
+ method public long getCreationTimestampMillis();
+ method public String getNamespace();
+ method public boolean getPropertyBoolean(String);
+ method public boolean[]? getPropertyBooleanArray(String);
+ method public byte[]? getPropertyBytes(String);
+ method public byte[]![]? getPropertyBytesArray(String);
+ method public androidx.appsearch.app.GenericDocument? getPropertyDocument(String);
+ method public androidx.appsearch.app.GenericDocument![]? getPropertyDocumentArray(String);
+ method public double getPropertyDouble(String);
+ method public double[]? getPropertyDoubleArray(String);
+ method public long getPropertyLong(String);
+ method public long[]? getPropertyLongArray(String);
+ method public String? getPropertyString(String);
+ method public String![]? getPropertyStringArray(String);
+ method public String getSchemaType();
+ method public int getScore();
+ method public long getTtlMillis();
+ method public String getUri();
+ method public <T> T toDataClass(Class<T!>) throws androidx.appsearch.exceptions.AppSearchException;
+ field public static final String DEFAULT_NAMESPACE = "";
+ }
+
+ public static class GenericDocument.Builder<BuilderType extends androidx.appsearch.app.GenericDocument.Builder> {
+ ctor public GenericDocument.Builder(String, String);
+ method public androidx.appsearch.app.GenericDocument build();
+ method public BuilderType setCreationTimestampMillis(long);
+ method public BuilderType setNamespace(String);
+ method public BuilderType setProperty(String, java.lang.String!...);
+ method public BuilderType setProperty(String, boolean...);
+ method public BuilderType setProperty(String, long...);
+ method public BuilderType setProperty(String, double...);
+ method public BuilderType setProperty(String, byte[]!...);
+ method public BuilderType setProperty(String, androidx.appsearch.app.GenericDocument!...);
+ method public BuilderType setScore(@IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int);
+ method public BuilderType setTtlMillis(long);
+ }
+
+}
+
+package androidx.appsearch.exceptions {
+
+ public class AppSearchException extends java.lang.Exception {
+ method public <T> androidx.appsearch.app.AppSearchResult<T!> toAppSearchResult();
+ }
+
}
diff --git a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/app/AppSearchManagerTest.java b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/app/AppSearchManagerTest.java
index 4aad87a..de1e071 100644
--- a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/app/AppSearchManagerTest.java
+++ b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/app/AppSearchManagerTest.java
@@ -23,6 +23,7 @@
import androidx.appsearch.app.AppSearchSchema.PropertyConfig;
import androidx.appsearch.app.customer.EmailDataClass;
+import androidx.test.core.app.ApplicationProvider;
import com.google.common.collect.ImmutableList;
@@ -37,11 +38,16 @@
import java.util.concurrent.Future;
public class AppSearchManagerTest {
- private final AppSearchManager mAppSearch = new AppSearchManager();
+ private final AppSearchManager mAppSearch1 = new AppSearchManager("testInstance1",
+ ApplicationProvider.getApplicationContext());
+ private final AppSearchManager mAppSearch2 = new AppSearchManager("testInstance2",
+ ApplicationProvider.getApplicationContext());
@After
public void tearDown() throws Exception {
- Future<AppSearchResult<Void>> future = mAppSearch.deleteAll();
+ Future<AppSearchResult<Void>> future = mAppSearch1.deleteAll();
+ future.get();
+ future = mAppSearch2.deleteAll();
future.get();
}
@@ -61,20 +67,20 @@
.setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
.build()
).build();
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(emailSchema).build()));
}
@Test
public void testSetSchema_DataClass() throws Exception {
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addDataClass(EmailDataClass.class).build()));
}
@Test
public void testPutDocuments() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
// Index a document
@@ -85,7 +91,7 @@
.setBody("This is the body of the testPut email")
.build();
- Future<AppSearchBatchResult<String, Void>> future = mAppSearch.putDocuments(
+ Future<AppSearchBatchResult<String, Void>> future = mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(email).build());
checkIsSuccess(future);
AppSearchBatchResult<String, Void> result = future.get();
@@ -96,7 +102,7 @@
@Test
public void testPutDocuments_DataClass() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addDataClass(EmailDataClass.class).build()));
// Index a document
@@ -105,7 +111,7 @@
email.subject = "testPut example";
email.body = "This is the body of the testPut email";
- Future<AppSearchBatchResult<String, Void>> future = mAppSearch.putDocuments(
+ Future<AppSearchBatchResult<String, Void>> future = mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addDataClass(email).build());
checkIsSuccess(future);
AppSearchBatchResult<String, Void> result = future.get();
@@ -116,7 +122,7 @@
@Test
public void testGetDocuments() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
// Index a document
@@ -127,20 +133,28 @@
.setSubject("testPut example")
.setBody("This is the body of the testPut email")
.build();
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(inEmail).build()));
// Get the document
- List<GenericDocument> outDocuments = doGet("uri1");
+ List<GenericDocument> outDocuments = doGet(mAppSearch1, "uri1");
assertThat(outDocuments).hasSize(1);
AppSearchEmail outEmail = new AppSearchEmail(outDocuments.get(0));
assertThat(outEmail).isEqualTo(inEmail);
+
+ // Can't get the document in the other instance.
+ AppSearchBatchResult<String, GenericDocument> failResult =
+ mAppSearch2.getDocuments(Arrays.asList("uri1")).get();
+
+ assertThat(failResult.isSuccess()).isFalse();
+ assertThat(failResult.getFailures().get("uri1").getResultCode())
+ .isEqualTo(AppSearchResult.RESULT_NOT_FOUND);
}
@Test
public void testGetDocuments_DataClass() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addDataClass(EmailDataClass.class).build()));
// Index a document
@@ -148,11 +162,11 @@
inEmail.uri = "uri1";
inEmail.subject = "testPut example";
inEmail.body = "This is the body of the testPut inEmail";
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addDataClass(inEmail).build()));
// Get the document
- List<GenericDocument> outDocuments = doGet("uri1");
+ List<GenericDocument> outDocuments = doGet(mAppSearch1, "uri1");
assertThat(outDocuments).hasSize(1);
EmailDataClass outEmail = outDocuments.get(0).toDataClass(EmailDataClass.class);
assertThat(inEmail.uri).isEqualTo(outEmail.uri);
@@ -163,7 +177,7 @@
@Test
public void testQuery() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
// Index a document
@@ -174,16 +188,16 @@
.setSubject("testPut example")
.setBody("This is the body of the testPut email")
.build();
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(inEmail).build()));
// Query for the document
- List<GenericDocument> results = doQuery("body");
+ List<GenericDocument> results = doQuery(mAppSearch1, "body");
assertThat(results).hasSize(1);
assertThat(results.get(0)).isEqualTo(inEmail);
// Multi-term query
- results = doQuery("body email");
+ results = doQuery(mAppSearch1, "body email");
assertThat(results).hasSize(1);
assertThat(results.get(0)).isEqualTo(inEmail);
}
@@ -191,8 +205,11 @@
@Test
public void testQuery_TypeFilter() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
- new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
+ checkIsSuccess(mAppSearch1.setSchema(
+ new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA)
+ .addSchema(new AppSearchSchema.Builder("Test").build())
+ .build()));
// Index a document
AppSearchEmail inEmail =
@@ -204,24 +221,65 @@
.build();
GenericDocument inDoc =
new GenericDocument.Builder<>("uri2", "Test").setProperty("foo", "body").build();
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(inEmail, inDoc).build()));
// Query for the documents
- List<GenericDocument> results = doQuery("body");
+ List<GenericDocument> results = doQuery(mAppSearch1, "body");
assertThat(results).hasSize(2);
assertThat(results).containsExactly(inEmail, inDoc);
// Query only for Document
- results = doQuery("body", "Test");
+ results = doQuery(mAppSearch1, "body", "Test");
assertThat(results).hasSize(1);
assertThat(results).containsExactly(inDoc);
}
@Test
+ public void testQuery_TwoInstances() throws Exception {
+ // Schema registration
+ checkIsSuccess(mAppSearch1.setSchema(new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA).build()));
+ checkIsSuccess(mAppSearch2.setSchema(new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA).build()));
+
+ // Index a document to instance 1.
+ AppSearchEmail inEmail1 =
+ new AppSearchEmail.Builder("uri1")
+ .setFrom("[email protected]")
+ .setTo("[email protected]", "[email protected]")
+ .setSubject("testPut example")
+ .setBody("This is the body of the testPut email")
+ .build();
+ checkIsSuccess(mAppSearch1.putDocuments(
+ new PutDocumentsRequest.Builder().addGenericDocument(inEmail1).build()));
+
+ // Index a document to instance 2.
+ AppSearchEmail inEmail2 =
+ new AppSearchEmail.Builder("uri2")
+ .setFrom("[email protected]")
+ .setTo("[email protected]", "[email protected]")
+ .setSubject("testPut example")
+ .setBody("This is the body of the testPut email")
+ .build();
+ checkIsSuccess(mAppSearch2.putDocuments(
+ new PutDocumentsRequest.Builder().addGenericDocument(inEmail2).build()));
+
+ // Query for instance 1.
+ List<GenericDocument> results = doQuery(mAppSearch1, "body");
+ assertThat(results).hasSize(1);
+ assertThat(results).containsExactly(inEmail1);
+
+ // Query for instance 2.
+ results = doQuery(mAppSearch2, "body");
+ assertThat(results).hasSize(1);
+ assertThat(results).containsExactly(inEmail2);
+ }
+
+ @Test
public void testDelete() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
// Index documents
@@ -239,19 +297,19 @@
.setSubject("testPut example 2")
.setBody("This is the body of the testPut second email")
.build();
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(email1, email2).build()));
// Check the presence of the documents
- assertThat(doGet("uri1")).hasSize(1);
- assertThat(doGet("uri2")).hasSize(1);
+ assertThat(doGet(mAppSearch1, "uri1")).hasSize(1);
+ assertThat(doGet(mAppSearch1, "uri2")).hasSize(1);
// Delete the document
- checkIsSuccess(mAppSearch.delete(ImmutableList.of("uri1")));
+ checkIsSuccess(mAppSearch1.delete(ImmutableList.of("uri1")));
// Make sure it's really gone
AppSearchBatchResult<String, GenericDocument> getResult =
- mAppSearch.getDocuments(ImmutableList.of("uri1", "uri2")).get();
+ mAppSearch1.getDocuments(ImmutableList.of("uri1", "uri2")).get();
assertThat(getResult.isSuccess()).isFalse();
assertThat(getResult.getFailures().get("uri1").getResultCode())
.isEqualTo(AppSearchResult.RESULT_NOT_FOUND);
@@ -259,7 +317,52 @@
// Test if we delete a nonexistent URI.
AppSearchBatchResult<String, Void> deleteResult =
- mAppSearch.delete(ImmutableList.of("uri1")).get();
+ mAppSearch1.delete(ImmutableList.of("uri1")).get();
+ assertThat(deleteResult.getFailures()).containsExactly("uri1",
+ AppSearchResult.newFailedResult(
+ AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null));
+ }
+
+ @Test
+ public void testDelete_TwoInstances() throws Exception {
+ // Schema registration
+ checkIsSuccess(mAppSearch1.setSchema(new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA).build()));
+
+ // Index documents
+ AppSearchEmail email1 =
+ new AppSearchEmail.Builder("uri1")
+ .setFrom("[email protected]")
+ .setTo("[email protected]", "[email protected]")
+ .setSubject("testPut example")
+ .setBody("This is the body of the testPut email")
+ .build();
+ checkIsSuccess(mAppSearch1.putDocuments(
+ new PutDocumentsRequest.Builder().addGenericDocument(email1).build()));
+
+ // Check the presence of the documents
+ assertThat(doGet(mAppSearch1, "uri1")).hasSize(1);
+
+ // Can't delete in the other instance.
+ AppSearchBatchResult<String, Void> deleteResult =
+ mAppSearch2.delete(ImmutableList.of("uri1")).get();
+ assertThat(deleteResult.getFailures()).containsExactly("uri1",
+ AppSearchResult.newFailedResult(
+ AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null));
+ assertThat(doGet(mAppSearch1, "uri1")).hasSize(1);
+
+ // Delete the document
+ checkIsSuccess(mAppSearch1.delete(ImmutableList.of("uri1")));
+
+ // Make sure it's really gone
+ AppSearchBatchResult<String, GenericDocument> getResult =
+ mAppSearch1.getDocuments(ImmutableList.of("uri1")).get();
+ assertThat(getResult.isSuccess()).isFalse();
+ assertThat(getResult.getFailures().get("uri1").getResultCode())
+ .isEqualTo(AppSearchResult.RESULT_NOT_FOUND);
+
+ // Test if we delete a nonexistent URI.
+ deleteResult = mAppSearch1.delete(ImmutableList.of("uri1")).get();
assertThat(deleteResult.getFailures()).containsExactly("uri1",
AppSearchResult.newFailedResult(
AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null));
@@ -268,7 +371,7 @@
@Test
public void testDeleteByTypes() throws Exception {
// Schema registration
- checkIsSuccess(mAppSearch.setSchema(
+ checkIsSuccess(mAppSearch1.setSchema(
new SetSchemaRequest.Builder().addSchema(AppSearchEmail.SCHEMA).build()));
// Index documents
@@ -289,19 +392,19 @@
GenericDocument document1 =
new GenericDocument.Builder<>("uri3", "schemaType")
.setProperty("foo", "bar").build();
- checkIsSuccess(mAppSearch.putDocuments(
+ checkIsSuccess(mAppSearch1.putDocuments(
new PutDocumentsRequest.Builder().addGenericDocument(email1, email2, document1)
.build()));
// Check the presence of the documents
- assertThat(doGet("uri1", "uri2", "uri3")).hasSize(3);
+ assertThat(doGet(mAppSearch1, "uri1", "uri2", "uri3")).hasSize(3);
// Delete the email type
- checkIsSuccess(mAppSearch.deleteByTypes(ImmutableList.of(AppSearchEmail.SCHEMA_TYPE)));
+ checkIsSuccess(mAppSearch1.deleteByTypes(ImmutableList.of(AppSearchEmail.SCHEMA_TYPE)));
// Make sure it's really gone
AppSearchBatchResult<String, GenericDocument> getResult =
- mAppSearch.getDocuments(ImmutableList.of("uri1", "uri2", "uri3")).get();
+ mAppSearch1.getDocuments(ImmutableList.of("uri1", "uri2", "uri3")).get();
assertThat(getResult.isSuccess()).isFalse();
assertThat(getResult.getFailures().get("uri1").getResultCode())
.isEqualTo(AppSearchResult.RESULT_NOT_FOUND);
@@ -310,9 +413,58 @@
assertThat(getResult.getSuccesses().get("uri3")).isEqualTo(document1);
}
- private List<GenericDocument> doGet(String... uris) throws Exception {
+ @Test
+ public void testDeleteByTypes_TwoInstances() throws Exception {
+ // Schema registration
+ checkIsSuccess(mAppSearch1.setSchema(new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA).build()));
+ checkIsSuccess(mAppSearch2.setSchema(new SetSchemaRequest.Builder()
+ .addSchema(AppSearchEmail.SCHEMA).build()));
+
+ // Index documents
+ AppSearchEmail email1 =
+ new AppSearchEmail.Builder("uri1")
+ .setFrom("[email protected]")
+ .setTo("[email protected]", "[email protected]")
+ .setSubject("testPut example")
+ .setBody("This is the body of the testPut email")
+ .build();
+ AppSearchEmail email2 =
+ new AppSearchEmail.Builder("uri2")
+ .setFrom("[email protected]")
+ .setTo("[email protected]", "[email protected]")
+ .setSubject("testPut example 2")
+ .setBody("This is the body of the testPut second email")
+ .build();
+ checkIsSuccess(mAppSearch1.putDocuments(
+ new PutDocumentsRequest.Builder().addGenericDocument(email1).build()));
+ checkIsSuccess(mAppSearch2.putDocuments(
+ new PutDocumentsRequest.Builder().addGenericDocument(email2).build()));
+
+ // Check the presence of the documents
+ assertThat(doGet(mAppSearch1, "uri1")).hasSize(1);
+ assertThat(doGet(mAppSearch2, "uri2")).hasSize(1);
+
+ // Delete the email type in instance 1
+ checkIsSuccess(mAppSearch1.deleteByTypes(ImmutableList.of(AppSearchEmail.SCHEMA_TYPE)));
+
+ // Make sure it's really gone in instance 1
+ AppSearchBatchResult<String, GenericDocument> getResult =
+ mAppSearch1.getDocuments(ImmutableList.of("uri1")).get();
+ assertThat(getResult.isSuccess()).isFalse();
+ assertThat(getResult.getFailures().get("uri1").getResultCode())
+ .isEqualTo(AppSearchResult.RESULT_NOT_FOUND);
+
+ // Make sure it's still in instance 2.
+ getResult = mAppSearch2.getDocuments(ImmutableList.of("uri2")).get();
+ assertThat(getResult.isSuccess()).isTrue();
+ assertThat(getResult.getSuccesses().get("uri2")).isEqualTo(email2);
+ }
+
+ private List<GenericDocument> doGet(AppSearchManager instance, String... uris)
+ throws Exception {
Future<AppSearchBatchResult<String, GenericDocument>> future =
- mAppSearch.getDocuments(Arrays.asList(uris));
+ instance.getDocuments(Arrays.asList(uris));
checkIsSuccess(future);
AppSearchBatchResult<String, GenericDocument> result = future.get();
assertThat(result.getSuccesses()).hasSize(uris.length);
@@ -324,14 +476,19 @@
return list;
}
- private List<GenericDocument> doQuery(String queryExpression, String... schemaTypes)
+ private List<GenericDocument> doQuery(AppSearchManager instance, String queryExpression,
+ String... schemaTypes)
throws Exception {
- AppSearchResult<SearchResults> result = mAppSearch.query(
+ AppSearchResult<SearchResults> result = instance.query(
queryExpression,
SearchSpec.newBuilder()
.setSchemaTypes(schemaTypes)
.setTermMatchType(SearchSpec.TERM_MATCH_TYPE_EXACT_ONLY)
.build()).get();
+ if (!result.isSuccess()) {
+ throw new AssertionFailedError(
+ "AppSearch query not successful: " + result.getErrorMessage());
+ }
SearchResults searchResults = result.getResultValue();
List<GenericDocument> documents = new ArrayList<>();
while (searchResults.hasNext()) {
diff --git a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/impl/AppSearchImplTest.java b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/impl/AppSearchImplTest.java
new file mode 100644
index 0000000..89ae1b9
--- /dev/null
+++ b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/impl/AppSearchImplTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 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 androidx.appsearch.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.IndexingConfig;
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
+import com.google.android.icing.proto.TermMatchType;
+
+import org.junit.Test;
+
+public class AppSearchImplTest {
+ private final AppSearchImpl mAppSearchImpl =
+ AppSearchImpl.getInstance(ApplicationProvider.getApplicationContext());
+ @Test
+ public void testRewriteSchemaTypes() {
+ SchemaProto inSchema = SchemaProto.newBuilder()
+ .addTypes(SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("TestType")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("subject")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ IndexingConfig.newBuilder()
+ .setTokenizerType(
+ IndexingConfig.TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ .build()
+ ).build()
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("link")
+ .setDataType(PropertyConfigProto.DataType.Code.DOCUMENT)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setSchemaType("RefType")
+ .build()
+ ).build()
+ ).build();
+
+ SchemaProto expectedSchema = SchemaProto.newBuilder()
+ .addTypes(SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("com.android.server.appsearch.impl@42:TestType")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("subject")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ IndexingConfig.newBuilder()
+ .setTokenizerType(
+ IndexingConfig.TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ .build()
+ ).build()
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("link")
+ .setDataType(PropertyConfigProto.DataType.Code.DOCUMENT)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setSchemaType("com.android.server.appsearch.impl@42:RefType")
+ .build()
+ ).build()
+ ).build();
+
+ SchemaProto.Builder actualSchema = inSchema.toBuilder();
+ mAppSearchImpl.rewriteSchemaTypes("com.android.server.appsearch.impl@42:", actualSchema);
+
+ assertThat(actualSchema.build()).isEqualTo(expectedSchema);
+ }
+
+ @Test
+ public void testRewriteDocumentProto() {
+ DocumentProto insideDocument = DocumentProto.newBuilder()
+ .setUri("inside-uri")
+ .setSchema("type")
+ .setNamespace("namespace")
+ .build();
+ DocumentProto documentProto = DocumentProto.newBuilder()
+ .setUri("uri")
+ .setSchema("type")
+ .setNamespace("namespace")
+ .addProperties(PropertyProto.newBuilder().addDocumentValues(insideDocument))
+ .build();
+
+ DocumentProto expectedInsideDocument = DocumentProto.newBuilder()
+ .setUri("inside-uri")
+ .setSchema("databaseName/type")
+ .setNamespace("databaseName/namespace")
+ .build();
+ DocumentProto expectedDocumentProto = DocumentProto.newBuilder()
+ .setUri("uri")
+ .setSchema("databaseName/type")
+ .setNamespace("databaseName/namespace")
+ .addProperties(PropertyProto.newBuilder().addDocumentValues(expectedInsideDocument))
+ .build();
+
+ DocumentProto.Builder actualDocument = documentProto.toBuilder();
+ mAppSearchImpl.rewriteDocumentTypes("databaseName/", actualDocument, /*add=*/true);
+ assertThat(actualDocument.build()).isEqualTo(expectedDocumentProto);
+ mAppSearchImpl.rewriteDocumentTypes("databaseName/", actualDocument, /*add=*/false);
+ assertThat(actualDocument.build()).isEqualTo(documentProto);
+ }
+}
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchBatchResult.java b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchBatchResult.java
index 16b51a7..1c52c2f 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchBatchResult.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchBatchResult.java
@@ -18,7 +18,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
import androidx.collection.ArrayMap;
import androidx.core.util.Preconditions;
@@ -30,9 +29,7 @@
*
* @param <KeyType> The type of the keys for {@link #getSuccesses} and {@link #getFailures}.
* @param <ValueType> The type of result objects associated with the keys.
- * @hide
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public final class AppSearchBatchResult<KeyType, ValueType> {
@NonNull private final Map<KeyType, ValueType> mSuccesses;
@NonNull private final Map<KeyType, AppSearchResult<ValueType>> mFailures;
@@ -75,7 +72,6 @@
* Asserts that this {@link AppSearchBatchResult} has no failures.
* @hide
*/
- @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public void checkSuccess() {
if (!isSuccess()) {
throw new IllegalStateException("AppSearchBatchResult has failures: " + this);
@@ -93,6 +89,7 @@
*
* @param <KeyType> The type of keys.
* @param <ValueType> The type of result objects associated with the keys.
+ * @hide
*/
public static final class Builder<KeyType, ValueType> {
private final Map<KeyType, ValueType> mSuccesses = new ArrayMap<>();
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchManager.java b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchManager.java
index b392b18..b3bfb9f 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchManager.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchManager.java
@@ -18,6 +18,8 @@
import static androidx.appsearch.app.AppSearchResult.newFailedResult;
+import android.content.Context;
+
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.appsearch.exceptions.AppSearchException;
@@ -55,12 +57,25 @@
// TODO(b/149787478): Rename this class to AppSearch.
public class AppSearchManager {
- private final AppSearchImpl mAppSearchImpl = new AppSearchImpl();
-
// Never call Executor.shutdownNow(), it will cancel the futures it's returned. And since
// execute() won't return anything, we will hang forever waiting for the execution.
- private final ExecutorService mQueryExecutor = Executors.newCachedThreadPool();
- private final ExecutorService mMutateExecutor = Executors.newFixedThreadPool(1);
+ // AppSearch support multi-thread execute for query but we should use single thread for mutate
+ // requests(put, delete, etc..) to avoid data manipulation conflict.
+ private static final ExecutorService QUERY_EXECUTOR = Executors.newCachedThreadPool();
+ private static final ExecutorService MUTATE_EXECUTOR = Executors.newFixedThreadPool(1);
+
+ private final AppSearchImpl mAppSearchImpl;
+ private final String mInstanceName;
+
+ /**
+ * Gets a instance of {@link AppSearchManager} with the name of it.
+ * <p>Documents, schemas and types are fully isolated between different instances.
+ * @param instanceName The name of this instance.
+ */
+ public AppSearchManager(@NonNull String instanceName, @NonNull Context context) {
+ mInstanceName = instanceName;
+ mAppSearchImpl = AppSearchImpl.getInstance(context);
+ }
/**
* Encapsulates a request to update the schema of an {@link AppSearchManager} database.
@@ -208,13 +223,14 @@
Preconditions.checkNotNull(request);
// Prepare the merged schema for transmission.
- return execute(mMutateExecutor, () -> {
+ return execute(MUTATE_EXECUTOR, () -> {
SchemaProto.Builder schemaProtoBuilder = SchemaProto.newBuilder();
for (AppSearchSchema schema : request.mSchemas) {
schemaProtoBuilder.addTypes(schema.getProto());
}
try {
- mAppSearchImpl.setSchema(schemaProtoBuilder.build(), request.mForceOverride);
+ mAppSearchImpl.setSchema(mInstanceName, schemaProtoBuilder.build(),
+ request.mForceOverride);
return AppSearchResult.newSuccessfulResult(/*value=*/ null);
} catch (Throwable t) {
return throwableToFailedResult(t);
@@ -319,13 +335,13 @@
@NonNull PutDocumentsRequest request) {
// TODO(b/146386470): Transmit these documents as a RemoteStream instead of sending them in
// one big list.
- return execute(mMutateExecutor, () -> {
+ return execute(MUTATE_EXECUTOR, () -> {
AppSearchBatchResult.Builder<String, Void> resultBuilder =
new AppSearchBatchResult.Builder<>();
for (int i = 0; i < request.mDocuments.size(); i++) {
GenericDocument document = request.mDocuments.get(i);
try {
- mAppSearchImpl.putDocument(document.getProto());
+ mAppSearchImpl.putDocument(mInstanceName, document.getProto());
resultBuilder.setSuccess(document.getUri(), /*result=*/ null);
} catch (Throwable t) {
resultBuilder.setResult(document.getUri(), throwableToFailedResult(t));
@@ -356,13 +372,14 @@
@NonNull List<String> uris) {
// TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
// them in one big list.
- return execute(mQueryExecutor, () -> {
+ return execute(QUERY_EXECUTOR, () -> {
AppSearchBatchResult.Builder<String, GenericDocument> resultBuilder =
new AppSearchBatchResult.Builder<>();
for (int i = 0; i < uris.size(); i++) {
String uri = uris.get(i);
try {
- DocumentProto documentProto = mAppSearchImpl.getDocument(namespace, uri);
+ DocumentProto documentProto = mAppSearchImpl.getDocument(mInstanceName,
+ namespace, uri);
if (documentProto == null) {
resultBuilder.setFailure(
uri, AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null);
@@ -460,14 +477,15 @@
@NonNull SearchSpec searchSpec) {
// TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
// them in one big list.
- return execute(mQueryExecutor, () -> {
+ return execute(QUERY_EXECUTOR, () -> {
try {
SearchSpecProto searchSpecProto = searchSpec.getSearchSpecProto();
searchSpecProto = searchSpecProto.toBuilder().setQuery(queryExpression).build();
- SearchResultProto searchResultProto = mAppSearchImpl.query(searchSpecProto,
- searchSpec.getResultSpecProto(), searchSpec.getScoringSpecProto());
- // TODO(sidchhabra): Translate SearchResultProto errors into error codes. This
- // might better be done in AppSearchImpl by throwing an AppSearchException.
+ SearchResultProto searchResultProto = mAppSearchImpl.query(mInstanceName,
+ searchSpecProto, searchSpec.getResultSpecProto(),
+ searchSpec.getScoringSpecProto());
+ // TODO(sidchhabra): Translate SearchResultProto errors into error codes. This might
+ // better be done in AppSearchImpl by throwing an AppSearchException.
if (searchResultProto.getStatus().getCode() != StatusProto.Code.OK) {
return AppSearchResult.newFailedResult(
AppSearchResult.RESULT_INTERNAL_ERROR,
@@ -500,13 +518,13 @@
@NonNull
public ListenableFuture<AppSearchBatchResult<String, Void>> delete(@NonNull String namespace,
@NonNull List<String> uris) {
- return execute(mMutateExecutor, () -> {
+ return execute(MUTATE_EXECUTOR, () -> {
AppSearchBatchResult.Builder<String, Void> resultBuilder =
new AppSearchBatchResult.Builder<>();
for (int i = 0; i < uris.size(); i++) {
String uri = uris.get(i);
try {
- if (!mAppSearchImpl.delete(namespace, uri)) {
+ if (!mAppSearchImpl.delete(mInstanceName, namespace, uri)) {
resultBuilder.setFailure(
uri, AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null);
} else {
@@ -556,13 +574,13 @@
@NonNull
public ListenableFuture<AppSearchBatchResult<String, Void>> deleteByTypes(
@NonNull List<String> schemaTypes) {
- return execute(mMutateExecutor, () -> {
+ return execute(MUTATE_EXECUTOR, () -> {
AppSearchBatchResult.Builder<String, Void> resultBuilder =
new AppSearchBatchResult.Builder<>();
for (int i = 0; i < schemaTypes.size(); i++) {
String schemaType = schemaTypes.get(i);
try {
- if (!mAppSearchImpl.deleteByType(schemaType)) {
+ if (!mAppSearchImpl.deleteByType(mInstanceName, schemaType)) {
resultBuilder.setFailure(
schemaType,
AppSearchResult.RESULT_NOT_FOUND,
@@ -586,7 +604,7 @@
*/
@NonNull
public <ValueType> ListenableFuture<AppSearchResult<ValueType>> deleteAll() {
- return execute(mMutateExecutor, () -> {
+ return execute(MUTATE_EXECUTOR, () -> {
try {
mAppSearchImpl.deleteAll();
return AppSearchResult.newSuccessfulResult(null);
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchResult.java b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchResult.java
index 750542f..d2fd6be 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchResult.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/app/AppSearchResult.java
@@ -19,7 +19,6 @@
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
import androidx.core.util.ObjectsCompat;
import java.lang.annotation.Retention;
@@ -29,11 +28,12 @@
* Information about the success or failure of an AppSearch call.
*
* @param <ValueType> The type of result object for successful calls.
- * @hide
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public final class AppSearchResult<ValueType> {
- /** Result codes from {@link AppSearchManager} methods. */
+ /**
+ * Result codes from {@link AppSearchManager} methods.
+ * @hide
+ */
@IntDef(value = {
RESULT_OK,
RESULT_UNKNOWN_ERROR,
@@ -111,9 +111,10 @@
*
* <p>If {@link #isSuccess} is {@code false}, the result value is always {@code null}. The value
* may be {@code null} even if {@link #isSuccess} is {@code true}. See the documentation of the
- * particular {@link AppSearchManager} call producing this {@link AppSearchResult} for what is
+ * particular {@code AppSearchManager} call producing this {@link AppSearchResult} for what is
* returned by {@link #getResultValue}.
*/
+ // TODO(b/157082794): Linkify AppSearchManager once that API is public
@Nullable
public ValueType getResultValue() {
return mResultValue;
@@ -124,9 +125,10 @@
*
* <p>If {@link #isSuccess} is {@code true}, the error message is always {@code null}. The error
* message may be {@code null} even if {@link #isSuccess} is {@code false}. See the
- * documentation of the particular {@link AppSearchManager} call producing this
+ * documentation of the particular {@code AppSearchManager} call producing this
* {@link AppSearchResult} for what is returned by {@link #getErrorMessage}.
*/
+ // TODO(b/157082794): Linkify AppSearchManager once that API is public
@Nullable
public String getErrorMessage() {
return mErrorMessage;
@@ -136,7 +138,6 @@
* Asserts that this {@link AppSearchResult} is successful.
* @hide
*/
- @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public void checkSuccess() {
if (!isSuccess()) {
throw new IllegalStateException("AppSearchResult is a failure: " + this);
@@ -171,14 +172,20 @@
return "[FAILURE(" + mResultCode + ")]: " + mErrorMessage;
}
- /** Creates a new successful {@link AppSearchResult}. */
+ /**
+ * Creates a new successful {@link AppSearchResult}.
+ * @hide
+ */
@NonNull
public static <ValueType> AppSearchResult<ValueType> newSuccessfulResult(
@Nullable ValueType value) {
return new AppSearchResult<>(RESULT_OK, value, /*errorMessage=*/ null);
}
- /** Creates a new failed {@link AppSearchResult}. */
+ /**
+ * Creates a new failed {@link AppSearchResult}.
+ * @hide
+ */
@NonNull
public static <ValueType> AppSearchResult<ValueType> newFailedResult(
@ResultCode int resultCode, @Nullable String errorMessage) {
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/app/GenericDocument.java b/appsearch/appsearch/src/main/java/androidx/appsearch/app/GenericDocument.java
index a70087d..e930d17 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/app/GenericDocument.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/app/GenericDocument.java
@@ -16,12 +16,12 @@
package androidx.appsearch.app;
+import android.annotation.SuppressLint;
import android.util.Log;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
import androidx.appsearch.exceptions.AppSearchException;
import androidx.collection.ArrayMap;
import androidx.core.util.Preconditions;
@@ -33,15 +33,12 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
-import java.util.Objects;
/**
* Represents a document unit.
*
* <p>Documents are constructed via {@link GenericDocument.Builder}.
- * @hide
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class GenericDocument {
private static final String TAG = "GenericDocument";
@@ -80,6 +77,8 @@
*/
GenericDocument(@NonNull DocumentProto proto,
@NonNull Map<String, Object> propertiesMap) {
+ Preconditions.checkNotNull(proto);
+ Preconditions.checkNotNull(propertiesMap);
mProto = proto;
mProperties = propertiesMap;
}
@@ -206,6 +205,7 @@
*/
@Nullable
public String getPropertyString(@NonNull String key) {
+ Preconditions.checkNotNull(key);
String[] propertyArray = getPropertyStringArray(key);
if (propertyArray == null || propertyArray.length == 0) {
return null;
@@ -222,6 +222,7 @@
* there is no such key or the value is of a different type.
*/
public long getPropertyLong(@NonNull String key) {
+ Preconditions.checkNotNull(key);
long[] propertyArray = getPropertyLongArray(key);
if (propertyArray == null || propertyArray.length == 0) {
return 0;
@@ -238,8 +239,8 @@
* if there is no such key or the value is of a different type.
*/
public double getPropertyDouble(@NonNull String key) {
+ Preconditions.checkNotNull(key);
double[] propertyArray = getPropertyDoubleArray(key);
- // TODO(tytytyww): Add support double array to ArraysUtils.isEmpty().
if (propertyArray == null || propertyArray.length == 0) {
return 0.0;
}
@@ -255,6 +256,7 @@
* {@code false} if there is no such key or the value is of a different type.
*/
public boolean getPropertyBoolean(@NonNull String key) {
+ Preconditions.checkNotNull(key);
boolean[] propertyArray = getPropertyBooleanArray(key);
if (propertyArray == null || propertyArray.length == 0) {
return false;
@@ -272,6 +274,7 @@
*/
@Nullable
public byte[] getPropertyBytes(@NonNull String key) {
+ Preconditions.checkNotNull(key);
byte[][] propertyArray = getPropertyBytesArray(key);
if (propertyArray == null || propertyArray.length == 0) {
return null;
@@ -289,6 +292,7 @@
*/
@Nullable
public GenericDocument getPropertyDocument(@NonNull String key) {
+ Preconditions.checkNotNull(key);
GenericDocument[] propertyArray = getPropertyDocumentArray(key);
if (propertyArray == null || propertyArray.length == 0) {
return null;
@@ -317,6 +321,7 @@
*/
@Nullable
public String[] getPropertyStringArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, String[].class);
}
@@ -329,6 +334,7 @@
*/
@Nullable
public long[] getPropertyLongArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, long[].class);
}
@@ -341,6 +347,7 @@
*/
@Nullable
public double[] getPropertyDoubleArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, double[].class);
}
@@ -353,6 +360,7 @@
*/
@Nullable
public boolean[] getPropertyBooleanArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, boolean[].class);
}
@@ -363,8 +371,10 @@
* @return The {@code byte[][]} associated with the given key, or {@code null} if no value
* is set or the value is of a different type.
*/
+ @SuppressLint("ArrayReturn")
@Nullable
public byte[][] getPropertyBytesArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, byte[][].class);
}
@@ -372,11 +382,13 @@
* Retrieves a repeated {@link GenericDocument} property by key.
*
* @param key The key to look for.
- * @return The {@link GenericDocument[]} associated with the given key, or {@code null} if no
+ * @return The {@link GenericDocument}[] associated with the given key, or {@code null} if no
* value is set or the value is of a different type.
*/
+ @SuppressLint("ArrayReturn")
@Nullable
public GenericDocument[] getPropertyDocumentArray(@NonNull String key) {
+ Preconditions.checkNotNull(key);
return getAndCastPropertyArray(key, GenericDocument[].class);
}
@@ -410,8 +422,9 @@
* would be an empty or partially populated result.
*
* @param dataClass a non-inner class annotated with
- * {@link androidx.appsearch.annotation.AppSearchDocument}.
+ * {@code androidx.appsearch.annotation.AppSearchDocument}.
*/
+ //TODO(b/157082794): Linkify to AppSearchDocument once that API is public
@NonNull
public <T> T toDataClass(@NonNull Class<T> dataClass) throws AppSearchException {
Preconditions.checkNotNull(dataClass);
@@ -457,19 +470,23 @@
private final Map<String, Object> mProperties = new ArrayMap<>();
private final DocumentProto.Builder mProtoBuilder = DocumentProto.newBuilder();
private final BuilderType mBuilderTypeInstance;
+ private boolean mBuilt = false;
/**
* Create a new {@link GenericDocument.Builder}.
*
* @param uri The uri of {@link GenericDocument}.
* @param schemaType The schema type of the {@link GenericDocument}. The passed-in
- * {@code schemaType} must be defined using {@link AppSearchManager#setSchema} prior
+ * {@code schemaType} must be defined using {@code AppSearchManager#setSchema} prior
* to inserting a document of this {@code schemaType} into the AppSearch index using
- * {@link AppSearchManager#putDocuments}. Otherwise, the document will be
- * rejected by {@link AppSearchManager#putDocuments}.
+ * {@code AppSearchManager#putDocuments}. Otherwise, the document will be
+ * rejected by {@code AppSearchManager#putDocuments}.
*/
+ //TODO(b/157082794) Linkify AppSearchManager once that API is public.
@SuppressWarnings("unchecked")
public Builder(@NonNull String uri, @NonNull String schemaType) {
+ Preconditions.checkNotNull(uri);
+ Preconditions.checkNotNull(schemaType);
mBuilderTypeInstance = (BuilderType) this;
mProtoBuilder.setUri(uri).setSchema(schemaType);
mProtoBuilder.setNamespace(DEFAULT_NAMESPACE);
@@ -498,6 +515,7 @@
*/
@NonNull
public BuilderType setScore(@IntRange(from = 0, to = Integer.MAX_VALUE) int score) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
if (score < 0) {
throw new IllegalArgumentException("Document score cannot be negative.");
}
@@ -511,6 +529,7 @@
*/
@NonNull
public BuilderType setCreationTimestampMillis(long creationTimestampMillis) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
mProtoBuilder.setCreationTimestampMs(creationTimestampMillis);
return mBuilderTypeInstance;
}
@@ -526,6 +545,7 @@
*/
@NonNull
public BuilderType setTtlMillis(long ttlMillis) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
if (ttlMillis < 0) {
throw new IllegalArgumentException("Document ttlMillis cannot be negative.");
}
@@ -542,6 +562,9 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull String... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
@@ -555,6 +578,9 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull boolean... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
@@ -568,6 +594,9 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull long... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
@@ -581,6 +610,9 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull double... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
@@ -593,6 +625,9 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull byte[]... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
@@ -606,14 +641,15 @@
*/
@NonNull
public BuilderType setProperty(@NonNull String key, @NonNull GenericDocument... values) {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
+ Preconditions.checkNotNull(key);
+ Preconditions.checkNotNull(values);
putInPropertyMap(key, values);
return mBuilderTypeInstance;
}
private void putInPropertyMap(@NonNull String key, @NonNull String[] values)
throws IllegalArgumentException {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
validateRepeatedPropertyLength(key, values.length);
for (int i = 0; i < values.length; i++) {
if (values[i] == null) {
@@ -628,36 +664,26 @@
}
private void putInPropertyMap(@NonNull String key, @NonNull boolean[] values) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
validateRepeatedPropertyLength(key, values.length);
mProperties.put(key, values);
}
private void putInPropertyMap(@NonNull String key, @NonNull double[] values) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
validateRepeatedPropertyLength(key, values.length);
mProperties.put(key, values);
}
private void putInPropertyMap(@NonNull String key, @NonNull long[] values) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
validateRepeatedPropertyLength(key, values.length);
mProperties.put(key, values);
}
private void putInPropertyMap(@NonNull String key, @NonNull byte[][] values) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
validateRepeatedPropertyLength(key, values.length);
mProperties.put(key, values);
}
private void putInPropertyMap(@NonNull String key, @NonNull GenericDocument[] values) {
- Objects.requireNonNull(key);
- Objects.requireNonNull(values);
for (int i = 0; i < values.length; i++) {
if (values[i] == null) {
throw new IllegalArgumentException("The document at " + i + " is null.");
@@ -681,6 +707,7 @@
/** Builds the {@link GenericDocument} object. */
@NonNull
public GenericDocument build() {
+ Preconditions.checkState(!mBuilt, "Builder has already been used");
// Build proto by sorting the keys in mProperties to exclude the influence of
// order. Therefore documents will generate same proto as long as the contents are
// same. Note that the order of repeated fields is still preserved.
@@ -721,6 +748,7 @@
}
mProtoBuilder.addProperties(propertyProto);
}
+ mBuilt = true;
return new GenericDocument(mProtoBuilder.build(), mProperties);
}
}
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/exceptions/AppSearchException.java b/appsearch/appsearch/src/main/java/androidx/appsearch/exceptions/AppSearchException.java
index 29c4669..865c3ca 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/exceptions/AppSearchException.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/exceptions/AppSearchException.java
@@ -18,30 +18,33 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
import androidx.appsearch.app.AppSearchResult;
/**
- * An exception thrown by {@link androidx.appsearch.app.AppSearchManager} or a subcomponent.
+ * An exception thrown by {@code androidx.appsearch.app.AppSearchManager} or a subcomponent.
*
* <p>These exceptions can be converted into a failed {@link AppSearchResult}
* for propagating to the client.
- * @hide
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+//TODO(b/157082794): Linkify to AppSearchManager once that API is public
public class AppSearchException extends Exception {
private final @AppSearchResult.ResultCode int mResultCode;
- /** Initializes an {@link AppSearchException} with no message. */
+ /**
+ * Initializes an {@link AppSearchException} with no message.
+ * @hide
+ */
public AppSearchException(@AppSearchResult.ResultCode int resultCode) {
this(resultCode, /*message=*/ null);
}
+ /** @hide */
public AppSearchException(
@AppSearchResult.ResultCode int resultCode, @Nullable String message) {
this(resultCode, message, /*cause=*/ null);
}
+ /** @hide */
public AppSearchException(
@AppSearchResult.ResultCode int resultCode,
@Nullable String message,
diff --git a/appsearch/appsearch/src/main/java/androidx/appsearch/impl/AppSearchImpl.java b/appsearch/appsearch/src/main/java/androidx/appsearch/impl/AppSearchImpl.java
index 0985be7..b985fa3 100644
--- a/appsearch/appsearch/src/main/java/androidx/appsearch/impl/AppSearchImpl.java
+++ b/appsearch/appsearch/src/main/java/androidx/appsearch/impl/AppSearchImpl.java
@@ -16,65 +16,134 @@
package androidx.appsearch.impl;
+import android.content.Context;
+import android.content.SharedPreferences;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
+import androidx.annotation.VisibleForTesting;
import androidx.collection.ArraySet;
import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.PropertyProto;
import com.google.android.icing.proto.ResultSpecProto;
import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
import com.google.android.icing.proto.ScoringSpecProto;
import com.google.android.icing.proto.SearchResultProto;
import com.google.android.icing.proto.SearchSpecProto;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
/**
* Manages interaction with {@link FakeIcing} and other components to implement AppSearch
* functionality.
+ *
+ * <p>The singleton instance of {@link AppSearchImpl} supports all instances of
+ * {@link androidx.appsearch.app.AppSearchManager} with different database name. All logically
+ * isolated schemas and documents will be physically saved together in IcingSearchEngine.
+ * The way to isolated those schemas and documents for different database:
+ * <ul>
+ * <li>Rewrite SchemaType in SchemaProto by adding database name prefix and save into
+ * SchemaTypes set in {@link #setSchema(String, SchemaProto, boolean)}.
+ * <li>Rewrite namespace and SchemaType in DocumentProto by adding database name prefix and
+ * save to namespaces set in {@link #putDocument(String, DocumentProto)}.
+ * <li>Remove database name prefix when retrieve documents in
+ * {@link #getDocument(String, String, String)}, and
+ * {@link #query(String, SearchSpecProto, ResultSpecProto, ScoringSpecProto)}.
+ * <li>Rewrite filters in {@link SearchSpecProto} to have all namespaces and schema types of
+ * the queried database when user using empty filters in
+ * {@link #query(String, SearchSpecProto, ResultSpecProto, ScoringSpecProto)}.
+ * </ul>
* @hide
*/
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public final class AppSearchImpl {
+ private static volatile AppSearchImpl sInstance;
+ private static final String SHARED_PREFERENCES_NAME = "androidx.appsearch";
+ private static final String NAMESPACE_SET_NAME = "namespace-set";
+ private static final String SCHEMA_TYPE_SET_NAME = "schema-type-set";
+ // TODO(b/158350212) Remove SharedPreferences once getAllNamespace() is ready in Icing lib.
+ // SharedPreferences is discouraged to be used in go/sharedpreferences.
+ private final SharedPreferences mSharedPreferences;
private final FakeIcing mFakeIcing = new FakeIcing();
+ private AppSearchImpl(@NonNull Context context) {
+ mSharedPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME,
+ Context.MODE_PRIVATE);
+ }
+
+ /** Gets the singleton instance of {@link AppSearchImpl} */
+ @NonNull
+ public static AppSearchImpl getInstance(@NonNull Context context) {
+ if (sInstance == null) {
+ synchronized (AppSearchImpl.class) {
+ if (sInstance == null) {
+ sInstance = new AppSearchImpl(context);
+ }
+ }
+ }
+ return sInstance;
+ }
/**
* Updates the AppSearch schema for this app.
*
+ * @param databaseName The name of the database where this schema lives.
* @param origSchema The schema to set for this app.
* @param forceOverride Whether to force-apply the schema even if it is incompatible. Documents
* which do not comply with the new schema will be deleted.
*/
- public void setSchema(@NonNull SchemaProto origSchema, boolean forceOverride) {
- // TODO(b/145635424): Save in schema type map
+ public void setSchema(@NonNull String databaseName, @NonNull SchemaProto origSchema,
+ boolean forceOverride) {
+ SchemaProto.Builder schemaBuilder = origSchema.toBuilder();
+ rewriteSchemaTypes(getDatabasePrefix(databaseName), schemaBuilder);
+ for (SchemaTypeConfigProto typeConfig : origSchema.getTypesList()) {
+ addToSharedSet(databaseName, SCHEMA_TYPE_SET_NAME, typeConfig.getSchemaType());
+ }
// TODO(b/145635424): Apply the schema to Icing and report results
}
/**
* Adds a document to the AppSearch index.
*
+ * @param databaseName The databaseName this document resides in.
* @param document The document to index.
*/
- public void putDocument(@NonNull DocumentProto document) {
- mFakeIcing.put(document);
+ public void putDocument(@NonNull String databaseName, @NonNull DocumentProto document) {
+ addToSharedSet(databaseName, NAMESPACE_SET_NAME, document.getNamespace());
+ DocumentProto.Builder documentBuilder = document.toBuilder();
+ rewriteDocumentTypes(getDatabasePrefix(databaseName), documentBuilder, /*add=*/ true);
+ mFakeIcing.put(documentBuilder.build());
}
/**
* Retrieves a document from the AppSearch index by URI.
*
- * @param namespace The namespace this Document resides in.
+ * @param databaseName The databaseName this document resides in.
+ * @param namespace The namespace this document resides in.
* @param uri The URI of the document to get.
* @return The Document contents, or {@code null} if no such URI exists in the system.
*/
@Nullable
- public DocumentProto getDocument(@NonNull String namespace, @NonNull String uri) {
- return mFakeIcing.get(namespace, uri);
+ public DocumentProto getDocument(@NonNull String databaseName, @NonNull String namespace,
+ @NonNull String uri) {
+ DocumentProto documentProto = mFakeIcing.get(
+ getDatabasePrefix(databaseName) + namespace, uri);
+ if (documentProto == null) {
+ return null;
+ }
+ DocumentProto.Builder documentBuilder = documentProto.toBuilder();
+ rewriteDocumentTypes(getDatabasePrefix(databaseName), documentBuilder, /*add=*/ false);
+ return documentBuilder.build();
}
-
/**
* Executes a query against the AppSearch index and returns results.
*
+ * @param databaseName The databaseName this query for.
* @param searchSpec Defines what and how to search
* @param resultSpec Defines what results to show
* @param scoringSpec Defines how to order results
@@ -83,6 +152,7 @@
*/
@NonNull
public SearchResultProto query(
+ @NonNull String databaseName,
@NonNull SearchSpecProto searchSpec,
@NonNull ResultSpecProto resultSpec,
@NonNull ScoringSpecProto scoringSpec) {
@@ -90,43 +160,203 @@
if (searchResults.getResultsCount() == 0) {
return searchResults;
}
- Set<String> qualifiedSearchFilters = null;
+ Set<String> qualifiedTypeSearchFilters;
+ Set<String> qualifiedNamespaceSearchFilters;
if (searchSpec.getSchemaTypeFiltersCount() > 0) {
- qualifiedSearchFilters = new ArraySet<>(searchSpec.getSchemaTypeFiltersList());
+ qualifiedTypeSearchFilters = new ArraySet<>(searchSpec.getSchemaTypeFiltersCount());
+ for (String schema : searchSpec.getSchemaTypeFiltersList()) {
+ String qualifiedSchema = getDatabasePrefix(databaseName) + schema;
+ qualifiedTypeSearchFilters.add(qualifiedSchema);
+ }
+ } else {
+ Set<String> schemaTypeSet = getSharedSet(databaseName, SCHEMA_TYPE_SET_NAME);
+ qualifiedTypeSearchFilters = new ArraySet<>(schemaTypeSet.size());
+ for (String schemaType : schemaTypeSet) {
+ qualifiedTypeSearchFilters.add(getDatabasePrefix(databaseName) + schemaType);
+ }
}
+ if (searchSpec.getNamespaceFiltersCount() > 0) {
+ qualifiedNamespaceSearchFilters = new ArraySet<>(searchSpec.getNamespaceFiltersCount());
+ for (String namespace : searchSpec.getNamespaceFiltersList()) {
+ String qualifiedNamespace = getDatabasePrefix(databaseName) + namespace;
+ qualifiedNamespaceSearchFilters.add(qualifiedNamespace);
+ }
+ } else {
+ Set<String> namespaceSet = getSharedSet(databaseName, NAMESPACE_SET_NAME);
+ qualifiedNamespaceSearchFilters = new ArraySet<>(namespaceSet.size());
+ for (String namespace : namespaceSet) {
+ qualifiedNamespaceSearchFilters.add(getDatabasePrefix(databaseName) + namespace);
+ }
+ }
+
SearchResultProto.Builder searchResultsBuilder = searchResults.toBuilder();
for (int i = 0; i < searchResultsBuilder.getResultsCount(); i++) {
if (searchResults.getResults(i).hasDocument()) {
+ SearchResultProto.ResultProto.Builder resultBuilder =
+ searchResultsBuilder.getResults(i).toBuilder();
+ DocumentProto.Builder documentBuilder = resultBuilder.getDocument().toBuilder();
// TODO(b/145631811): Since FakeIcing doesn't currently handle type names, we
// perform a post-filter to make sure we don't return documents we shouldn't. This
// should be removed once the real Icing Lib is implemented.
- if (qualifiedSearchFilters != null
- && !qualifiedSearchFilters.contains(
- searchResultsBuilder.getResults(i).getDocument().getSchema())) {
+ if (isNotInFilter(qualifiedTypeSearchFilters, documentBuilder.getSchema())
+ || isNotInFilter(qualifiedNamespaceSearchFilters,
+ documentBuilder.getNamespace())) {
searchResultsBuilder.removeResults(i);
i--;
+ continue;
}
+ rewriteDocumentTypes(
+ getDatabasePrefix(databaseName), documentBuilder, /*add=*/false);
+ resultBuilder.setDocument(documentBuilder);
+ searchResultsBuilder.setResults(i, resultBuilder);
}
}
return searchResultsBuilder.build();
}
/** Deletes the given document by URI */
- public boolean delete(@NonNull String namespace, @NonNull String uri) {
- DocumentProto document = mFakeIcing.get(namespace, uri);
+ public boolean delete(@NonNull String databaseName, @NonNull String namespace,
+ @NonNull String uri) {
+ String qualifiedNamespace = getDatabasePrefix(databaseName) + namespace;
+ DocumentProto document = mFakeIcing.get(qualifiedNamespace, uri);
if (document == null) {
return false;
}
- return mFakeIcing.delete(namespace, uri);
+ return mFakeIcing.delete(qualifiedNamespace, uri);
}
/** Deletes all documents having the given {@code schemaType}. */
- public boolean deleteByType(@NonNull String schemaType) {
- return mFakeIcing.deleteByType(schemaType);
+ public boolean deleteByType(@NonNull String databaseName, @NonNull String schemaType) {
+ String qualifiedType = getDatabasePrefix(databaseName) + schemaType;
+ return mFakeIcing.deleteByType(qualifiedType);
}
/** Deletes all documents owned by the calling app. */
public void deleteAll() {
mFakeIcing.deleteAll();
}
+
+ /**
+ * Rewrites all types mentioned in the given {@code schemaBuilder} to prepend
+ * {@code typePrefix}.
+ *
+ * @param typePrefix The prefix to add
+ * @param schemaBuilder The schema to mutate
+ */
+ @VisibleForTesting
+ void rewriteSchemaTypes(
+ @NonNull String typePrefix, @NonNull SchemaProto.Builder schemaBuilder) {
+ for (int typeIdx = 0; typeIdx < schemaBuilder.getTypesCount(); typeIdx++) {
+ SchemaTypeConfigProto.Builder typeConfigBuilder =
+ schemaBuilder.getTypes(typeIdx).toBuilder();
+
+ // Rewrite SchemaProto.types.schema_type
+ String newSchemaType = typePrefix + typeConfigBuilder.getSchemaType();
+ typeConfigBuilder.setSchemaType(newSchemaType);
+
+ // Rewrite SchemaProto.types.properties.schema_type
+ for (int propertyIdx = 0;
+ propertyIdx < typeConfigBuilder.getPropertiesCount();
+ propertyIdx++) {
+ PropertyConfigProto.Builder propertyConfigBuilder =
+ typeConfigBuilder.getProperties(propertyIdx).toBuilder();
+ if (!propertyConfigBuilder.getSchemaType().isEmpty()) {
+ String newPropertySchemaType =
+ typePrefix + propertyConfigBuilder.getSchemaType();
+ propertyConfigBuilder.setSchemaType(newPropertySchemaType);
+ typeConfigBuilder.setProperties(propertyIdx, propertyConfigBuilder);
+ }
+ }
+
+ schemaBuilder.setTypes(typeIdx, typeConfigBuilder);
+ }
+ }
+
+ /**
+ * Rewrites all types mentioned anywhere in {@code documentBuilder} to prepend or remove
+ * {@code typePrefix}.
+ *
+ * @param typePrefix The prefix to add or remove
+ * @param documentBuilder The document to mutate
+ * @param add Whether to add typePrefix to the types. If {@code false}, typePrefix will be
+ * removed from the types.
+ * @throws IllegalArgumentException If {@code add=false} and the document has a type that
+ * doesn't start with {@code typePrefix}.
+ */
+ @VisibleForTesting
+ void rewriteDocumentTypes(
+ @NonNull String typePrefix,
+ @NonNull DocumentProto.Builder documentBuilder,
+ boolean add) {
+ // Rewrite the type name to include/remove the app's prefix
+ String newSchema;
+ if (add) {
+ newSchema = typePrefix + documentBuilder.getSchema();
+ } else {
+ newSchema = removePrefix(typePrefix, documentBuilder.getSchema());
+ }
+ documentBuilder.setSchema(newSchema);
+
+ if (add) {
+ documentBuilder.setNamespace(typePrefix + documentBuilder.getNamespace());
+ } else if (!documentBuilder.getNamespace().startsWith(typePrefix)) {
+ throw new IllegalStateException(
+ "Unexpected namespace \"" + documentBuilder.getNamespace()
+ + "\" (expected \"" + typePrefix + "\")");
+ } else {
+ documentBuilder.setNamespace(removePrefix(typePrefix, documentBuilder.getNamespace()));
+ }
+
+ // Recurse into derived documents
+ for (int propertyIdx = 0;
+ propertyIdx < documentBuilder.getPropertiesCount();
+ propertyIdx++) {
+ int documentCount = documentBuilder.getProperties(propertyIdx).getDocumentValuesCount();
+ if (documentCount > 0) {
+ PropertyProto.Builder propertyBuilder =
+ documentBuilder.getProperties(propertyIdx).toBuilder();
+ for (int documentIdx = 0; documentIdx < documentCount; documentIdx++) {
+ DocumentProto.Builder derivedDocumentBuilder =
+ propertyBuilder.getDocumentValues(documentIdx).toBuilder();
+ rewriteDocumentTypes(typePrefix, derivedDocumentBuilder, add);
+ propertyBuilder.setDocumentValues(documentIdx, derivedDocumentBuilder);
+ }
+ documentBuilder.setProperties(propertyIdx, propertyBuilder);
+ }
+ }
+ }
+
+ @NonNull
+ private String getDatabasePrefix(String databaseName) {
+ return databaseName + "/";
+ }
+
+ @NonNull
+ private static String removePrefix(@NonNull String prefix, @NonNull String input) {
+ if (!input.startsWith(prefix)) {
+ throw new IllegalArgumentException(
+ "Input \"" + input + "\" does not start with \"" + prefix + "\"");
+ }
+ return input.substring(prefix.length());
+ }
+
+ private static boolean isNotInFilter(Set<String> filter, String candidate) {
+ return filter != null && !filter.contains(candidate);
+ }
+
+ private void addToSharedSet(String databaseName, String setName, String value) {
+ String fullSetName = getDatabasePrefix(databaseName) + setName;
+ Set<String> sharedSet = mSharedPreferences.getStringSet(fullSetName,
+ new HashSet<>());
+ if (!sharedSet.contains(value)) {
+ HashSet<String> newSet = new HashSet<>(sharedSet);
+ newSet.add(value);
+ mSharedPreferences.edit().putStringSet(fullSetName, newSet).commit();
+ }
+ }
+
+ private Set<String> getSharedSet(String databaseName, String setType) {
+ return mSharedPreferences.getStringSet(getDatabasePrefix(databaseName) + setType,
+ Collections.emptySet());
+ }
}
diff --git a/benchmark/benchmark/src/androidTest/AndroidManifest.xml b/benchmark/benchmark/src/androidTest/AndroidManifest.xml
index 82470db..b20d8c1 100644
--- a/benchmark/benchmark/src/androidTest/AndroidManifest.xml
+++ b/benchmark/benchmark/src/androidTest/AndroidManifest.xml
@@ -23,5 +23,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/benchmark/common/api/1.1.0-alpha01.txt b/benchmark/common/api/1.1.0-alpha01.txt
index 291b7b8..4f7ae83 100644
--- a/benchmark/common/api/1.1.0-alpha01.txt
+++ b/benchmark/common/api/1.1.0-alpha01.txt
@@ -8,7 +8,7 @@
method public boolean keepRunning();
method public void pauseTiming();
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
}
public static final class BenchmarkState.Companion {
diff --git a/benchmark/common/api/1.1.0-alpha02.ignore b/benchmark/common/api/1.1.0-alpha02.ignore
new file mode 100644
index 0000000..44a73f7
--- /dev/null
+++ b/benchmark/common/api/1.1.0-alpha02.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.benchmark.TraceCompatKt:
+ Removed class androidx.benchmark.TraceCompatKt
diff --git a/benchmark/common/api/1.1.0-alpha02.txt b/benchmark/common/api/1.1.0-alpha02.txt
new file mode 100644
index 0000000..8e0fdce
--- /dev/null
+++ b/benchmark/common/api/1.1.0-alpha02.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.benchmark {
+
+ public final class ArgumentsKt {
+ }
+
+ public final class BenchmarkState {
+ method public boolean keepRunning();
+ method public void pauseTiming();
+ method public void resumeTiming();
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
+ }
+
+ public static final class BenchmarkState.Companion {
+ }
+
+ public final class MetricNameUtilsKt {
+ }
+
+}
+
diff --git a/benchmark/common/api/current.txt b/benchmark/common/api/current.txt
index 291b7b8..8e0fdce 100644
--- a/benchmark/common/api/current.txt
+++ b/benchmark/common/api/current.txt
@@ -8,15 +8,12 @@
method public boolean keepRunning();
method public void pauseTiming();
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
}
public static final class BenchmarkState.Companion {
}
- public final class IdeOutputKt {
- }
-
public final class MetricNameUtilsKt {
}
diff --git a/benchmark/common/api/public_plus_experimental_1.1.0-alpha01.txt b/benchmark/common/api/public_plus_experimental_1.1.0-alpha01.txt
index 4aaaeed..80824a4 100644
--- a/benchmark/common/api/public_plus_experimental_1.1.0-alpha01.txt
+++ b/benchmark/common/api/public_plus_experimental_1.1.0-alpha01.txt
@@ -11,7 +11,7 @@
method public void pauseTiming();
method @androidx.benchmark.BenchmarkState.Companion.ExperimentalExternalReport public static void reportData(String className, String testName, @IntRange(from=0) long totalRunTimeNs, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=0) long thermalThrottleSleepSeconds, @IntRange(from=1) int repeatIterations);
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
}
public static final class BenchmarkState.Companion {
diff --git a/benchmark/common/api/public_plus_experimental_1.1.0-alpha02.txt b/benchmark/common/api/public_plus_experimental_1.1.0-alpha02.txt
new file mode 100644
index 0000000..fc72f89
--- /dev/null
+++ b/benchmark/common/api/public_plus_experimental_1.1.0-alpha02.txt
@@ -0,0 +1,28 @@
+// Signature format: 3.0
+package androidx.benchmark {
+
+ public final class ArgumentsKt {
+ }
+
+ public final class BenchmarkState {
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public BenchmarkState();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public long getMinTimeNanos();
+ method public boolean keepRunning();
+ method public void pauseTiming();
+ method @androidx.benchmark.BenchmarkState.Companion.ExperimentalExternalReport public static void reportData(String className, String testName, @IntRange(from=0) long totalRunTimeNs, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=0) long thermalThrottleSleepSeconds, @IntRange(from=1) int repeatIterations);
+ method public void resumeTiming();
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
+ }
+
+ public static final class BenchmarkState.Companion {
+ method @androidx.benchmark.BenchmarkState.Companion.ExperimentalExternalReport public void reportData(String className, String testName, @IntRange(from=0) long totalRunTimeNs, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=0) long thermalThrottleSleepSeconds, @IntRange(from=1) int repeatIterations);
+ }
+
+ @kotlin.Experimental @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public static @interface BenchmarkState.Companion.ExperimentalExternalReport {
+ }
+
+ public final class MetricNameUtilsKt {
+ }
+
+}
+
diff --git a/benchmark/common/api/public_plus_experimental_current.txt b/benchmark/common/api/public_plus_experimental_current.txt
index 4aaaeed..fc72f89 100644
--- a/benchmark/common/api/public_plus_experimental_current.txt
+++ b/benchmark/common/api/public_plus_experimental_current.txt
@@ -11,7 +11,7 @@
method public void pauseTiming();
method @androidx.benchmark.BenchmarkState.Companion.ExperimentalExternalReport public static void reportData(String className, String testName, @IntRange(from=0) long totalRunTimeNs, java.util.List<java.lang.Long> dataNs, @IntRange(from=0) int warmupIterations, @IntRange(from=0) long thermalThrottleSleepSeconds, @IntRange(from=1) int repeatIterations);
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
}
public static final class BenchmarkState.Companion {
@@ -21,9 +21,6 @@
@kotlin.Experimental @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public static @interface BenchmarkState.Companion.ExperimentalExternalReport {
}
- public final class IdeOutputKt {
- }
-
public final class MetricNameUtilsKt {
}
diff --git a/benchmark/common/api/res-1.1.0-alpha02.txt b/benchmark/common/api/res-1.1.0-alpha02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/benchmark/common/api/res-1.1.0-alpha02.txt
diff --git a/benchmark/common/api/restricted_1.1.0-alpha01.txt b/benchmark/common/api/restricted_1.1.0-alpha01.txt
index a91c3dc..c39c72d3 100644
--- a/benchmark/common/api/restricted_1.1.0-alpha01.txt
+++ b/benchmark/common/api/restricted_1.1.0-alpha01.txt
@@ -9,7 +9,7 @@
method @kotlin.PublishedApi internal boolean keepRunningInternal();
method public void pauseTiming();
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
field @kotlin.PublishedApi internal int iterationsRemaining;
}
diff --git a/benchmark/common/api/restricted_1.1.0-alpha02.ignore b/benchmark/common/api/restricted_1.1.0-alpha02.ignore
new file mode 100644
index 0000000..44a73f7
--- /dev/null
+++ b/benchmark/common/api/restricted_1.1.0-alpha02.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.benchmark.TraceCompatKt:
+ Removed class androidx.benchmark.TraceCompatKt
diff --git a/benchmark/common/api/restricted_1.1.0-alpha02.txt b/benchmark/common/api/restricted_1.1.0-alpha02.txt
new file mode 100644
index 0000000..5c18529
--- /dev/null
+++ b/benchmark/common/api/restricted_1.1.0-alpha02.txt
@@ -0,0 +1,23 @@
+// Signature format: 3.0
+package androidx.benchmark {
+
+ public final class ArgumentsKt {
+ }
+
+ public final class BenchmarkState {
+ method public boolean keepRunning();
+ method @kotlin.PublishedApi internal boolean keepRunningInternal();
+ method public void pauseTiming();
+ method public void resumeTiming();
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
+ field @kotlin.PublishedApi internal int iterationsRemaining;
+ }
+
+ public static final class BenchmarkState.Companion {
+ }
+
+ public final class MetricNameUtilsKt {
+ }
+
+}
+
diff --git a/benchmark/common/api/restricted_current.txt b/benchmark/common/api/restricted_current.txt
index a91c3dc..5c18529 100644
--- a/benchmark/common/api/restricted_current.txt
+++ b/benchmark/common/api/restricted_current.txt
@@ -9,16 +9,13 @@
method @kotlin.PublishedApi internal boolean keepRunningInternal();
method public void pauseTiming();
method public void resumeTiming();
- field public static final androidx.benchmark.BenchmarkState.Companion! Companion;
+ field public static final androidx.benchmark.BenchmarkState.Companion Companion;
field @kotlin.PublishedApi internal int iterationsRemaining;
}
public static final class BenchmarkState.Companion {
}
- public final class IdeOutputKt {
- }
-
public final class MetricNameUtilsKt {
}
diff --git a/benchmark/common/src/androidTest/java/androidx/benchmark/IdeOutputTest.kt b/benchmark/common/src/androidTest/java/androidx/benchmark/InstrumentationResultsTest.kt
similarity index 78%
rename from benchmark/common/src/androidTest/java/androidx/benchmark/IdeOutputTest.kt
rename to benchmark/common/src/androidTest/java/androidx/benchmark/InstrumentationResultsTest.kt
index e0209ad..a435e31 100644
--- a/benchmark/common/src/androidTest/java/androidx/benchmark/IdeOutputTest.kt
+++ b/benchmark/common/src/androidTest/java/androidx/benchmark/InstrumentationResultsTest.kt
@@ -24,11 +24,11 @@
@SmallTest
@RunWith(JUnit4::class)
-class IdeOutputTest {
+class InstrumentationResultsTest {
@Test
fun ideSummary_alignment() {
- val summary1 = ideSummaryLine("foo", 1000, 100)
- val summary2 = ideSummaryLine("fooBarLongerKey", 10000, 0)
+ val summary1 = InstrumentationResults.ideSummaryLine("foo", 1000, 100)
+ val summary2 = InstrumentationResults.ideSummaryLine("fooBarLongerKey", 10000, 0)
assertEquals(
summary1.indexOf("foo"),
@@ -40,11 +40,11 @@
fun ideSummary_allocs() {
assertEquals(
" 1,000 ns foo",
- ideSummaryLine("foo", 1000, null)
+ InstrumentationResults.ideSummaryLine("foo", 1000, null)
)
assertEquals(
" 1,000 ns 10 allocs foo",
- ideSummaryLine("foo", 1000, 10)
+ InstrumentationResults.ideSummaryLine("foo", 1000, 10)
)
}
}
\ No newline at end of file
diff --git a/benchmark/common/src/main/java/androidx/benchmark/BenchmarkState.kt b/benchmark/common/src/main/java/androidx/benchmark/BenchmarkState.kt
index c1abfdf..d308221 100644
--- a/benchmark/common/src/main/java/androidx/benchmark/BenchmarkState.kt
+++ b/benchmark/common/src/main/java/androidx/benchmark/BenchmarkState.kt
@@ -25,7 +25,6 @@
import androidx.annotation.RestrictTo
import androidx.annotation.VisibleForTesting
import androidx.benchmark.Errors.PREFIX
-import androidx.test.platform.app.InstrumentationRegistry
import androidx.tracing.Trace
import java.io.File
import java.util.concurrent.TimeUnit
@@ -217,6 +216,7 @@
).absolutePath
Log.d(TAG, "Profiling output file: $path")
+ InstrumentationResults.reportAdditionalFileToCopy("profiling_trace", path)
val bufferSize = 16 * 1024 * 1024
if (Arguments.profilingMode == ProfilingMode.Sampled &&
@@ -528,10 +528,12 @@
// these 'legacy' CI output stats are considered output
stats.forEach { it.putInBundle(status, PREFIX) }
}
- status.putIdeSummaryLine(
- testName = key,
- nanos = getMinTimeNanos(),
- allocations = stats.firstOrNull { it.name == "allocationCount" }?.median
+ status.putAll(
+ InstrumentationResults.getIdeSummaryLine(
+ testName = key,
+ nanos = getMinTimeNanos(),
+ allocations = stats.firstOrNull { it.name == "allocationCount" }?.median
+ )
)
return status
}
@@ -560,8 +562,9 @@
checkState() // this method is triggered externally
val fullTestName = "$PREFIX$simpleClassName.$methodName"
- val bundle = getFullStatusReport(key = fullTestName, includeStats = !Arguments.dryRunMode)
- reportBundle(bundle)
+ InstrumentationResults.report(
+ getFullStatusReport(key = fullTestName, includeStats = !Arguments.dryRunMode)
+ )
ResultWriter.appendReport(
getReport(
@@ -659,30 +662,18 @@
warmupIterations = warmupIterations
)
// Report value to Studio console
- val bundle = Bundle()
val fullTestName = PREFIX +
if (className.isNotEmpty()) "$className.$testName" else testName
- bundle.putIdeSummaryLine(
- testName = fullTestName,
- nanos = report.getStats("timeNs").min,
- allocations = null
+ InstrumentationResults.report(
+ InstrumentationResults.getIdeSummaryLine(
+ testName = fullTestName,
+ nanos = report.getStats("timeNs").min,
+ allocations = null
+ )
)
- reportBundle(bundle)
// Report values to file output
ResultWriter.appendReport(report)
}
-
- /**
- * Report results bundle to instrumentation
- *
- * Before addResults() was added in the platform, we use sendStatus(). The constant '2'
- * comes from IInstrumentationResultParser.StatusCodes.IN_PROGRESS, and signals the
- * test infra that this is an "additional result" bundle, equivalent to addResults()
- * NOTE: we should a version check to call addResults(), but don't yet due to b/155103514
- */
- internal fun reportBundle(
- bundle: Bundle
- ) = InstrumentationRegistry.getInstrumentation().sendStatus(2, bundle)
}
}
diff --git a/benchmark/common/src/main/java/androidx/benchmark/IdeOutput.kt b/benchmark/common/src/main/java/androidx/benchmark/IdeOutput.kt
deleted file mode 100644
index 7146f5b..0000000
--- a/benchmark/common/src/main/java/androidx/benchmark/IdeOutput.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 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 androidx.benchmark
-
-import android.os.Bundle
-import java.text.NumberFormat
-
-private const val STUDIO_OUTPUT_KEY_PREFIX = "android.studio.display."
-private const val STUDIO_OUTPUT_KEY_ID = "benchmark"
-
-private fun ideSummaryLineWrapped(key: String, nanos: Long, allocations: Long?): String {
- val warningLines =
- Errors.acquireWarningStringForLogging()?.split("\n") ?: listOf()
- return (warningLines + ideSummaryLine(key, nanos, allocations))
- // remove first line if empty
- .filterIndexed { index, it -> index != 0 || it.isNotEmpty() }
- // join, prepending key to everything but first string,
- // to make each line look the same
- .joinToString("\n$STUDIO_OUTPUT_KEY_ID: ")
-}
-
-// NOTE: this summary line will use default locale to determine separators. As
-// this line is only meant for human eyes, we don't worry about consistency here.
-internal fun ideSummaryLine(key: String, nanos: Long, allocations: Long?): String {
- val numberFormat = NumberFormat.getNumberInstance()
- return listOfNotNull(
- // 13 alignment is enough for ~10 seconds
- "%13s ns".format(numberFormat.format(nanos)),
- // 9 alignment is enough for ~10 million allocations
- allocations?.run {
- "%8s allocs".format(numberFormat.format(allocations))
- },
- key
- ).joinToString(" ")
-}
-
-internal fun Bundle.putIdeSummaryLine(testName: String, nanos: Long, allocations: Long?) {
- putString(
- STUDIO_OUTPUT_KEY_PREFIX + STUDIO_OUTPUT_KEY_ID,
- ideSummaryLineWrapped(testName, nanos, allocations)
- )
-}
\ No newline at end of file
diff --git a/benchmark/common/src/main/java/androidx/benchmark/InstrumentationResults.kt b/benchmark/common/src/main/java/androidx/benchmark/InstrumentationResults.kt
new file mode 100644
index 0000000..436735a
--- /dev/null
+++ b/benchmark/common/src/main/java/androidx/benchmark/InstrumentationResults.kt
@@ -0,0 +1,89 @@
+/*
+ * Copyright 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 androidx.benchmark
+
+import android.os.Bundle
+import androidx.test.platform.app.InstrumentationRegistry
+import java.text.NumberFormat
+
+/**
+ * Provides way to report additional results via `Instrumentation.sendStatus()` / `addResult()`.
+ */
+internal object InstrumentationResults {
+ private const val STUDIO_OUTPUT_KEY_PREFIX = "android.studio.display."
+ private const val STUDIO_OUTPUT_KEY_ID = "benchmark"
+
+ private const val ADDITIONAL_FILE_OUTPUT_KEY_PREFIX = "additionalTestOutputFile_"
+
+ private fun ideSummaryLineWrapped(key: String, nanos: Long, allocations: Long?): String {
+ val warningLines =
+ Errors.acquireWarningStringForLogging()?.split("\n") ?: listOf()
+ return (warningLines + ideSummaryLine(key, nanos, allocations))
+ // remove first line if empty
+ .filterIndexed { index, it -> index != 0 || it.isNotBlank() }
+ // join, prepending key to everything but first string,
+ // to make each line look the same
+ .joinToString("\n$STUDIO_OUTPUT_KEY_ID: ")
+ }
+
+ // NOTE: this summary line will use default locale to determine separators. As
+ // this line is only meant for human eyes, we don't worry about consistency here.
+ internal fun ideSummaryLine(key: String, nanos: Long, allocations: Long?): String {
+ val numberFormat = NumberFormat.getNumberInstance()
+ return listOfNotNull(
+ // 13 alignment is enough for ~10 seconds
+ "%13s ns".format(numberFormat.format(nanos)),
+ // 9 alignment is enough for ~10 million allocations
+ allocations?.run {
+ "%8s allocs".format(numberFormat.format(allocations))
+ },
+ key
+ ).joinToString(" ")
+ }
+
+ internal fun getIdeSummaryLine(testName: String, nanos: Long, allocations: Long?) =
+ Bundle().also {
+ it.putString(
+ STUDIO_OUTPUT_KEY_PREFIX + STUDIO_OUTPUT_KEY_ID,
+ ideSummaryLineWrapped(testName, nanos, allocations)
+ )
+ }
+
+ internal fun reportAdditionalFileToCopy(key: String, absoluteFilePath: String) {
+ reportBundle(Bundle().also {
+ it.putString(ADDITIONAL_FILE_OUTPUT_KEY_PREFIX + key, absoluteFilePath)
+ })
+ }
+
+ internal fun report(bundle: Bundle) {
+ reportBundle(bundle)
+ }
+
+ /**
+ * Report results bundle to instrumentation
+ *
+ * Before addResults() was added in the platform, we use sendStatus(). The constant '2'
+ * comes from IInstrumentationResultParser.StatusCodes.IN_PROGRESS, and signals the
+ * test infra that this is an "additional result" bundle, equivalent to addResults()
+ * NOTE: we should a version check to call addResults(), but don't yet due to b/155103514
+ */
+ private fun reportBundle(bundle: Bundle) {
+ InstrumentationRegistry
+ .getInstrumentation()
+ .sendStatus(2, bundle)
+ }
+}
\ No newline at end of file
diff --git a/benchmark/common/src/main/java/androidx/benchmark/ResultWriter.kt b/benchmark/common/src/main/java/androidx/benchmark/ResultWriter.kt
index c61d8f9..7505146 100644
--- a/benchmark/common/src/main/java/androidx/benchmark/ResultWriter.kt
+++ b/benchmark/common/src/main/java/androidx/benchmark/ResultWriter.kt
@@ -38,6 +38,7 @@
val file = File(Arguments.testOutputDir, "$packageName-benchmarkData.json")
writeReport(file, reports)
+ InstrumentationResults.reportAdditionalFileToCopy("results_json", file.absolutePath)
}
}
diff --git a/benchmark/integration-tests/startup-benchmark/src/androidTest/AndroidManifest.xml b/benchmark/integration-tests/startup-benchmark/src/androidTest/AndroidManifest.xml
index 6434fda..3362f60 100644
--- a/benchmark/integration-tests/startup-benchmark/src/androidTest/AndroidManifest.xml
+++ b/benchmark/integration-tests/startup-benchmark/src/androidTest/AndroidManifest.xml
@@ -19,9 +19,12 @@
xmlns:tools="http://schemas.android.com/tools"
package="androidx.benchmark.integration.startup.benchmark.test">
<application
- android:name="androidx.benchmark.integration.startup.benchmark.ArgumentInjectingApplication"
- android:debuggable="false"
- tools:ignore="HardcodedDebugMode"
- tools:replace="android:debuggable" />
- />
+ android:name="androidx.benchmark.integration.startup.benchmark.ArgumentInjectingApplication"
+ android:debuggable="false"
+ tools:ignore="HardcodedDebugMode"
+ tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable shell="true"/>
+ </application>
</manifest>
diff --git a/benchmark/junit4/api/1.1.0-alpha02.txt b/benchmark/junit4/api/1.1.0-alpha02.txt
new file mode 100644
index 0000000..34ad6a658
--- /dev/null
+++ b/benchmark/junit4/api/1.1.0-alpha02.txt
@@ -0,0 +1,23 @@
+// Signature format: 3.0
+package androidx.benchmark.junit4 {
+
+ public class AndroidBenchmarkRunner extends androidx.test.runner.AndroidJUnitRunner {
+ ctor public AndroidBenchmarkRunner();
+ }
+
+ public final class BenchmarkRule implements org.junit.rules.TestRule {
+ ctor public BenchmarkRule();
+ method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+ method public androidx.benchmark.BenchmarkState getState();
+ }
+
+ public final class BenchmarkRule.Scope {
+ method public inline <T> T! runWithTimingDisabled(kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+ public final class BenchmarkRuleKt {
+ method public static inline void measureRepeated(androidx.benchmark.junit4.BenchmarkRule, kotlin.jvm.functions.Function1<? super androidx.benchmark.junit4.BenchmarkRule.Scope,kotlin.Unit> block);
+ }
+
+}
+
diff --git a/benchmark/junit4/api/public_plus_experimental_1.1.0-alpha02.txt b/benchmark/junit4/api/public_plus_experimental_1.1.0-alpha02.txt
new file mode 100644
index 0000000..34ad6a658
--- /dev/null
+++ b/benchmark/junit4/api/public_plus_experimental_1.1.0-alpha02.txt
@@ -0,0 +1,23 @@
+// Signature format: 3.0
+package androidx.benchmark.junit4 {
+
+ public class AndroidBenchmarkRunner extends androidx.test.runner.AndroidJUnitRunner {
+ ctor public AndroidBenchmarkRunner();
+ }
+
+ public final class BenchmarkRule implements org.junit.rules.TestRule {
+ ctor public BenchmarkRule();
+ method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+ method public androidx.benchmark.BenchmarkState getState();
+ }
+
+ public final class BenchmarkRule.Scope {
+ method public inline <T> T! runWithTimingDisabled(kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+ public final class BenchmarkRuleKt {
+ method public static inline void measureRepeated(androidx.benchmark.junit4.BenchmarkRule, kotlin.jvm.functions.Function1<? super androidx.benchmark.junit4.BenchmarkRule.Scope,kotlin.Unit> block);
+ }
+
+}
+
diff --git a/benchmark/junit4/api/res-1.1.0-alpha02.txt b/benchmark/junit4/api/res-1.1.0-alpha02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/benchmark/junit4/api/res-1.1.0-alpha02.txt
diff --git a/benchmark/junit4/api/restricted_1.1.0-alpha02.txt b/benchmark/junit4/api/restricted_1.1.0-alpha02.txt
new file mode 100644
index 0000000..ac47d85
--- /dev/null
+++ b/benchmark/junit4/api/restricted_1.1.0-alpha02.txt
@@ -0,0 +1,24 @@
+// Signature format: 3.0
+package androidx.benchmark.junit4 {
+
+ public class AndroidBenchmarkRunner extends androidx.test.runner.AndroidJUnitRunner {
+ ctor public AndroidBenchmarkRunner();
+ }
+
+ public final class BenchmarkRule implements org.junit.rules.TestRule {
+ ctor public BenchmarkRule();
+ method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+ method public androidx.benchmark.BenchmarkState getState();
+ }
+
+ public final class BenchmarkRule.Scope {
+ method @kotlin.PublishedApi internal androidx.benchmark.BenchmarkState getOuterState();
+ method public inline <T> T! runWithTimingDisabled(kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+ public final class BenchmarkRuleKt {
+ method public static inline void measureRepeated(androidx.benchmark.junit4.BenchmarkRule, kotlin.jvm.functions.Function1<? super androidx.benchmark.junit4.BenchmarkRule.Scope,kotlin.Unit> block);
+ }
+
+}
+
diff --git a/biometric/biometric/build.gradle b/biometric/biometric/build.gradle
index 7860206..ca25130 100644
--- a/biometric/biometric/build.gradle
+++ b/biometric/biometric/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2019 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.
+ */
+
import static androidx.build.dependencies.DependenciesKt.*
import androidx.build.LibraryGroups
import androidx.build.Publish
diff --git a/biometric/integration-tests/testapp/build.gradle b/biometric/integration-tests/testapp/build.gradle
new file mode 100644
index 0000000..44d94478
--- /dev/null
+++ b/biometric/integration-tests/testapp/build.gradle
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2019 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.
+ */
+
+import static androidx.build.dependencies.DependenciesKt.*
+
+plugins {
+ id("AndroidXPlugin")
+ id("com.android.application")
+ id("kotlin-android")
+ id("kotlin-android-extensions")
+}
+
+android {
+ defaultConfig {
+ applicationId "androidx.biometric.integration.testapp"
+ minSdkVersion 18
+ versionCode 1
+ }
+
+ sourceSets {
+ main.manifest.srcFile 'src/main/AndroidManifest.xml'
+ main.java.srcDirs = ['src/main/java']
+ main.java.excludes = ['**/build/**']
+ main.java.includes = ['**/*.java']
+ main.res.srcDirs = ['src/main/res']
+ }
+
+ buildTypes {
+ debug {
+ testCoverageEnabled true
+ }
+
+ release {
+ }
+ }
+}
+
+dependencies {
+ implementation(project(":biometric:biometric"))
+ implementation("androidx.activity:activity-ktx:1.0.0")
+ implementation("androidx.core:core:1.1.0")
+ implementation(KOTLIN_STDLIB)
+}
diff --git a/biometric/integration-tests/testapp/src/main/AndroidManifest.xml b/biometric/integration-tests/testapp/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..54c8c05
--- /dev/null
+++ b/biometric/integration-tests/testapp/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+ -->
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="androidx.biometric.integration.testapp">
+
+ <uses-permission android:name="android.permission.USE_BIOMETRIC" />
+
+ <!--suppress DeprecatedClassUsageInspection -->
+ <uses-permission android:name="android.permission.USE_FINGERPRINT" />
+
+ <application>
+ <activity
+ android:name=".BiometricTestActivity"
+ android:label="Biometric Test App"
+ android:theme="@style/Theme.AppCompat.Light">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
\ No newline at end of file
diff --git a/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/BiometricTestActivity.kt b/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/BiometricTestActivity.kt
new file mode 100644
index 0000000..0d251c9
--- /dev/null
+++ b/biometric/integration-tests/testapp/src/main/java/androidx/biometric/integration/testapp/BiometricTestActivity.kt
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2019 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 androidx.biometric.integration.testapp
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.widget.Button
+import android.widget.CheckBox
+import android.widget.TextView
+import androidx.biometric.BiometricPrompt
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.FragmentActivity
+import java.util.concurrent.Executor
+
+/**
+ * Main activity for the AndroidX Biometric test app.
+ */
+@SuppressLint("SyntheticAccessor")
+class BiometricTestActivity : FragmentActivity() {
+ // Prompt-related fields.
+ private lateinit var executor: Executor
+ private lateinit var biometricPrompt: BiometricPrompt
+
+ // Individual UI elements.
+ private lateinit var deviceCredentialCheckbox: CheckBox
+ private lateinit var cancelOnConfigChangeCheckbox: CheckBox
+ private lateinit var requireConfirmationCheckbox: CheckBox
+ private lateinit var logView: TextView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_biometric_test)
+ executor = ContextCompat.getMainExecutor(this)
+
+ val showPromptButton = findViewById<Button>(R.id.button_show_prompt)
+ showPromptButton.setOnClickListener { showPrompt() }
+
+ // Get checkboxes from the UI so we can access their checked state later.
+ deviceCredentialCheckbox = findViewById(R.id.checkbox_device_credential)
+ cancelOnConfigChangeCheckbox = findViewById(R.id.checkbox_cancel_config_change)
+ requireConfirmationCheckbox = findViewById(R.id.checkbox_require_confirmation)
+
+ val clearLogButton = findViewById<Button>(R.id.button_clear_log)
+ clearLogButton.setOnClickListener { clearLogs() }
+
+ // Restore logged messages on activity recreation (e.g. due to device rotation).
+ logView = findViewById(R.id.text_view_log)
+ if (savedInstanceState != null) {
+ logView.text = savedInstanceState.getCharSequence(KEY_LOG_TEXT, "")
+ }
+
+ // Reconnect the prompt by reinitializing with the new executor and callback.
+ biometricPrompt = BiometricPrompt(
+ this,
+ executor,
+ object : BiometricPrompt.AuthenticationCallback() {
+ override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
+ super.onAuthenticationError(errorCode, errString)
+ log("onAuthenticationError $errorCode: $errString")
+ }
+
+ override fun onAuthenticationSucceeded(
+ result: BiometricPrompt.AuthenticationResult
+ ) {
+ super.onAuthenticationSucceeded(result)
+ log("onAuthenticationSuccess: crypto = ${result.cryptoObject}")
+ }
+
+ override fun onAuthenticationFailed() {
+ super.onAuthenticationFailed()
+ log("onAuthenticationFailed")
+ }
+ }
+ )
+ }
+
+ override fun onPause() {
+ super.onPause()
+
+ // If option is selected, dismiss the prompt on rotation.
+ if (cancelOnConfigChangeCheckbox.isChecked) {
+ biometricPrompt.cancelAuthentication()
+ }
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+
+ // Save the current log messages to be restored on activity recreation.
+ outState.putCharSequence(KEY_LOG_TEXT, logView.text)
+ }
+
+ /**
+ * Launches the [BiometricPrompt] to begin authentication.
+ */
+ private fun showPrompt() {
+ val infoBuilder = BiometricPrompt.PromptInfo.Builder()
+ .setTitle(getString(R.string.biometric_prompt_title))
+ .setSubtitle(getString(R.string.biometric_prompt_subtitle))
+ .setDescription(getString(R.string.biometric_prompt_description))
+ .setConfirmationRequired(requireConfirmationCheckbox.isChecked)
+
+ if (deviceCredentialCheckbox.isChecked) {
+ infoBuilder.setDeviceCredentialAllowed(true)
+ } else {
+ infoBuilder.setNegativeButtonText(getString(R.string.biometric_prompt_negative_label))
+ }
+
+ biometricPrompt.authenticate(infoBuilder.build())
+ }
+
+ /**
+ * Clears all logged messages from the in-app [TextView].
+ */
+ private fun clearLogs() {
+ logView.text = ""
+ }
+
+ /**
+ * Logs a new [message] to the in-app [TextView].
+ */
+ private fun log(message: CharSequence) {
+ logView.append("${message}\n")
+ }
+
+ companion object {
+ private const val KEY_LOG_TEXT = "key_log_text"
+ }
+}
diff --git a/biometric/integration-tests/testapp/src/main/res/layout/activity_biometric_test.xml b/biometric/integration-tests/testapp/src/main/res/layout/activity_biometric_test.xml
new file mode 100644
index 0000000..a67ef74
--- /dev/null
+++ b/biometric/integration-tests/testapp/src/main/res/layout/activity_biometric_test.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+ -->
+
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <Button
+ android:id="@+id/button_show_prompt"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Show prompt" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <CheckBox
+ android:id="@+id/checkbox_device_credential"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Allow device credential"
+ android:textColor="?android:textColorPrimary" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <CheckBox
+ android:id="@+id/checkbox_cancel_config_change"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Cancel on configuration change"
+ android:textColor="?android:textColorPrimary" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ <CheckBox
+ android:id="@+id/checkbox_require_confirmation"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:checked="true" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Require confirmation"
+ android:textColor="?android:textColorPrimary" />
+ </LinearLayout>
+
+ <Button
+ android:id="@+id/button_clear_log"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Clear log" />
+
+ <TextView
+ android:id="@+id/text_view_log"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+ </LinearLayout>
+</ScrollView>
\ No newline at end of file
diff --git a/biometric/integration-tests/testapp/src/main/res/values/strings.xml b/biometric/integration-tests/testapp/src/main/res/values/strings.xml
new file mode 100644
index 0000000..9ce8461
--- /dev/null
+++ b/biometric/integration-tests/testapp/src/main/res/values/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+ -->
+
+<resources>
+ <string name="biometric_test_app_title">Biometric Test App</string>
+
+ <string name="show_prompt_label">Show prompt</string>
+ <string name="device_credential_label">Allow device credential</string>
+ <string name="cancel_config_change_label">Cancel when configuration changes</string>
+ <string name="require_confirmation_label">Require confirmation</string>
+ <string name="clear_log_label">Clear logs</string>
+
+ <string name="biometric_prompt_title">Title</string>
+ <string name="biometric_prompt_subtitle">Subtitle</string>
+ <string name="biometric_prompt_description">Description</string>
+ <string name="biometric_prompt_negative_label">Negative button</string>
+</resources>
diff --git a/browser/browser/api/api_lint.ignore b/browser/browser/api/api_lint.ignore
index a4d5f5e..0a088b5 100644
--- a/browser/browser/api/api_lint.ignore
+++ b/browser/browser/api/api_lint.ignore
@@ -57,8 +57,6 @@
Must avoid boxed primitives (`java.lang.Integer`)
-BuilderSetStyle: androidx.browser.customtabs.CustomTabsIntent.Builder#enableUrlBarHiding():
- Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.browser.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding()
BuilderSetStyle: androidx.browser.trusted.TrustedWebActivityIntentBuilder#buildCustomTabsIntent():
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.browser.trusted.TrustedWebActivityIntentBuilder.buildCustomTabsIntent()
@@ -79,7 +77,7 @@
Listeners should always be at end of argument list (method `newSession`)
-OptionalBuilderConstructorAgrument: androidx.browser.customtabs.CustomTabsIntent.Builder#Builder(androidx.browser.customtabs.CustomTabsSession) parameter #0:
+OptionalBuilderConstructorArgument: androidx.browser.customtabs.CustomTabsIntent.Builder#Builder(androidx.browser.customtabs.CustomTabsSession) parameter #0:
Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter session in androidx.browser.customtabs.CustomTabsIntent.Builder(androidx.browser.customtabs.CustomTabsSession session)
diff --git a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsClient.java b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsClient.java
index 76f5b89..e37a841 100644
--- a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsClient.java
+++ b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsClient.java
@@ -24,6 +24,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -31,6 +32,7 @@
import android.support.customtabs.ICustomTabsCallback;
import android.support.customtabs.ICustomTabsService;
import android.text.TextUtils;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -44,6 +46,8 @@
* {@link CustomTabsSession} from it.
*/
public class CustomTabsClient {
+ private static final String TAG = "CustomTabsClient";
+
private final ICustomTabsService mService;
private final ComponentName mServiceComponentName;
private final Context mApplicationContext;
@@ -115,6 +119,19 @@
* Tabs. To modify this preferred behavior, set <code>ignoreDefault</code> to true and give a
* non empty list of package names in <code>packages</code>.
*
+ * This method queries the {@link PackageManager} to determine which packages support the
+ * Custom Tabs API. On apps that target Android 11 and above, this requires adding the
+ * following package visibility elements to your manifest.
+ *
+ * <pre>
+ * {@code
+ * <!-- Place inside the <queries> element. -->
+ * <intent>
+ * <action android:name="android.support.customtabs.action.CustomTabsService" />
+ * </intent>
+ * }
+ * </pre>
+ *
* @param context {@link Context} to use for querying the packages.
* @param packages Ordered list of packages to test for Custom Tabs support, in
* decreasing order of priority.
@@ -143,6 +160,12 @@
serviceIntent.setPackage(packageName);
if (pm.resolveService(serviceIntent, 0) != null) return packageName;
}
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ Log.w(TAG, "Unable to find any Custom Tabs packages, you may need to add a "
+ + "<queries> element to your manifest. See the docs for "
+ + "CustomTabsClient#getPackageName.");
+ }
return null;
}
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
index f802e35..1d272c2 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
@@ -28,6 +28,7 @@
import androidx.build.studio.StudioTask.Companion.registerStudioTask
import androidx.build.uptodatedness.TaskUpToDateValidator
import com.android.build.gradle.api.AndroidBasePlugin
+import com.android.build.gradle.internal.tasks.factory.dependsOn
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.ExtraPropertiesExtension
@@ -88,6 +89,9 @@
val projectModules = ConcurrentHashMap<String, String>()
extra.set("projects", projectModules)
buildOnServerTask.dependsOn(tasks.named(CheckExternalDependencyLicensesTask.TASK_NAME))
+ // Anchor task that invokes running all subprojects :properties tasks which ensure that
+ // Android Studio sync is able to succeed.
+ val allProperties = tasks.register("allProperties")
subprojects { project ->
// Add a method for each sub project where they can declare an optional
// dependency on a project or its latest snapshot artifact.
@@ -122,6 +126,8 @@
project.plugins.withType(JavaPlugin::class.java) {
buildOnServerTask.dependsOn("${project.path}:jar")
}
+
+ allProperties.dependsOn("${project.path}:properties")
}
if (partiallyDejetifyArchiveTask != null) {
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 8d7f9c6..04baed6 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -31,7 +31,7 @@
val ARCH_RUNTIME = Version("2.2.0-alpha01")
val ASYNCLAYOUTINFLATER = Version("1.1.0-alpha01")
val AUTOFILL = Version("1.1.0-alpha02")
- val BENCHMARK = Version("1.1.0-alpha01")
+ val BENCHMARK = Version("1.1.0-alpha02")
val BIOMETRIC = Version("1.1.0-alpha01")
val BROWSER = Version("1.3.0-alpha04")
val BUILDSRC_TESTS = Version("1.0.0-alpha01")
@@ -60,7 +60,7 @@
val ENTERPRISE = Version("1.1.0-alpha01")
val EXIFINTERFACE = Version("1.3.0-alpha02")
val FRAGMENT = Version("1.3.0-alpha07")
- val FUTURES = Version("1.1.0-beta01")
+ val FUTURES = Version("1.1.0-rc01")
val GRIDLAYOUT = Version("1.1.0-alpha01")
val HEIFWRITER = Version("1.1.0-alpha01")
val HILT = Version("1.0.0-alpha01")
@@ -72,7 +72,7 @@
val LEANBACK_PREFERENCE = Version("1.1.0-alpha04")
val LEGACY = Version("1.1.0-alpha01")
val LOCALBROADCASTMANAGER = Version("1.1.0-alpha02")
- val LIFECYCLE = Version("2.3.0-alpha05")
+ val LIFECYCLE = Version("2.3.0-alpha06")
val LIFECYCLE_EXTENSIONS = Version("2.2.0")
val LOADER = Version("1.2.0-alpha01")
val MEDIA = Version("1.2.0-alpha04")
@@ -100,14 +100,14 @@
val SLICE_BUILDERS_KTX = Version("1.0.0-alpha08")
val SLICE_REMOTECALLBACK = Version("1.0.0-alpha01")
val SLIDINGPANELAYOUT = Version("1.2.0-alpha01")
- val STARTUP = Version("1.0.0-alpha01")
+ val STARTUP = Version("1.0.0-alpha02")
val SQLITE = Version("2.1.0-rc01")
val SQLITE_INSPECTOR = Version("2.1.0-alpha01")
val SWIPEREFRESHLAYOUT = Version("1.1.0-rc01")
val TESTSCREENSHOT = Version("1.0.0-alpha01")
val TEXTCLASSIFIER = Version("1.0.0-alpha03")
val TRACING = Version("1.0.0-beta01")
- val TRANSITION = Version("1.4.0-alpha01")
+ val TRANSITION = Version("1.4.0-beta01")
val TVPROVIDER = Version("1.1.0-alpha01")
val UI = Version("0.1.0-dev15")
val VECTORDRAWABLE = Version("1.2.0-alpha02")
diff --git a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
index 65197d9..94fd25a 100644
--- a/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/PublishDocsRules.kt
@@ -115,6 +115,8 @@
prebuilts(LibraryGroups.REMOTECALLBACK, "1.0.0-alpha02")
// TODO: Remove this once b/157899389 is resolved
ignore(LibraryGroups.ROOM.group, "room-compiler")
+ // TODO: Remove during release phase of rxjava3 artifact
+ ignore(LibraryGroups.ROOM.group, "room-rxjava3")
prebuilts(LibraryGroups.ROOM, "2.3.0-alpha01")
prebuilts(LibraryGroups.SAVEDSTATE, "1.1.0-alpha01")
// TODO: Remove this ignore once androidx.security:security-biometric:1.0.0-alpha01 is released
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index b01ec27..3549a7d 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -41,6 +41,7 @@
const val ESPRESSO_CONTRIB = "androidx.test.espresso:espresso-contrib:3.3.0-rc01"
const val ESPRESSO_CORE = "androidx.test.espresso:espresso-core:3.3.0-rc01"
const val ESPRESSO_INTENTS = "androidx.test.espresso:espresso-intents:3.3.0-rc01"
+const val ESPRESSO_IDLING_NET = "androidx.test.espresso.idling:idling-net:3.3.0-rc01"
const val ESPRESSO_IDLING_RESOURCE = "androidx.test.espresso:espresso-idling-resource:3.3.0-rc01"
const val ESPRESSO_WEB = "androidx.test.espresso:espresso-web:3.3.0-rc01"
const val FINDBUGS = "com.google.code.findbugs:jsr305:3.0.2"
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
index b844f81..bcebce8 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/CheckApiCompatibilityTask.kt
@@ -21,7 +21,6 @@
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
-import org.gradle.api.tasks.OutputFiles
import org.gradle.api.tasks.TaskAction
import org.gradle.workers.WorkerExecutor
import java.io.File
@@ -61,12 +60,6 @@
)
}
- // Declaring outputs prevents Gradle from rerunning this task if the inputs haven't changed
- @OutputFiles
- fun getTaskOutputs(): List<File> {
- return listOf(referenceApi.get().publicApiFile)
- }
-
@TaskAction
fun exec() {
check(bootClasspath.isNotEmpty()) { "Android boot classpath not set." }
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
index a1bc83d..a022a62 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
@@ -64,6 +64,11 @@
val metalavaJar = getParameters().getMetalavaClasspath().get()
execOperations.javaexec {
+ // Intellij core reflects into java.util.ResourceBundle
+ it.jvmArgs = listOf(
+ "--add-opens",
+ "java.base/java.util=ALL-UNNAMED"
+ )
it.classpath(metalavaJar)
it.main = "com.android.tools.metalava.Driver"
it.args = allArgs
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
index 8fd9dc6..4a965b2 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaTasks.kt
@@ -158,6 +158,7 @@
task.api.set(builtApiLocation)
task.dependencyClasspath = javaCompileInputs.dependencyClasspath
task.bootClasspath = javaCompileInputs.bootClasspath
+ task.cacheEvenIfNoOutputs()
task.dependsOn(generateApi)
}
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageAnalysisTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageAnalysisTest.java
index 7d3f99a..4324c31 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageAnalysisTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageAnalysisTest.java
@@ -18,6 +18,8 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assume.assumeTrue;
+
import android.app.Instrumentation;
import android.content.Context;
import android.os.Handler;
@@ -120,49 +122,83 @@
}
@Test
- public void canSupportGuaranteedSize()
+ public void canSupportGuaranteedSizeFront()
throws InterruptedException, CameraInfoUnavailableException {
// CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
// Using for-loop to check both front and back device cameras can support the guaranteed
// 640x480 size.
- for (int i = 0; i <= 1; i++) {
- final int lensFacing = i;
- if (!CameraUtil.hasCameraWithLensFacing(lensFacing)) {
- continue;
- }
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_FRONT));
- // Checks camera device sensor degrees to set correct target rotation value to make sure
- // the exactly matching result size 640x480 can be selected if the device supports it.
- Integer sensorOrientation = CameraUtil.getSensorOrientation(
- CameraSelector.LENS_FACING_BACK);
- boolean isRotateNeeded = (sensorOrientation % 180) != 0;
- ImageAnalysis useCase = new ImageAnalysis.Builder().setTargetResolution(
- GUARANTEED_RESOLUTION).setTargetRotation(
- isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
- mInstrumentation.runOnMainSync(() -> {
- CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
- lensFacing).build();
- CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase);
- mLifecycleOwner.startAndResume();
- useCase.setAnalyzer(CameraXExecutors.newHandlerExecutor(mHandler), mAnalyzer);
- });
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_FRONT);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ ImageAnalysis useCase = new ImageAnalysis.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+ mInstrumentation.runOnMainSync(() -> {
+ CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_FRONT).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase);
+ mLifecycleOwner.startAndResume();
+ useCase.setAnalyzer(CameraXExecutors.newHandlerExecutor(mHandler), mAnalyzer);
+ });
+ assertThat(mAnalysisResultsSemaphore.tryAcquire(5, TimeUnit.SECONDS)).isTrue();
- assertThat(mAnalysisResultsSemaphore.tryAcquire(5, TimeUnit.SECONDS)).isTrue();
-
- synchronized (mAnalysisResultLock) {
- // Check the analyzed image exactly matches 640x480 size. This test can also check
- // whether the guaranteed resolution 640x480 is really supported for YUV_420_888
- // format on the devices when running the test.
- assertThat(GUARANTEED_RESOLUTION).isEqualTo(
- mAnalysisResults.iterator().next().mResolution);
- }
-
- // Reset the environment to run test for the other lens facing camera device.
- mInstrumentation.runOnMainSync(() -> {
- CameraX.unbindAll();
- mLifecycleOwner.pauseAndStop();
- });
+ synchronized (mAnalysisResultLock) {
+ // Check the analyzed image exactly matches 640x480 size. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for YUV_420_888
+ // format on the devices when running the test.
+ assertThat(GUARANTEED_RESOLUTION).isEqualTo(
+ mAnalysisResults.iterator().next().mResolution);
}
+
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ });
+ }
+
+ @Test
+ public void canSupportGuaranteedSizeBack()
+ throws InterruptedException, CameraInfoUnavailableException {
+ // CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
+ // Using for-loop to check both front and back device cameras can support the guaranteed
+ // 640x480 size.
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_BACK));
+
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_BACK);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ ImageAnalysis useCase = new ImageAnalysis.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+ mInstrumentation.runOnMainSync(() -> {
+ CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_BACK).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase);
+ mLifecycleOwner.startAndResume();
+ useCase.setAnalyzer(CameraXExecutors.newHandlerExecutor(mHandler), mAnalyzer);
+ });
+ assertThat(mAnalysisResultsSemaphore.tryAcquire(5, TimeUnit.SECONDS)).isTrue();
+
+ synchronized (mAnalysisResultLock) {
+ // Check the analyzed image exactly matches 640x480 size. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for YUV_420_888
+ // format on the devices when running the test.
+ assertThat(GUARANTEED_RESOLUTION).isEqualTo(
+ mAnalysisResults.iterator().next().mResolution);
+ }
+
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ });
}
@Test
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
index 18a1eed..4c6cfdd 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
@@ -19,6 +19,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.doAnswer;
@@ -163,11 +164,6 @@
mLifecycleOwner = new FakeLifecycleOwner();
mMainExecutor = ContextCompat.getMainExecutor(context);
mContentResolver = ApplicationProvider.getApplicationContext().getContentResolver();
-
- // Get the camera ID
- mInstrumentation.runOnMainSync(() -> {
- CameraX.bindToLifecycle(mLifecycleOwner, BACK_SELECTOR);
- });
}
@After
@@ -215,52 +211,95 @@
}
@Test
- public void canSupportGuaranteedSize()
+ public void canSupportGuaranteedSizeFront()
throws CameraInfoUnavailableException, ExecutionException, InterruptedException {
// CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
// Using for-loop to check both front and back device cameras can support the guaranteed
// 640x480 size.
- for (int i = 0; i <= 1; i++) {
- final int lensFacing = i;
- if (!CameraUtil.hasCameraWithLensFacing(lensFacing)) {
- continue;
- }
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_FRONT));
- // Checks camera device sensor degrees to set correct target rotation value to make sure
- // the exactly matching result size 640x480 can be selected if the device supports it.
- Integer sensorOrientation = CameraUtil.getSensorOrientation(BACK_LENS_FACING);
- boolean isRotateNeeded = (sensorOrientation % 180) != 0;
- ImageCapture useCase = new ImageCapture.Builder().setTargetResolution(
- GUARANTEED_RESOLUTION).setTargetRotation(
- isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_FRONT);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ ImageCapture useCase = new ImageCapture.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
- mInstrumentation.runOnMainSync(
- () -> {
- CameraSelector cameraSelector =
- new CameraSelector.Builder().requireLensFacing(lensFacing).build();
- CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase,
- mRepeatingUseCase);
- mLifecycleOwner.startAndResume();
- });
+ mInstrumentation.runOnMainSync(
+ () -> {
+ CameraSelector cameraSelector =
+ new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_FRONT).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase,
+ mRepeatingUseCase);
+ mLifecycleOwner.startAndResume();
+ });
- ResolvableFuture<ImageProperties> imageProperties = ResolvableFuture.create();
- OnImageCapturedCallback callback = createMockOnImageCapturedCallback(imageProperties);
- useCase.takePicture(mMainExecutor, callback);
- // Wait for the signal that the image has been captured.
- verify(callback, timeout(10000)).onCaptureSuccess(any(ImageProxy.class));
+ ResolvableFuture<ImageProperties> imageProperties = ResolvableFuture.create();
+ OnImageCapturedCallback callback = createMockOnImageCapturedCallback(imageProperties);
+ useCase.takePicture(mMainExecutor, callback);
+ // Wait for the signal that the image has been captured.
+ verify(callback, timeout(10000)).onCaptureSuccess(any(ImageProxy.class));
- // Check the captured image exactly matches 640x480 size. This test can also check
- // whether the guaranteed resolution 640x480 is really supported for JPEG format on the
- // devices when running the test.
- assertEquals(GUARANTEED_RESOLUTION, imageProperties.get().size);
+ // Check the captured image exactly matches 640x480 size. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for JPEG format on the
+ // devices when running the test.
+ assertEquals(GUARANTEED_RESOLUTION, imageProperties.get().size);
- // Reset the environment to run test for the other lens facing camera device.
- mInstrumentation.runOnMainSync(() -> {
- CameraX.unbindAll();
- mLifecycleOwner.pauseAndStop();
- mRepeatingUseCase = new FakeRepeatingUseCase(mFakeUseCaseConfig);
- });
- }
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ mRepeatingUseCase = new FakeRepeatingUseCase(mFakeUseCaseConfig);
+ });
+ }
+
+ @Test
+ public void canSupportGuaranteedSizeBack()
+ throws CameraInfoUnavailableException, ExecutionException, InterruptedException {
+ // CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
+ // Using for-loop to check both front and back device cameras can support the guaranteed
+ // 640x480 size.
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_BACK));
+
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_BACK);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ ImageCapture useCase = new ImageCapture.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+
+ mInstrumentation.runOnMainSync(
+ () -> {
+ CameraSelector cameraSelector =
+ new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_BACK).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, useCase,
+ mRepeatingUseCase);
+ mLifecycleOwner.startAndResume();
+ });
+
+ ResolvableFuture<ImageProperties> imageProperties = ResolvableFuture.create();
+ OnImageCapturedCallback callback = createMockOnImageCapturedCallback(imageProperties);
+ useCase.takePicture(mMainExecutor, callback);
+ // Wait for the signal that the image has been captured.
+ verify(callback, timeout(10000)).onCaptureSuccess(any(ImageProxy.class));
+
+ // Check the captured image exactly matches 640x480 size. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for JPEG format on the
+ // devices when running the test.
+ assertEquals(GUARANTEED_RESOLUTION, imageProperties.get().size);
+
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ mRepeatingUseCase = new FakeRepeatingUseCase(mFakeUseCaseConfig);
+ });
}
@Test
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
index 8321947..7f4ca7c 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
@@ -21,6 +21,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
@@ -225,50 +226,84 @@
}
@Test
- public void canSupportGuaranteedSize()
+ public void canSupportGuaranteedSizeFront()
throws InterruptedException, CameraInfoUnavailableException {
// CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
// Using for-loop to check both front and back device cameras can support the guaranteed
// 640x480 size.
- for (int i = 0; i <= 1; i++) {
- final int lensFacing = i;
- if (!CameraUtil.hasCameraWithLensFacing(lensFacing)) {
- continue;
- }
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_FRONT));
- // Checks camera device sensor degrees to set correct target rotation value to make sure
- // the exactly matching result size 640x480 can be selected if the device supports it.
- Integer sensorOrientation = CameraUtil.getSensorOrientation(
- CameraSelector.LENS_FACING_BACK);
- boolean isRotateNeeded = (sensorOrientation % 180) != 0;
- Preview preview = new Preview.Builder().setTargetResolution(
- GUARANTEED_RESOLUTION).setTargetRotation(
- isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_FRONT);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ Preview preview = new Preview.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
- mInstrumentation.runOnMainSync(() -> {
- preview.setSurfaceProvider(getSurfaceProvider(null));
- CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
- lensFacing).build();
- CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, preview);
- mLifecycleOwner.startAndResume();
- });
+ mInstrumentation.runOnMainSync(() -> {
+ preview.setSurfaceProvider(getSurfaceProvider(null));
+ CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_FRONT).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, preview);
+ mLifecycleOwner.startAndResume();
+ });
- // Assert.
- assertThat(mSurfaceFutureSemaphore.tryAcquire(10, TimeUnit.SECONDS)).isTrue();
+ // Assert.
+ assertThat(mSurfaceFutureSemaphore.tryAcquire(10, TimeUnit.SECONDS)).isTrue();
- // Check whether 640x480 is selected for the preview use case. This test can also check
- // whether the guaranteed resolution 640x480 is really supported for SurfaceTexture
- // format on the devices when running the test.
- assertEquals(GUARANTEED_RESOLUTION, mPreviewResolution);
+ // Check whether 640x480 is selected for the preview use case. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for SurfaceTexture
+ // format on the devices when running the test.
+ assertEquals(GUARANTEED_RESOLUTION, mPreviewResolution);
- // Reset the environment to run test for the other lens facing camera device.
- mInstrumentation.runOnMainSync(() -> {
- CameraX.unbindAll();
- mLifecycleOwner.pauseAndStop();
- });
- }
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ });
}
+ @Test
+ public void canSupportGuaranteedSizeBack()
+ throws InterruptedException, CameraInfoUnavailableException {
+ // CameraSelector.LENS_FACING_FRONT/LENS_FACING_BACK are defined as constant int 0 and 1.
+ // Using for-loop to check both front and back device cameras can support the guaranteed
+ // 640x480 size.
+ assumeTrue(CameraUtil.hasCameraWithLensFacing(CameraSelector.LENS_FACING_BACK));
+
+ // Checks camera device sensor degrees to set correct target rotation value to make sure
+ // the exactly matching result size 640x480 can be selected if the device supports it.
+ Integer sensorOrientation = CameraUtil.getSensorOrientation(
+ CameraSelector.LENS_FACING_BACK);
+ boolean isRotateNeeded = (sensorOrientation % 180) != 0;
+ Preview preview = new Preview.Builder().setTargetResolution(
+ GUARANTEED_RESOLUTION).setTargetRotation(
+ isRotateNeeded ? Surface.ROTATION_90 : Surface.ROTATION_0).build();
+
+ mInstrumentation.runOnMainSync(() -> {
+ preview.setSurfaceProvider(getSurfaceProvider(null));
+ CameraSelector cameraSelector = new CameraSelector.Builder().requireLensFacing(
+ CameraSelector.LENS_FACING_BACK).build();
+ CameraX.bindToLifecycle(mLifecycleOwner, cameraSelector, preview);
+ mLifecycleOwner.startAndResume();
+ });
+
+ // Assert.
+ assertThat(mSurfaceFutureSemaphore.tryAcquire(10, TimeUnit.SECONDS)).isTrue();
+
+ // Check whether 640x480 is selected for the preview use case. This test can also check
+ // whether the guaranteed resolution 640x480 is really supported for SurfaceTexture
+ // format on the devices when running the test.
+ assertEquals(GUARANTEED_RESOLUTION, mPreviewResolution);
+
+ // Reset the environment to run test for the other lens facing camera device.
+ mInstrumentation.runOnMainSync(() -> {
+ CameraX.unbindAll();
+ mLifecycleOwner.pauseAndStop();
+ });
+ }
@Test
public void setMultipleNonNullSurfaceProviders_getsFrame() throws InterruptedException {
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraXTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraXTest.java
index 828c5b9..d5be316 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraXTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraXTest.java
@@ -41,6 +41,7 @@
import androidx.camera.camera2.internal.util.SemaphoreReleasingCamera2Callbacks;
import androidx.camera.camera2.internal.util.SemaphoreReleasingCamera2Callbacks.DeviceStateCallback;
import androidx.camera.camera2.internal.util.SemaphoreReleasingCamera2Callbacks.SessionCaptureCallback;
+import androidx.camera.camera2.interop.Camera2CameraInfo;
import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
import androidx.camera.core.Camera;
@@ -51,7 +52,6 @@
import androidx.camera.core.CameraX;
import androidx.camera.core.ImageAnalysis;
import androidx.camera.core.ImageCapture;
-import androidx.camera.core.impl.CameraInternal;
import androidx.camera.core.impl.utils.executor.CameraXExecutors;
import androidx.camera.testing.CameraUtil;
import androidx.camera.testing.fakes.FakeLifecycleOwner;
@@ -607,7 +607,7 @@
useCase);
List<String> camera2IdList = Arrays.asList(CameraUtil.getCameraManager().getCameraIdList());
- assertThat(((CameraInternal) camera).getCameraInfoInternal().getCameraId()).isEqualTo(
+ assertThat(Camera2CameraInfo.extractCameraId(camera.getCameraInfo())).isEqualTo(
camera2IdList.iterator().next());
}
@@ -621,7 +621,7 @@
new CameraSelector.Builder().requireLensFacing(DEFAULT_LENS_FACING).build(),
useCase);
- assertThat(((CameraInternal) camera).getCameraInfoInternal().getCameraId()).isEqualTo(
+ assertThat(Camera2CameraInfo.extractCameraId(camera.getCameraInfo())).isEqualTo(
CameraUtil.getCameraIdWithLensFacing(DEFAULT_LENS_FACING));
}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
index 3a9dfc0..b10101c 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/SupportedSurfaceCombinationTest.java
@@ -56,9 +56,11 @@
import androidx.camera.core.impl.SurfaceConfig.ConfigType;
import androidx.camera.core.impl.UseCaseConfig;
import androidx.camera.core.impl.VideoCaptureConfig;
+import androidx.camera.core.impl.utils.executor.CameraXExecutors;
import androidx.camera.testing.CameraUtil;
import androidx.camera.testing.Configs;
import androidx.camera.testing.StreamConfigurationMapUtil;
+import androidx.camera.testing.SurfaceTextureProvider;
import androidx.camera.testing.fakes.FakeCamera;
import androidx.camera.testing.fakes.FakeCameraFactory;
import androidx.camera.testing.fakes.FakeLifecycleOwner;
@@ -486,6 +488,9 @@
final Preview preview = new Preview.Builder()
.setTargetAspectRatio(AspectRatio.RATIO_16_9)
.build();
+ preview.setSurfaceProvider(CameraXExecutors.directExecutor(),
+ SurfaceTextureProvider.createSurfaceTextureProvider(mock(
+ SurfaceTextureProvider.SurfaceTextureCallback.class)));
// Ensure we are bound to a camera to ensure aspect ratio correction is applied.
FakeLifecycleOwner fakeLifecycle = new FakeLifecycleOwner();
@@ -534,6 +539,9 @@
mContext, CAMERA_ID, mMockCamcorderProfileHelper);
Preview preview = new Preview.Builder().build();
+ preview.setSurfaceProvider(CameraXExecutors.directExecutor(),
+ SurfaceTextureProvider.createSurfaceTextureProvider(mock(
+ SurfaceTextureProvider.SurfaceTextureCallback.class)));
ImageCapture imageCapture = new ImageCapture.Builder().build();
ImageAnalysis imageAnalysis = new ImageAnalysis.Builder().build();
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
index 4c87c16e..71f0a69 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
@@ -240,10 +240,10 @@
@Test
@UiThreadTest
- public void bind_createsNewUseCaseMediator() {
+ public void bind_createsNewLifecycleCamera() {
initCameraX();
CameraX.bindToLifecycle(mLifecycle, CAMERA_SELECTOR, new FakeUseCase());
- // One observer is the use case mediator. The other observer removes the use case upon the
+ // One observer is the LifecycleCamera. The other observer removes the use case upon the
// lifecycle's destruction.
assertThat(mLifecycle.getObserverCount()).isEqualTo(2);
}
@@ -275,7 +275,7 @@
@Test
@UiThreadTest
- public void bind_createsDifferentUseCaseMediators_forDifferentLifecycles() {
+ public void bind_createsDifferentLifecycleCameras_forDifferentLifecycles() {
initCameraX();
CameraX.bindToLifecycle(mLifecycle, CAMERA_SELECTOR,
new FakeUseCaseConfig.Builder().setTargetName("config0").build());
@@ -284,7 +284,7 @@
CameraX.bindToLifecycle(anotherLifecycle, CAMERA_SELECTOR,
new FakeUseCaseConfig.Builder().setTargetName("config1").build());
- // One observer is the use case mediator. The other observer removes the use case upon the
+ // One observer is the LifecycleCamera. The other observer removes the use case upon the
// lifecycle's destruction.
assertThat(mLifecycle.getObserverCount()).isEqualTo(2);
assertThat(anotherLifecycle.getObserverCount()).isEqualTo(2);
@@ -373,19 +373,6 @@
}
@Test
- @UiThreadTest
- public void bindUseCases_canUpdateUseCase() {
- initCameraX();
- FakeUseCaseConfig config0 = new FakeUseCaseConfig.Builder().getUseCaseConfig();
- FakeUseCase fakeUseCase = new FakeUseCase(config0);
-
- Camera camera = CameraX.bindToLifecycle(mLifecycle, CameraSelector.DEFAULT_BACK_CAMERA,
- fakeUseCase);
-
- assertThat(fakeUseCase.getCamera()).isEqualTo(camera);
- }
-
- @Test
public void requestingDefaultConfiguration_returnsDefaultConfiguration() {
initCameraX();
// Requesting a default configuration will throw if CameraX is not initialized.
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisDeviceTest.java
similarity index 98%
rename from camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisTest.java
rename to camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisDeviceTest.java
index 27801a3bf..c165a4e 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageAnalysisDeviceTest.java
@@ -41,7 +41,8 @@
@SmallTest
@RunWith(AndroidJUnit4.class)
-public class ImageAnalysisTest {
+public class ImageAnalysisDeviceTest {
+
private final CameraInternal mMockCameraInternal = mock(CameraInternal.class);
private final ImageAnalysis.Analyzer mMockAnalyzer = mock(ImageAnalysis.Analyzer.class);
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
index 4cf2448..94de7cb 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/ImageCaptureTest.java
@@ -27,10 +27,13 @@
import android.util.Size;
import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.ImageCaptureConfig;
import androidx.camera.core.impl.utils.executor.CameraXExecutors;
+import androidx.camera.core.internal.CameraUseCaseAdapter;
import androidx.camera.testing.fakes.FakeAppConfig;
import androidx.camera.testing.fakes.FakeCamera;
import androidx.camera.testing.fakes.FakeCameraControl;
+import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.MediumTest;
@@ -42,6 +45,8 @@
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import java.util.Collections;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.concurrent.ExecutionException;
@@ -51,7 +56,7 @@
@MediumTest
@RunWith(AndroidJUnit4.class)
public class ImageCaptureTest {
- private FakeCamera mFakeCamera;
+ private CameraUseCaseAdapter mCameraUseCaseAdapter;
private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation();
@Before
@@ -62,7 +67,17 @@
Context context = ApplicationProvider.getApplicationContext();
CameraX.initialize(context, cameraXConfig).get();
- mFakeCamera = new FakeCamera();
+ FakeCamera fakeCamera = new FakeCamera("fakeCameraId");
+
+ FakeCameraDeviceSurfaceManager fakeCameraDeviceSurfaceManager =
+ new FakeCameraDeviceSurfaceManager();
+ fakeCameraDeviceSurfaceManager.setSuggestedResolution("fakeCameraId",
+ ImageCaptureConfig.class,
+ new Size(640, 480));
+
+ mCameraUseCaseAdapter = new CameraUseCaseAdapter(fakeCamera,
+ new LinkedHashSet<>(Collections.singleton(fakeCamera)),
+ fakeCameraDeviceSurfaceManager);
}
@After
@@ -74,12 +89,17 @@
public void onCaptureCancelled_onErrorCAMERA_CLOSED() {
ImageCapture imageCapture = createImageCapture();
- mInstrumentation.runOnMainSync(() -> bind(imageCapture));
+ mInstrumentation.runOnMainSync(() -> {
+ try {
+ mCameraUseCaseAdapter.addUseCases(Collections.singleton(imageCapture));
+ } catch (CameraUseCaseAdapter.CameraException ignore) {
+ }
+ });
ImageCapture.OnImageCapturedCallback callback = mock(
ImageCapture.OnImageCapturedCallback.class);
FakeCameraControl fakeCameraControl =
- ((FakeCameraControl) mFakeCamera.getCameraControlInternal());
+ ((FakeCameraControl) mCameraUseCaseAdapter.getCameraControlInternal());
fakeCameraControl.setOnNewCaptureRequestListener(captureConfigs -> {
// Notify the cancel after the capture request has been successfully submitted
@@ -100,12 +120,17 @@
public void onRequestFailed_OnErrorCAPTURE_FAILED() {
ImageCapture imageCapture = createImageCapture();
- mInstrumentation.runOnMainSync(() -> bind(imageCapture));
+ mInstrumentation.runOnMainSync(() -> {
+ try {
+ mCameraUseCaseAdapter.addUseCases(Collections.singleton(imageCapture));
+ } catch (CameraUseCaseAdapter.CameraException ignore) {
+ }
+ });
ImageCapture.OnImageCapturedCallback callback = mock(
ImageCapture.OnImageCapturedCallback.class);
FakeCameraControl fakeCameraControl =
- ((FakeCameraControl) mFakeCamera.getCameraControlInternal());
+ ((FakeCameraControl) mCameraUseCaseAdapter.getCameraControlInternal());
fakeCameraControl.setOnNewCaptureRequestListener(captureConfigs -> {
// Notify the failure after the capture request has been successfully submitted
fakeCameraControl.notifyAllRequestsOnCaptureFailed();
@@ -128,9 +153,14 @@
public void captureWithMinLatency_jpegQualityIs95() throws InterruptedException {
// Arrange.
ImageCapture imageCapture = createImageCapture();
- mInstrumentation.runOnMainSync(() -> bind(imageCapture));
+ mInstrumentation.runOnMainSync(() -> {
+ try {
+ mCameraUseCaseAdapter.addUseCases(Collections.singleton(imageCapture));
+ } catch (CameraUseCaseAdapter.CameraException ignore) {
+ }
+ });
FakeCameraControl fakeCameraControl =
- ((FakeCameraControl) mFakeCamera.getCameraControlInternal());
+ ((FakeCameraControl) mCameraUseCaseAdapter.getCameraControlInternal());
FakeCameraControl.OnNewCaptureRequestListener mockCaptureRequestListener =
mock(FakeCameraControl.OnNewCaptureRequestListener.class);
@@ -169,11 +199,4 @@
})
.build();
}
-
- // TODO(b/147698557) Should be removed when the binding of UseCase to Camera is simplified.
- private void bind(UseCase useCase) {
- // Sets bound camera to use case.
- useCase.onAttach(mFakeCamera);
- useCase.updateSuggestedResolution(new Size(640, 480));
- }
}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraRepositoryTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraRepositoryTest.java
new file mode 100644
index 0000000..2e0773d
--- /dev/null
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraRepositoryTest.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2019 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 androidx.camera.core;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.camera.core.impl.CameraInternal;
+import androidx.camera.core.internal.CameraUseCaseAdapter;
+import androidx.camera.testing.fakes.FakeCamera;
+import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
+import androidx.camera.testing.fakes.FakeLifecycleOwner;
+import androidx.camera.testing.fakes.FakeUseCase;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public final class LifecycleCameraRepositoryTest {
+
+ private FakeLifecycleOwner mLifecycle;
+ private LifecycleCameraRepository mRepository;
+ private CameraUseCaseAdapter mCameraUseCaseAdapter;
+ private LinkedHashSet<CameraInternal> mCameraSet;
+
+ @Before
+ public void setUp() {
+ mLifecycle = new FakeLifecycleOwner();
+ mRepository = new LifecycleCameraRepository();
+ CameraInternal camera = new FakeCamera();
+ mCameraSet = new LinkedHashSet<>(Collections.singleton(camera));
+ mCameraUseCaseAdapter = new CameraUseCaseAdapter(camera,
+ mCameraSet,
+ new FakeCameraDeviceSurfaceManager());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void throwException_ifTryingToCreateWithExistingIdentifier() {
+ LifecycleCamera firstLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ LifecycleCamera secondLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+
+ assertThat(firstLifecycleCamera).isSameInstanceAs(secondLifecycleCamera);
+ }
+
+ @Test
+ public void differentLifecycleCamerasAreCreated_forDifferentLifecycles() {
+ LifecycleCamera firstLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
+ LifecycleCamera secondLifecycleCamera =
+ mRepository.createLifecycleCamera(secondLifecycle,
+ mCameraUseCaseAdapter);
+
+ assertThat(firstLifecycleCamera).isNotEqualTo(secondLifecycleCamera);
+ }
+
+ @Test
+ public void differentLifecycleCamerasAreCreated_forDifferentCameraSets() {
+ LifecycleCamera firstLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+
+ CameraInternal fakeCamera = new FakeCamera("other");
+ CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(fakeCamera,
+ new LinkedHashSet<>(Collections.singleton(fakeCamera)),
+ new FakeCameraDeviceSurfaceManager());
+
+ LifecycleCamera secondLifecycleCamera =
+ mRepository.createLifecycleCamera(mLifecycle,
+ cameraUseCaseAdapter);
+
+ assertThat(firstLifecycleCamera).isNotEqualTo(secondLifecycleCamera);
+ }
+
+ @Test
+ public void useCaseIsCleared_whenLifecycleIsDestroyed() throws
+ CameraUseCaseAdapter.CameraException {
+ LifecycleCamera lifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ FakeUseCase useCase = new FakeUseCase();
+ lifecycleCamera.bind(Collections.singleton(useCase));
+
+ assertThat(useCase.isCleared()).isFalse();
+
+ mLifecycle.destroy();
+
+ assertThat(useCase.isCleared()).isTrue();
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void exception_whenCreatingWithDestroyedLifecycle() {
+ mLifecycle.destroy();
+
+ // Should throw IllegalArgumentException
+ mRepository.createLifecycleCamera(mLifecycle, mCameraUseCaseAdapter);
+ }
+
+ @Test
+ public void lifecycleCameraIsStopped_whenNewLifecycleIsStarted() {
+ // Starts first lifecycle and check LifecycleCamera active state is true.
+ LifecycleCamera firstLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ mLifecycle.start();
+ assertThat(firstLifecycleCamera.isActive()).isTrue();
+
+ // Starts second lifecycle and check previous LifecycleCamera is stopped.
+ FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
+ LifecycleCamera secondLifecycleCamera =
+ mRepository.createLifecycleCamera(
+ secondLifecycle, mCameraUseCaseAdapter);
+ secondLifecycle.start();
+ assertThat(secondLifecycleCamera.isActive()).isTrue();
+ assertThat(firstLifecycleCamera.isActive()).isFalse();
+ }
+
+ @Test
+ public void lifecycleCameraOf2ndActiveLifecycleIsStarted_when1stActiveLifecycleIsStopped() {
+ // Starts first lifecycle and check LifecycleCamera active state is true.
+ LifecycleCamera firstLifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ mLifecycle.start();
+ assertThat(firstLifecycleCamera.isActive()).isTrue();
+
+ // Starts second lifecycle and check previous LifecycleCamera is stopped.
+ FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
+ LifecycleCamera secondLifecycleCamera =
+ mRepository.createLifecycleCamera(
+ secondLifecycle, mCameraUseCaseAdapter);
+ secondLifecycle.start();
+ assertThat(secondLifecycleCamera.isActive()).isTrue();
+ assertThat(firstLifecycleCamera.isActive()).isFalse();
+
+ // Stops second lifecycle and check previous LifecycleCamera is started again.
+ secondLifecycle.stop();
+ assertThat(secondLifecycleCamera.isActive()).isFalse();
+ assertThat(firstLifecycleCamera.isActive()).isTrue();
+ }
+
+ @Test
+ public void retrievesExistingCamera() {
+ LifecycleCamera lifecycleCamera = mRepository.createLifecycleCamera(
+ mLifecycle, mCameraUseCaseAdapter);
+ CameraUseCaseAdapter.CameraId cameraId = CameraUseCaseAdapter.generateCameraId(mCameraSet);
+ LifecycleCamera retrieved = mRepository.getLifecycleCamera(mLifecycle, cameraId);
+
+ assertThat(lifecycleCamera).isSameInstanceAs(retrieved);
+ }
+
+ @Test
+ public void keys() {
+ LifecycleCameraRepository.Key key0 = LifecycleCameraRepository.Key.create(mLifecycle,
+ mCameraUseCaseAdapter.getCameraId());
+ LifecycleCameraRepository.Key key1 = LifecycleCameraRepository.Key.create(mLifecycle,
+ CameraUseCaseAdapter.generateCameraId(mCameraSet));
+
+ Map<LifecycleCameraRepository.Key, LifecycleOwner> map = new HashMap<>();
+ map.put(key0, mLifecycle);
+ assertThat(map).containsKey(key1);
+
+ assertThat(key0).isEqualTo(key1);
+ }
+}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraTest.java
new file mode 100644
index 0000000..0ac18b8
--- /dev/null
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/LifecycleCameraTest.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2019 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 androidx.camera.core;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.camera.core.internal.CameraUseCaseAdapter;
+import androidx.camera.testing.fakes.FakeCamera;
+import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
+import androidx.camera.testing.fakes.FakeLifecycleOwner;
+import androidx.camera.testing.fakes.FakeUseCase;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Collections;
+import java.util.LinkedHashSet;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class LifecycleCameraTest {
+ private LifecycleCamera mLifecycleCamera;
+ private FakeLifecycleOwner mLifecycleOwner;
+ private CameraUseCaseAdapter mCameraUseCaseAdapter;
+ private FakeCamera mFakeCamera;
+ private FakeUseCase mFakeUseCase;
+
+ @Before
+ public void setUp() {
+ mLifecycleOwner = new FakeLifecycleOwner();
+ mFakeCamera = new FakeCamera();
+ mCameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ new LinkedHashSet<>(Collections.singleton(mFakeCamera)),
+ new FakeCameraDeviceSurfaceManager());
+ mFakeUseCase = new FakeUseCase();
+ }
+
+ @Test
+ public void lifecycleCameraCanBeMadeObserverOfLifecycle() {
+ assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(0);
+
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(1);
+ }
+
+ @Test
+ public void lifecycleCameraCanStopObservingALifecycle() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(1);
+
+ mLifecycleCamera.release();
+
+ assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(0);
+ }
+
+ @Test
+ public void lifecycleCameraCanBeReleasedMultipleTimes() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ mLifecycleCamera.release();
+ mLifecycleCamera.release();
+ }
+
+ @Test
+ public void lifecycleStart_triggersOnActive() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ mLifecycleOwner.start();
+
+ assertThat(mLifecycleCamera.isActive()).isTrue();
+ }
+
+ @Test
+ public void lifecycleStop_triggersOnInactive() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ mLifecycleOwner.start();
+
+ mLifecycleOwner.stop();
+
+ assertThat(mLifecycleCamera.isActive()).isFalse();
+ }
+
+ @Test
+ public void lifecycleStart_doesNotTriggerOnActiveIfSuspended() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ mLifecycleCamera.suspend();
+ mLifecycleOwner.start();
+
+ assertThat(mLifecycleCamera.isActive()).isFalse();
+ }
+
+ @Test
+ public void unsuspendOfStartedLifecycle_triggersOnActive() {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+
+ mLifecycleCamera.suspend();
+ mLifecycleOwner.start();
+ mLifecycleCamera.unsuspend();
+
+ assertThat(mLifecycleCamera.isActive()).isTrue();
+ }
+
+ @Test
+ public void bind_willBindToCameraInternal() throws CameraUseCaseAdapter.CameraException {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+ mLifecycleOwner.start();
+
+ mLifecycleCamera.bind(Collections.singleton(mFakeUseCase));
+
+ assertThat(mFakeCamera.getAttachedUseCases()).containsExactly(mFakeUseCase);
+ }
+
+ @Test
+ public void unbind_willUnbindFromCameraInternal() throws CameraUseCaseAdapter.CameraException {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+ mLifecycleOwner.start();
+
+ mLifecycleCamera.bind(Collections.singleton(mFakeUseCase));
+ mLifecycleCamera.unbind(Collections.singletonList(mFakeUseCase));
+
+ assertThat(mFakeCamera.getAttachedUseCases()).isEmpty();
+ }
+
+ @Test
+ public void unbindAll_willUnbindFromCameraInternal()
+ throws CameraUseCaseAdapter.CameraException {
+ mLifecycleCamera = new LifecycleCamera(mLifecycleOwner, mCameraUseCaseAdapter);
+ mLifecycleOwner.start();
+
+ mLifecycleCamera.bind(Collections.singleton(mFakeUseCase));
+ mLifecycleCamera.unbindAll();
+
+ assertThat(mFakeCamera.getAttachedUseCases()).isEmpty();
+ }
+}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorLifecycleControllerTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorLifecycleControllerTest.java
deleted file mode 100644
index 07ac7d0..0000000
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorLifecycleControllerTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2019 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 androidx.camera.core;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import androidx.camera.core.impl.UseCaseMediator;
-import androidx.camera.testing.fakes.FakeLifecycleOwner;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class UseCaseMediatorLifecycleControllerTest {
- private final UseCaseMediator.StateChangeCallback mMockCallback =
- Mockito.mock(UseCaseMediator.StateChangeCallback.class);
- private UseCaseMediatorLifecycleController mUseCaseMediatorLifecycleController;
- private FakeLifecycleOwner mLifecycleOwner;
-
- @Before
- public void setUp() {
- mLifecycleOwner = new FakeLifecycleOwner();
- }
-
- @Test
- public void mediatorCanBeMadeObserverOfLifecycle() {
- assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(0);
-
- mUseCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(
- mLifecycleOwner.getLifecycle(), new UseCaseMediator());
-
- assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(1);
- }
-
- @Test
- public void mediatorCanStopObservingALifeCycle() {
- mUseCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(
- mLifecycleOwner.getLifecycle(), new UseCaseMediator());
- assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(1);
-
- mUseCaseMediatorLifecycleController.release();
-
- assertThat(mLifecycleOwner.getObserverCount()).isEqualTo(0);
- }
-
- @Test
- public void mediatorCanBeReleasedMultipleTimes() {
- mUseCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(
- mLifecycleOwner.getLifecycle(), new UseCaseMediator());
-
- mUseCaseMediatorLifecycleController.release();
- mUseCaseMediatorLifecycleController.release();
- }
-
- @Test
- public void lifecycleStart_triggersOnActive() {
- mUseCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(
- mLifecycleOwner.getLifecycle(), new UseCaseMediator());
- mUseCaseMediatorLifecycleController.getUseCaseMediator().setListener(mMockCallback);
-
- mLifecycleOwner.start();
-
- verify(mMockCallback, times(1))
- .onActive(mUseCaseMediatorLifecycleController.getUseCaseMediator());
- }
-
- @Test
- public void lifecycleStop_triggersOnInactive() {
- mUseCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(
- mLifecycleOwner.getLifecycle(), new UseCaseMediator());
- mUseCaseMediatorLifecycleController.getUseCaseMediator().setListener(mMockCallback);
- mLifecycleOwner.start();
-
- mLifecycleOwner.stop();
-
- verify(mMockCallback, times(1))
- .onInactive(mUseCaseMediatorLifecycleController.getUseCaseMediator());
- }
-}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorRepositoryTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorRepositoryTest.java
deleted file mode 100644
index 46f919a..0000000
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseMediatorRepositoryTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2019 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 androidx.camera.core;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import androidx.camera.core.internal.CameraUseCaseAdapter;
-import androidx.camera.testing.fakes.FakeCamera;
-import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
-import androidx.camera.testing.fakes.FakeLifecycleOwner;
-import androidx.camera.testing.fakes.FakeUseCase;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Collections;
-import java.util.Map;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public final class UseCaseMediatorRepositoryTest {
-
- private FakeLifecycleOwner mLifecycle;
- private UseCaseMediatorRepository mRepository;
- private Map<LifecycleOwner, UseCaseMediatorLifecycleController> mUseCasesMap;
- private CameraUseCaseAdapter mCameraUseCaseAdapter;
-
- @Before
- public void setUp() {
- mLifecycle = new FakeLifecycleOwner();
- mRepository = new UseCaseMediatorRepository();
- mUseCasesMap = mRepository.getUseCasesMap();
- mCameraUseCaseAdapter = new CameraUseCaseAdapter(new FakeCamera(),
- new FakeCameraDeviceSurfaceManager());
- }
-
- @Test
- public void repositoryStartsEmpty() {
- assertThat(mUseCasesMap).isEmpty();
- }
-
- @Test
- public void newUseCaseMediatorIsCreated_whenNoMediatorExistsForLifecycleInRepository() {
- UseCaseMediatorLifecycleController mediator = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
-
- assertThat(mUseCasesMap).containsExactly(mLifecycle, mediator);
- }
-
- @Test
- public void existingUseCaseMediatorIsReturned_whenMediatorExistsForLifecycleInRepository() {
- UseCaseMediatorLifecycleController firstMediator = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
- UseCaseMediatorLifecycleController secondMediator = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
-
- assertThat(firstMediator).isSameInstanceAs(secondMediator);
- assertThat(mUseCasesMap).containsExactly(mLifecycle, firstMediator);
- }
-
- @Test
- public void differentUseCaseMediatorsAreCreated_forDifferentLifecycles() {
- UseCaseMediatorLifecycleController firstMediator = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
- FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
- UseCaseMediatorLifecycleController secondMediator =
- mRepository.getOrCreateUseCaseMediator(secondLifecycle);
-
- assertThat(mUseCasesMap)
- .containsExactly(mLifecycle, firstMediator, secondLifecycle, secondMediator);
- }
-
- @Test
- public void useCaseMediatorObservesLifecycle() {
- mRepository.getOrCreateUseCaseMediator(mLifecycle);
-
- // One observer is the use case mediator. The other observer removes the use case from the
- // repository when the lifecycle is destroyed.
- assertThat(mLifecycle.getObserverCount()).isEqualTo(2);
- }
-
- @Test
- public void useCaseMediatorIsRemovedFromRepository_whenLifecycleIsDestroyed() {
- mRepository.getOrCreateUseCaseMediator(mLifecycle);
- mLifecycle.destroy();
-
- assertThat(mUseCasesMap).isEmpty();
- }
-
- @Test
- public void useCaseIsCleared_whenLifecycleIsDestroyed()
- throws CameraUseCaseAdapter.CameraException {
- UseCaseMediatorLifecycleController mediator = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
- FakeUseCase useCase = new FakeUseCase();
- mediator.getUseCaseMediator().addUseCase(useCase);
-
- mCameraUseCaseAdapter.attachUseCases(Collections.singleton(useCase));
-
- assertThat(useCase.isCleared()).isFalse();
-
- mLifecycle.destroy();
-
- assertThat(useCase.isCleared()).isTrue();
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void exception_whenCreatingWithDestroyedLifecycle() {
- mLifecycle.destroy();
-
- // Should throw IllegalArgumentException
- mRepository.getOrCreateUseCaseMediator(mLifecycle);
- }
-
- @Test
- public void useCaseMediatorIsStopped_whenNewLifecycleIsStarted() {
- // Starts first lifecycle and check UseCaseMediator active state is true.
- UseCaseMediatorLifecycleController firstController = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
- mLifecycle.start();
- assertThat(firstController.getUseCaseMediator().isActive()).isTrue();
-
- // Starts second lifecycle and check previous UseCaseMediator is stopped.
- FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
- UseCaseMediatorLifecycleController secondController =
- mRepository.getOrCreateUseCaseMediator(
- secondLifecycle);
- secondLifecycle.start();
- assertThat(secondController.getUseCaseMediator().isActive()).isTrue();
- assertThat(firstController.getUseCaseMediator().isActive()).isFalse();
- }
-
- @Test
- public void useCaseMediatorOf2ndActiveLifecycleIsStarted_when1stActiveLifecycleIsStopped() {
- // Starts first lifecycle and check UseCaseMediator active state is true.
- UseCaseMediatorLifecycleController firstController = mRepository.getOrCreateUseCaseMediator(
- mLifecycle);
- mLifecycle.start();
- assertThat(firstController.getUseCaseMediator().isActive()).isTrue();
-
- // Starts second lifecycle and check previous UseCaseMediator is stopped.
- FakeLifecycleOwner secondLifecycle = new FakeLifecycleOwner();
- UseCaseMediatorLifecycleController secondController =
- mRepository.getOrCreateUseCaseMediator(
- secondLifecycle);
- secondLifecycle.start();
- assertThat(secondController.getUseCaseMediator().isActive()).isTrue();
- assertThat(firstController.getUseCaseMediator().isActive()).isFalse();
-
- // Stops second lifecycle and check previous UseCaseMediator is started again.
- secondLifecycle.stop();
- assertThat(secondController.getUseCaseMediator().isActive()).isFalse();
- assertThat(firstController.getUseCaseMediator().isActive()).isTrue();
- }
-}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/UseCaseMediatorTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/UseCaseMediatorTest.java
deleted file mode 100644
index 2dec264..0000000
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/UseCaseMediatorTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2019 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 androidx.camera.core.impl;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import androidx.camera.core.FakeOtherUseCase;
-import androidx.camera.core.FakeOtherUseCaseConfig;
-import androidx.camera.core.internal.CameraUseCaseAdapter;
-import androidx.camera.testing.fakes.FakeCamera;
-import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
-import androidx.camera.testing.fakes.FakeUseCase;
-import androidx.camera.testing.fakes.FakeUseCaseConfig;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Collections;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public final class UseCaseMediatorTest {
- private final UseCaseMediator.StateChangeCallback mMockCallback =
- mock(UseCaseMediator.StateChangeCallback.class);
- private UseCaseMediator mUseCaseMediator;
- private FakeUseCase mFakeUseCase;
- private FakeOtherUseCase mFakeOtherUseCase;
- private CameraUseCaseAdapter mCameraUseCaseAdapter;
- private CameraInternal mMockCamera = mock(CameraInternal.class);
-
- @Before
- public void setUp() {
- FakeUseCaseConfig fakeUseCaseConfig = new FakeUseCaseConfig.Builder()
- .setTargetName("fakeUseCaseConfig")
- .getUseCaseConfig();
- FakeOtherUseCaseConfig fakeOtherUseCaseConfig =
- new FakeOtherUseCaseConfig.Builder()
- .setTargetName("fakeOtherUseCaseConfig")
- .getUseCaseConfig();
- mCameraUseCaseAdapter = new CameraUseCaseAdapter(new FakeCamera(),
- new FakeCameraDeviceSurfaceManager());
- mUseCaseMediator = new UseCaseMediator();
- mFakeUseCase = new FakeUseCase(fakeUseCaseConfig);
- mFakeOtherUseCase = new FakeOtherUseCase(fakeOtherUseCaseConfig);
- }
-
- @Test
- public void mediatorStartsEmpty() {
- assertThat(mUseCaseMediator.getUseCases()).isEmpty();
- }
-
- @Test
- public void newUseCaseIsAdded_whenNoneExistsInMediator() {
- assertThat(mUseCaseMediator.addUseCase(mFakeUseCase)).isTrue();
- assertThat(mUseCaseMediator.getUseCases()).containsExactly(mFakeUseCase);
- }
-
- @Test
- public void multipleUseCases_canBeAdded() {
- assertThat(mUseCaseMediator.addUseCase(mFakeUseCase)).isTrue();
- assertThat(mUseCaseMediator.addUseCase(mFakeOtherUseCase)).isTrue();
-
- assertThat(mUseCaseMediator.getUseCases()).containsExactly(mFakeUseCase, mFakeOtherUseCase);
- }
-
- @Test
- public void mediatorBecomesEmpty_afterMediatorIsCleared()
- throws CameraUseCaseAdapter.CameraException {
- mUseCaseMediator.addUseCase(mFakeUseCase);
- mCameraUseCaseAdapter.attachUseCases(Collections.singleton(mFakeUseCase));
-
- mUseCaseMediator.destroy();
-
- assertThat(mUseCaseMediator.getUseCases()).isEmpty();
- }
-
- @Test
- public void useCaseIsCleared_afterMediatorIsCleared()
- throws CameraUseCaseAdapter.CameraException {
- mUseCaseMediator.addUseCase(mFakeUseCase);
- mCameraUseCaseAdapter.attachUseCases(Collections.singleton(mFakeUseCase));
-
- assertThat(mFakeUseCase.isCleared()).isFalse();
-
- mUseCaseMediator.destroy();
-
- assertThat(mFakeUseCase.isCleared()).isTrue();
- }
-
- @Test
- public void useCaseRemoved_afterRemovedCalled() {
- mUseCaseMediator.addUseCase(mFakeUseCase);
-
- mUseCaseMediator.removeUseCase(mFakeUseCase);
-
- assertThat(mUseCaseMediator.getUseCases()).isEmpty();
- }
-
- @Test
- public void listenerOnMediatorActive_ifUseCaseMediatorStarted() {
- mUseCaseMediator.setListener(mMockCallback);
- mUseCaseMediator.start();
-
- verify(mMockCallback, times(1)).onActive(mUseCaseMediator);
- }
-
- @Test
- public void listenerOnMediatorInactive_ifUseCaseMediatorStopped() {
- mUseCaseMediator.setListener(mMockCallback);
- mUseCaseMediator.stop();
-
- verify(mMockCallback, times(1)).onInactive(mUseCaseMediator);
- }
-
- @Test
- public void setListener_replacesPreviousListener() {
- mUseCaseMediator.setListener(mMockCallback);
- mUseCaseMediator.setListener(null);
-
- mUseCaseMediator.start();
- verify(mMockCallback, never()).onActive(mUseCaseMediator);
- }
-}
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/CameraUseCaseAdapterTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/CameraUseCaseAdapterTest.java
index ba896c6..75bd8f0 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/CameraUseCaseAdapterTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/internal/CameraUseCaseAdapterTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import androidx.camera.core.impl.CameraInternal;
import androidx.camera.testing.fakes.FakeCamera;
import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
import androidx.camera.testing.fakes.FakeUseCase;
@@ -29,6 +30,7 @@
import org.junit.runner.RunWith;
import java.util.Collections;
+import java.util.LinkedHashSet;
/** JUnit test cases for {@link CameraUseCaseAdapter} class. */
@SmallTest
@@ -36,31 +38,73 @@
public class CameraUseCaseAdapterTest {
FakeCameraDeviceSurfaceManager mFakeCameraDeviceSurfaceManager;
FakeCamera mFakeCamera;
+ LinkedHashSet<CameraInternal> mFakeCameraSet = new LinkedHashSet<>();
@Before
public void setUp() {
mFakeCameraDeviceSurfaceManager = new FakeCameraDeviceSurfaceManager();
- mFakeCamera = new FakeCamera();
+ mFakeCamera = new FakeCamera();
+ mFakeCameraSet.add(mFakeCamera);
}
@Test
public void attachUseCases() throws CameraUseCaseAdapter.CameraException {
CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
mFakeCameraDeviceSurfaceManager);
FakeUseCase fakeUseCase = new FakeUseCase();
- cameraUseCaseAdapter.attachUseCases(Collections.singleton(fakeUseCase));
+ cameraUseCaseAdapter.addUseCases(Collections.singleton(fakeUseCase));
assertThat(fakeUseCase.getCamera()).isEqualTo(mFakeCamera);
+ assertThat(mFakeCamera.getAttachedUseCases()).containsExactly(fakeUseCase);
}
@Test
public void detachUseCases() throws CameraUseCaseAdapter.CameraException {
CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
mFakeCameraDeviceSurfaceManager);
FakeUseCase fakeUseCase = new FakeUseCase();
- cameraUseCaseAdapter.attachUseCases(Collections.singleton(fakeUseCase));
- cameraUseCaseAdapter.detachUseCases(Collections.singleton(fakeUseCase));
+ cameraUseCaseAdapter.addUseCases(Collections.singleton(fakeUseCase));
+ cameraUseCaseAdapter.removeUseCases(Collections.singleton(fakeUseCase));
assertThat(fakeUseCase.getCamera()).isNull();
}
+
+ @Test
+ public void closeCameraUseCaseAdapter() throws CameraUseCaseAdapter.CameraException {
+ CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
+ mFakeCameraDeviceSurfaceManager);
+ FakeUseCase fakeUseCase = new FakeUseCase();
+ cameraUseCaseAdapter.addUseCases(Collections.singleton(fakeUseCase));
+ cameraUseCaseAdapter.detachUseCases();
+
+ assertThat(fakeUseCase.getCamera()).isEqualTo(mFakeCamera);
+ assertThat(mFakeCamera.getAttachedUseCases()).isEmpty();
+ }
+
+ @Test
+ public void cameraIdEquals() {
+ CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
+ mFakeCameraDeviceSurfaceManager);
+
+ CameraUseCaseAdapter.CameraId otherCameraId =
+ CameraUseCaseAdapter.generateCameraId(mFakeCameraSet);
+
+ assertThat(cameraUseCaseAdapter.getCameraId().equals(otherCameraId)).isTrue();
+ }
+
+ @Test
+ public void cameraEquivalent() {
+ CameraUseCaseAdapter cameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
+ mFakeCameraDeviceSurfaceManager);
+
+ CameraUseCaseAdapter otherCameraUseCaseAdapter = new CameraUseCaseAdapter(mFakeCamera,
+ mFakeCameraSet,
+ mFakeCameraDeviceSurfaceManager);
+ assertThat(cameraUseCaseAdapter.isEquivalent(otherCameraUseCaseAdapter)).isTrue();
+ }
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraSelector.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraSelector.java
index 7b31439..71a7d11 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraSelector.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraSelector.java
@@ -71,6 +71,25 @@
@UseExperimental(markerClass = ExperimentalCameraFilter.class)
@NonNull
public CameraInternal select(@NonNull LinkedHashSet<CameraInternal> cameras) {
+ return filter(cameras).iterator().next();
+ }
+
+ /**
+ * Filters the input cameras using the {@link CameraFilter} assigned to the selector.
+ *
+ * <p>The camera filtered must be contained in the input set. Otherwise it will throw an
+ * exception.
+ *
+ * @param cameras The camera set being filtered.
+ * @return The remain set of cameras.
+ * @throws IllegalArgumentException If there's no available camera after being filtered or
+ * the filtered camera ids aren't contained in the input set.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @UseExperimental(markerClass = ExperimentalCameraFilter.class)
+ @NonNull
+ public LinkedHashSet<CameraInternal> filter(@NonNull LinkedHashSet<CameraInternal> cameras) {
LinkedHashSet<Camera> camerasCopy = new LinkedHashSet<>(cameras);
LinkedHashSet<Camera> resultCameras = new LinkedHashSet<>(cameras);
for (CameraFilter filter : mCameraFilterSet) {
@@ -85,7 +104,12 @@
camerasCopy.retainAll(resultCameras);
}
- return (CameraInternal) resultCameras.iterator().next();
+ LinkedHashSet<CameraInternal> returnCameras = new LinkedHashSet<>();
+ for (Camera camera : resultCameras) {
+ returnCameras.add((CameraInternal) camera);
+ }
+
+ return returnCameras;
}
/**
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
index f73f4eb..739475c 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
@@ -19,12 +19,10 @@
import android.app.Application;
import android.content.Context;
import android.content.res.Resources;
-import android.graphics.Rect;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import android.util.Log;
-import android.util.Size;
import androidx.annotation.GuardedBy;
import androidx.annotation.MainThread;
@@ -39,17 +37,14 @@
import androidx.camera.core.impl.CameraInternal;
import androidx.camera.core.impl.CameraRepository;
import androidx.camera.core.impl.CameraThreadConfig;
-import androidx.camera.core.impl.SurfaceConfig;
import androidx.camera.core.impl.UseCaseConfig;
import androidx.camera.core.impl.UseCaseConfigFactory;
-import androidx.camera.core.impl.UseCaseMediator;
import androidx.camera.core.impl.utils.Threads;
import androidx.camera.core.impl.utils.executor.CameraXExecutors;
import androidx.camera.core.impl.utils.futures.FutureCallback;
import androidx.camera.core.impl.utils.futures.FutureChain;
import androidx.camera.core.impl.utils.futures.Futures;
-import androidx.camera.core.internal.UseCaseOccupancy;
-import androidx.camera.core.internal.ViewPorts;
+import androidx.camera.core.internal.CameraUseCaseAdapter;
import androidx.concurrent.futures.CallbackToFutureAdapter;
import androidx.core.os.HandlerCompat;
import androidx.core.util.Preconditions;
@@ -59,12 +54,10 @@
import com.google.common.util.concurrent.ListenableFuture;
import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
@@ -172,9 +165,10 @@
final CameraRepository mCameraRepository = new CameraRepository();
private final Object mInitializeLock = new Object();
- private final UseCaseMediatorRepository
- mUseCaseMediatorRepository = new UseCaseMediatorRepository();
+
private final CameraXConfig mCameraXConfig;
+ private final LifecycleCameraRepository
+ mLifecycleCameraRepository = new LifecycleCameraRepository();
private final Executor mCameraExecutor;
private final Handler mSchedulerHandler;
@Nullable
@@ -294,26 +288,8 @@
Threads.checkMainThread();
CameraX cameraX = checkInitialized();
// TODO(b/153096869): override UseCase's target rotation.
-
- UseCaseMediatorLifecycleController useCaseMediatorLifecycleController =
- cameraX.getOrCreateUseCaseMediator(lifecycleOwner);
- UseCaseMediator useCaseMediatorToBind =
- useCaseMediatorLifecycleController.getUseCaseMediator();
-
- Collection<UseCaseMediatorLifecycleController> controllers =
- cameraX.mUseCaseMediatorRepository.getUseCaseMediators();
- for (UseCase useCase : useCases) {
- for (UseCaseMediatorLifecycleController controller : controllers) {
- UseCaseMediator useCaseMediator = controller.getUseCaseMediator();
- if (useCaseMediator.contains(useCase) && useCaseMediator != useCaseMediatorToBind) {
- throw new IllegalStateException(
- String.format(
- "Use case %s already bound to a different lifecycle.",
- useCase));
- }
- }
- }
-
+ // TODO(b/154939118) The filter appending should be removed after extensions are moved to
+ // the CheckedCameraInternal
CameraSelector.Builder selectorBuilder =
CameraSelector.Builder.fromSelector(cameraSelector);
// Append the camera filter required internally if there's any.
@@ -326,68 +302,53 @@
}
}
- // Try to get the camera before binding to the use case, and throw IllegalArgumentException
- // if the camera not found.
- CameraInternal camera = CameraX.getCameraWithCameraSelector(selectorBuilder.build());
+ CameraSelector modifiedSelector = selectorBuilder.build();
- if (useCases.length == 0) {
- return camera;
- }
+ LinkedHashSet<CameraInternal> cameraInternals =
+ modifiedSelector.filter(cameraX.mCameraRepository.getCameras());
+ CameraUseCaseAdapter.CameraId cameraId =
+ CameraUseCaseAdapter.generateCameraId(cameraInternals);
- List<UseCase> originalUseCases = new ArrayList<>();
+ LifecycleCamera lifecycleCameraToBind =
+ cameraX.mLifecycleCameraRepository.getLifecycleCamera(lifecycleOwner, cameraId);
- // Collect original use cases attached to the camera
- for (UseCase useCase : useCaseMediatorToBind.getUseCases()) {
- CameraInternal attachedCamera = useCase.getCamera();
- if (attachedCamera != null) {
- if (camera.equals(attachedCamera)) {
- originalUseCases.add(useCase);
+ Collection<LifecycleCamera> lifecycleCameras =
+ cameraX.mLifecycleCameraRepository.getLifecycleCameras();
+ for (UseCase useCase : useCases) {
+ for (LifecycleCamera lifecycleCamera : lifecycleCameras) {
+ if (lifecycleCamera.isBound(useCase)
+ && lifecycleCamera != lifecycleCameraToBind) {
+ throw new IllegalStateException(
+ String.format(
+ "Use case %s already bound to a different lifecycle.",
+ useCase));
}
}
}
- // Only do resolution calculation if UseCases were attached
- List<UseCase> totalUseCases = new ArrayList<>(originalUseCases);
- totalUseCases.addAll(Arrays.asList(useCases));
- if (!UseCaseOccupancy.checkUseCaseLimitNotExceeded(totalUseCases)) {
- throw new IllegalArgumentException("Attempting to bind too many ImageCapture or "
- + "VideoCapture instances");
+ // Try to get the camera before binding to the use case, and throw IllegalArgumentException
+ // if the camera not found.
+ if (lifecycleCameraToBind == null) {
+ lifecycleCameraToBind =
+ cameraX.mLifecycleCameraRepository.createLifecycleCamera(lifecycleOwner,
+ new CameraUseCaseAdapter(cameraInternals.iterator().next(),
+ cameraInternals,
+ cameraX.getCameraDeviceSurfaceManager()));
}
- Map<UseCase, Size> suggestedResolutionsMap = calculateSuggestedResolutions(
- camera.getCameraInfoInternal(),
- originalUseCases,
- Arrays.asList(useCases));
- if (viewPort != null) {
- // Calculate crop rect if view port is provided.
- Map<UseCase, Rect> cropRectMap = ViewPorts.calculateViewPortRects(
- camera.getCameraControlInternal().getSensorRect(),
- viewPort.getAspectRatio(),
- camera.getCameraInfoInternal().getSensorRotationDegrees(
- viewPort.getRotation()),
- viewPort.getScaleType(),
- viewPort.getLayoutDirection(),
- suggestedResolutionsMap);
- for (UseCase useCase : useCases) {
- useCase.setViewPortCropRect(cropRectMap.get(useCase));
- }
+ if (useCases.length == 0) {
+ return lifecycleCameraToBind;
}
- // At this point the binding will succeed since all the calculations are done
- // Do all binding related work
- for (UseCase useCase : useCases) {
- useCase.onAttach(camera);
- useCase.updateSuggestedResolution(
- Preconditions.checkNotNull(suggestedResolutionsMap.get(useCase)));
-
- // Update the UseCaseMediator
- useCaseMediatorToBind.addUseCase(useCase);
+ try {
+ lifecycleCameraToBind.getCameraUseCaseAdapter().setViewPort(viewPort);
+ lifecycleCameraToBind.bind(Arrays.asList(useCases));
+ } catch (CameraUseCaseAdapter.CameraException e) {
+ throw new IllegalArgumentException(e.getMessage());
}
- useCaseMediatorLifecycleController.notifyState();
-
- return camera;
+ return lifecycleCameraToBind;
}
/**
@@ -403,12 +364,9 @@
public static boolean isBound(@NonNull UseCase useCase) {
CameraX cameraX = checkInitialized();
- Collection<UseCaseMediatorLifecycleController> controllers =
- cameraX.mUseCaseMediatorRepository.getUseCaseMediators();
-
- for (UseCaseMediatorLifecycleController controller : controllers) {
- UseCaseMediator useCaseMediator = controller.getUseCaseMediator();
- if (useCaseMediator.contains(useCase)) {
+ for (LifecycleCamera lifecycleCamera :
+ cameraX.mLifecycleCameraRepository.getLifecycleCameras()) {
+ if (lifecycleCamera.isBound(useCase)) {
return true;
}
}
@@ -436,26 +394,9 @@
Threads.checkMainThread();
CameraX cameraX = checkInitialized();
- Collection<UseCaseMediatorLifecycleController> useCaseMediators =
- cameraX.mUseCaseMediatorRepository.getUseCaseMediators();
-
- for (UseCase useCase : useCases) {
- // Remove the UseCase from the mediator.
- boolean wasUnbound = false;
- for (UseCaseMediatorLifecycleController useCaseMediatorLifecycleController :
- useCaseMediators) {
- if (useCaseMediatorLifecycleController.getUseCaseMediator().removeUseCase(
- useCase)) {
- wasUnbound = true;
- }
- }
-
- // Unbind the UseCase from the currently bound camera if it is bound
- CameraInternal attachedCamera = useCase.getCamera();
- if (wasUnbound && attachedCamera != null) {
- useCase.onDetach(attachedCamera);
- useCase.onDestroy();
- }
+ for (LifecycleCamera lifecycleCamera :
+ cameraX.mLifecycleCameraRepository.getLifecycleCameras()) {
+ lifecycleCamera.unbind(Arrays.asList(useCases));
}
}
@@ -472,18 +413,10 @@
Threads.checkMainThread();
CameraX cameraX = checkInitialized();
- Collection<UseCaseMediatorLifecycleController> useCaseMediators =
- cameraX.mUseCaseMediatorRepository.getUseCaseMediators();
-
- List<UseCase> useCases = new ArrayList<>();
- for (UseCaseMediatorLifecycleController useCaseMediatorLifecycleController :
- useCaseMediators) {
- UseCaseMediator useCaseMediator =
- useCaseMediatorLifecycleController.getUseCaseMediator();
- useCases.addAll(useCaseMediator.getUseCases());
+ for (LifecycleCamera lifecycleCamera :
+ cameraX.mLifecycleCameraRepository.getLifecycleCameras()) {
+ lifecycleCamera.unbindAll();
}
-
- unbind(useCases.toArray(new UseCase[0]));
}
/**
@@ -771,12 +704,12 @@
Collection<UseCase> activeUseCases = null;
- Collection<UseCaseMediatorLifecycleController> controllers =
- cameraX.mUseCaseMediatorRepository.getUseCaseMediators();
+ Collection<LifecycleCamera> lifecycleCameras =
+ cameraX.mLifecycleCameraRepository.getLifecycleCameras();
- for (UseCaseMediatorLifecycleController controller : controllers) {
- if (controller.getUseCaseMediator().isActive()) {
- activeUseCases = controller.getUseCaseMediator().getUseCases();
+ for (LifecycleCamera lifecycleCamera : lifecycleCameras) {
+ if (lifecycleCamera.isActive()) {
+ activeUseCases = lifecycleCamera.getUseCases();
break;
}
}
@@ -935,45 +868,6 @@
}
- private static Map<UseCase, Size> calculateSuggestedResolutions(
- @NonNull CameraInfoInternal cameraInfo,
- @NonNull List<UseCase> originalUseCases, @NonNull List<UseCase> newUseCases) {
- List<SurfaceConfig> existingSurfaces = new ArrayList<>();
- String cameraId = cameraInfo.getCameraId();
-
- // Collect original use cases for different camera devices
- for (UseCase useCase : originalUseCases) {
- SurfaceConfig surfaceConfig =
- getSurfaceManager().transformSurfaceConfig(cameraId,
- useCase.getImageFormat(),
- useCase.getAttachedSurfaceResolution());
- existingSurfaces.add(surfaceConfig);
- }
-
- Map<UseCaseConfig<?>, UseCase> configToUseCaseMap = new HashMap<>();
- for (UseCase useCase : newUseCases) {
- UseCaseConfig.Builder<?, ?, ?> defaultBuilder = useCase.getDefaultBuilder(cameraInfo);
-
- // Combine with default configuration.
- UseCaseConfig<?> combinedUseCaseConfig =
- useCase.applyDefaults(useCase.getUseCaseConfig(),
- defaultBuilder);
- configToUseCaseMap.put(combinedUseCaseConfig, useCase);
- }
-
- // Get suggested resolutions and update the use case session configuration
- Map<UseCaseConfig<?>, Size> useCaseConfigSizeMap = getSurfaceManager()
- .getSuggestedResolutions(cameraId, existingSurfaces,
- new ArrayList<>(configToUseCaseMap.keySet()));
-
- Map<UseCase, Size> suggestedResolutions = new HashMap<>();
- for (Map.Entry<UseCaseConfig<?>, UseCase> entry : configToUseCaseMap.entrySet()) {
- suggestedResolutions.put(entry.getValue(), useCaseConfigSizeMap.get(entry.getKey()));
- }
-
- return suggestedResolutions;
- }
-
/**
* Returns the {@link CameraDeviceSurfaceManager} instance.
*
@@ -1121,12 +1015,6 @@
}
}
- private UseCaseMediatorLifecycleController getOrCreateUseCaseMediator(
- LifecycleOwner lifecycleOwner) {
- return mUseCaseMediatorRepository.getOrCreateUseCaseMediator(
- lifecycleOwner, useCaseMediator -> useCaseMediator.setListener(mCameraRepository));
- }
-
private CameraRepository getCameraRepository() {
return mCameraRepository;
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCamera.java b/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCamera.java
new file mode 100644
index 0000000..28bc9bf
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCamera.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2019 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 androidx.camera.core;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.camera.core.internal.CameraUseCaseAdapter;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.Lifecycle.State;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.OnLifecycleEvent;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * A {@link CameraUseCaseAdapter} whose starting and stopping is controlled by a
+ * {@link Lifecycle}.
+ */
+final class LifecycleCamera implements LifecycleObserver, Camera {
+ private final Object mLock = new Object();
+
+ @GuardedBy("mLock")
+ // The lifecycle that controls the LifecycleCamera
+ private final LifecycleOwner mLifecycleOwner;
+
+ private final CameraUseCaseAdapter mCameraUseCaseAdapter;
+
+ @GuardedBy("mLock")
+ private volatile boolean mIsActive = false;
+
+ @GuardedBy("mLock")
+ private boolean mSuspended = false;
+
+ @GuardedBy("mLock")
+ private boolean mReleased = false;
+
+ /**
+ * Wraps an existing {@link CameraUseCaseAdapter} so it is controlled by lifecycle transitions.
+ */
+ LifecycleCamera(LifecycleOwner lifecycleOwner, CameraUseCaseAdapter cameraUseCaseAdaptor) {
+ mLifecycleOwner = lifecycleOwner;
+ mCameraUseCaseAdapter = cameraUseCaseAdaptor;
+ lifecycleOwner.getLifecycle().addObserver(this);
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_START)
+ public void onStart(LifecycleOwner lifecycleOwner) {
+ synchronized (mLock) {
+ if (!mSuspended && !mReleased) {
+ mCameraUseCaseAdapter.attachUseCases();
+ mIsActive = true;
+ }
+ }
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+ public void onStop(LifecycleOwner lifecycleOwner) {
+ synchronized (mLock) {
+ if (!mSuspended && !mReleased) {
+ mCameraUseCaseAdapter.detachUseCases();
+ mIsActive = false;
+ }
+ }
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+ public void onDestroy(LifecycleOwner lifecycleOwner) {
+ synchronized (mLock) {
+ mCameraUseCaseAdapter.removeUseCases(mCameraUseCaseAdapter.getUseCases());
+ }
+ }
+
+ /**
+ * Suspend the camera so that it ignore lifecycle events.
+ *
+ * <p> This will also close the {@link CameraUseCaseAdapter}.
+ *
+ * <p> This will be idempotent if the camera is already suspended.
+ */
+ public void suspend() {
+ synchronized (mLock) {
+ if (mSuspended) {
+ return;
+ }
+
+ onStop(mLifecycleOwner);
+ mSuspended = true;
+ }
+ }
+
+ /**
+ * Unsuspend the camera so it will start listening to lifecycle events.
+ *
+ * <p> This will also open the {@link CameraUseCaseAdapter} if the lifecycle is in a STARTED
+ * state or above.
+ *
+ * <p> This will be idempotent if the camera is already in an unsuspended state.
+ */
+ public void unsuspend() {
+ synchronized (mLock) {
+ if (!mSuspended) {
+ return;
+ }
+
+ mSuspended = false;
+ if (mLifecycleOwner.getLifecycle().getCurrentState().isAtLeast(State.STARTED)) {
+ onStart(mLifecycleOwner);
+ }
+ }
+ }
+
+ // TODO(b/154939118) remove when Extension.setExtension() is implemented since there no
+ // longer is a need to check if the camera is active.
+ public boolean isActive() {
+ synchronized (mLock) {
+ return mIsActive;
+ }
+ }
+
+ public boolean isBound(@NonNull UseCase useCase) {
+ synchronized (mLock) {
+ return mCameraUseCaseAdapter.getUseCases().contains(useCase);
+ }
+ }
+
+ @NonNull
+ public List<UseCase> getUseCases() {
+ synchronized (mLock) {
+ return Collections.unmodifiableList(mCameraUseCaseAdapter.getUseCases());
+ }
+ }
+
+ public CameraUseCaseAdapter getCameraUseCaseAdapter() {
+ return mCameraUseCaseAdapter;
+ }
+
+ /**
+ * Bind the UseCases to the lifecycle camera.
+ *
+ * <>This will attach the UseCases to the CameraUseCaseAdapter if successful.
+ *
+ * @throws CameraUseCaseAdapter.CameraException if unable to attach the UseCase to the camera.
+ */
+ void bind(Collection<UseCase> useCases) throws CameraUseCaseAdapter.CameraException {
+ synchronized (mLock) {
+ mCameraUseCaseAdapter.addUseCases(useCases);
+ for (UseCase useCase : useCases) {
+ useCase.notifyState();
+ }
+ }
+ }
+
+ /**
+ * Unbind the UseCases from the lifecycle camera.
+ *
+ * <>This will detach the UseCases from the CameraUseCaseAdapter.
+ */
+ void unbind(Collection<UseCase> useCases) {
+ synchronized (mLock) {
+ mCameraUseCaseAdapter.removeUseCases(useCases);
+ }
+ }
+
+ /**
+ * Unbind all of the UseCases from the lifecycle camera.
+ *
+ * <p>This will detach all UseCases from the CameraUseCaseAdapter.
+ */
+ void unbindAll() {
+ synchronized (mLock) {
+ mCameraUseCaseAdapter.removeUseCases(mCameraUseCaseAdapter.getUseCases());
+ }
+ }
+
+ /**
+ * Stops observing lifecycle changes.
+ *
+ * <p>Once released the wrapped {@link LifecycleCamera} is still valid, but will no longer be
+ * triggered by lifecycle state transitions. In order to observe lifecycle changes again a new
+ * {@link LifecycleCamera} instance should be created.
+ *
+ * <p>Calls subsequent to the first time will do nothing.
+ */
+ void release() {
+ synchronized (mLock) {
+ mReleased = true;
+ mIsActive = false;
+ mLifecycleOwner.getLifecycle().removeObserver(this);
+ }
+ }
+
+ @NonNull
+ @Override
+ public CameraControl getCameraControl() {
+ return mCameraUseCaseAdapter.getCameraControlInternal();
+ }
+
+ @NonNull
+ @Override
+ public CameraInfo getCameraInfo() {
+ return mCameraUseCaseAdapter.getCameraInfoInternal();
+ }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCameraRepository.java b/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCameraRepository.java
new file mode 100644
index 0000000..7b155ee
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/LifecycleCameraRepository.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2019 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 androidx.camera.core;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.camera.core.impl.CameraInternal;
+import androidx.camera.core.internal.CameraUseCaseAdapter;
+import androidx.core.util.Preconditions;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.Lifecycle.State;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.OnLifecycleEvent;
+
+import com.google.auto.value.AutoValue;
+
+import java.util.ArrayDeque;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A repository of {@link LifecycleCamera} instances.
+ *
+ * <p> This repository maps each unique pair of {@link LifecycleOwner} and set of
+ * {@link CameraInternal} to a single LifecycleCamera.
+ *
+ * <p> The repository ensures that only a single LifecycleCamera is active at a time so if the
+ * Lifecycle of a camera starts then it will take over as the current active camera. This means
+ * that at anytime only one of the LifecycleCamera in the repo will be in the unsuspended state.
+ * All others will be suspended.
+ *
+ * <p> When the Lifecycle of the most recently active camera stops then it will make sure
+ * that the next most recently started camera become the active camera.
+ *
+ * <p> A LifecycleCamera associated with the repository can also be released from the repository.
+ * When it is released, all UseCases bound to the LifecycleCamera will be unbound and the
+ * LifecycleCamera will be released.
+ */
+final class LifecycleCameraRepository {
+ final Object mLock = new Object();
+
+ @GuardedBy("mLock")
+ final Map<Key, LifecycleCamera> mCameraMap = new HashMap<>();
+
+ @GuardedBy("mLock")
+ final Map<Key, LifecycleCameraRepositoryObserver> mLifecycleObserverMap = new HashMap<>();
+
+ @GuardedBy("mLock")
+ private final ArrayDeque<Key> mActiveCameras = new ArrayDeque<>();
+
+ /**
+ * Create a new {@link LifecycleCamera} associated with the given {@link LifecycleOwner}.
+ *
+ * <p>The {@link LifecycleCamera} is set to be an observer of the {@link
+ * LifecycleOwner}.
+ *
+ * @param lifecycleOwner to associate with the LifecycleCamera
+ * @param cameraUseCaseAdaptor the CameraUseCaseAdapter to wrap in a LifecycleCamera
+ *
+ * @throws IllegalArgumentException if the LifecycleOwner is already in a destroyed state or
+ * if the repository already contains a LifecycleCamera that has the same LifecycleOwner and
+ * CameraInternal set as the CameraUseCaseAdapter.
+ */
+ LifecycleCamera createLifecycleCamera(
+ @NonNull LifecycleOwner lifecycleOwner,
+ @NonNull CameraUseCaseAdapter cameraUseCaseAdaptor) {
+ LifecycleCamera lifecycleCamera;
+ synchronized (mLock) {
+ Key key = Key.create(lifecycleOwner, cameraUseCaseAdaptor.getCameraId());
+ Preconditions.checkArgument(mCameraMap.get(key) == null, "LifecycleCamera already "
+ + "exists for the given LifecycleOwner and set of cameras");
+
+ if (lifecycleOwner.getLifecycle().getCurrentState() == State.DESTROYED) {
+ throw new IllegalArgumentException(
+ "Trying to create LifecycleCamera with destroyed lifecycle.");
+ }
+
+ // Need to add observer before creating LifecycleCamera to make sure
+ // it can be stopped before the latest active one is started.'
+ lifecycleCamera = new LifecycleCamera(lifecycleOwner, cameraUseCaseAdaptor);
+ registerCamera(key, lifecycleCamera);
+ }
+ return lifecycleCamera;
+ }
+
+ /**
+ * Get the LifecycleCamera which contains the same LifecycleOwner and a
+ * CameraUseCaseAdapter.CameraId.
+ *
+ * @return null if no such LifecycleCamera exists.
+ */
+ @Nullable
+ LifecycleCamera getLifecycleCamera(LifecycleOwner lifecycleOwner,
+ CameraUseCaseAdapter.CameraId cameraId) {
+ synchronized (mLock) {
+ return mCameraMap.get(Key.create(lifecycleOwner, cameraId));
+ }
+ }
+
+ /**
+ * Returns all the LifecycleCamera that have been created by the repository which haven't
+ * been destroyed yet.
+ */
+ Collection<LifecycleCamera> getLifecycleCameras() {
+ synchronized (mLock) {
+ return Collections.unmodifiableCollection(mCameraMap.values());
+ }
+ }
+
+ // Registers the LifecycleCamera in the repository so that the repository ensures that only one
+ // camera is active at one time.
+ private void registerCamera(Key key, LifecycleCamera lifecycleCamera) {
+ synchronized (mLock) {
+ LifecycleCameraRepositoryObserver observer =
+ new LifecycleCameraRepositoryObserver(key, this);
+ mLifecycleObserverMap.put(key, observer);
+ mCameraMap.put(key, lifecycleCamera);
+ key.getLifecycleOwner().getLifecycle().addObserver(observer);
+ }
+ }
+
+ // Unregisters the Lifecycle from the repository so it is no longer tracked by the repository.
+ // This does not stop the camera from receiving its lifecycle events. For the LifecycleCamera
+ // to stop receiving lifecycle event it must be done manually either before or after.
+ void unregisterCamera(Key key) {
+ synchronized (mLock) {
+ setInactive(key);
+ mCameraMap.remove(key);
+ LifecycleCameraRepositoryObserver observer = mLifecycleObserverMap.remove(key);
+ if (observer != null) {
+ key.getLifecycleOwner().getLifecycle().removeObserver(observer);
+ }
+
+ }
+ }
+
+ // Sets the LifecycleCamera with the associated key as the current active camera. This will
+ // suspend all other cameras which are tracked by the repository.
+ void setActive(Key key) {
+ synchronized (mLock) {
+ LifecycleCamera camera = mCameraMap.get(key);
+ if (camera != null) {
+
+ // Only keep the last {@link LifecycleOwner} active. Stop the others.
+ if (mActiveCameras.isEmpty()) {
+ mActiveCameras.push(key);
+ } else {
+ Key currentActiveCamera = mActiveCameras.peek();
+ if (currentActiveCamera != key) {
+ Preconditions.checkNotNull(
+ mCameraMap.get(currentActiveCamera)).suspend();
+ mActiveCameras.push(key);
+ }
+ }
+ camera.unsuspend();
+ }
+ }
+ }
+
+ // Removes the LifecycleCamera with the associated key from list of active cameras.
+ // If this camera was the current active camera then the next most recently active camera in
+ // the current active list will become the active camera.
+ void setInactive(Key key) {
+ synchronized (mLock) {
+ // Removes stopped lifecycleOwner from active list.
+ mActiveCameras.remove(key);
+
+ // Start up next LifecycleCamera if there are still active cameras
+ if (!mActiveCameras.isEmpty()) {
+ Preconditions.checkNotNull(
+ mCameraMap.get(mActiveCameras.peek())).unsuspend();
+ }
+ }
+ }
+
+ /**
+ * A key for mapping a {@link LifecycleOwner} and set of {@link CameraInternal} to a
+ * {@link LifecycleCamera}.
+ */
+ @AutoValue
+ abstract static class Key {
+ static Key create(@NonNull LifecycleOwner lifecycleOwner,
+ @NonNull CameraUseCaseAdapter.CameraId cameraId) {
+ return new AutoValue_LifecycleCameraRepository_Key(lifecycleOwner, cameraId);
+ }
+
+ @NonNull
+ public abstract LifecycleOwner getLifecycleOwner();
+
+ @NonNull
+ public abstract CameraUseCaseAdapter.CameraId getCameraId();
+ }
+
+ private static class LifecycleCameraRepositoryObserver implements LifecycleObserver {
+ private final LifecycleCameraRepository mLifecycleCameraRepository;
+ private final Key mKey;
+
+ LifecycleCameraRepositoryObserver(Key key,
+ LifecycleCameraRepository lifecycleCameraRepository) {
+ mKey = key;
+ mLifecycleCameraRepository = lifecycleCameraRepository;
+ }
+
+ /**
+ * Monitors which {@link LifecycleOwner} receives an ON_START event and then stop
+ * other {@link LifecycleCamera} to keep only one active at a time.
+ */
+ @OnLifecycleEvent(Lifecycle.Event.ON_START)
+ public void onStart(LifecycleOwner lifecycleOwner) {
+ mLifecycleCameraRepository.setActive(mKey);
+ }
+
+ /**
+ * Monitors which {@link LifecycleOwner} receives an ON_STOP event.
+ */
+ @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+ public void onStop(LifecycleOwner lifecycleOwner) {
+ mLifecycleCameraRepository.setInactive(mKey);
+ }
+
+ /**
+ * Monitors which {@link LifecycleOwner} receives an ON_DESTROY event and then
+ * removes any {@link LifecycleCamera} associated with it from this
+ * repository when that lifecycle is destroyed.
+ */
+ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+ public void onDestroy(LifecycleOwner lifecycleOwner) {
+ mLifecycleCameraRepository.unregisterCamera(mKey);
+ }
+ }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java b/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
index 7bff94e..a49dbb0 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
@@ -127,7 +127,7 @@
protected final void updateUseCaseConfig(@NonNull UseCaseConfig<?> useCaseConfig) {
// Attempt to retrieve builder containing defaults for this use case's config
UseCaseConfig.Builder<?, ?, ?> defaultBuilder =
- getDefaultBuilder(getCamera() == null ? null : getCamera().getCameraInfo());
+ getDefaultBuilder(getCamera() == null ? null : getCamera().getCameraInfoInternal());
// Combine with default configuration.
mUseCaseConfig = applyDefaults(useCaseConfig, defaultBuilder);
@@ -428,6 +428,7 @@
*/
@RestrictTo(Scope.LIBRARY_GROUP)
public void onAttach(@NonNull CameraInternal camera) {
+
synchronized (mCameraLock) {
mCamera = camera;
addStateChangeCallback(camera);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorLifecycleController.java b/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorLifecycleController.java
deleted file mode 100644
index b1b860a..0000000
--- a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorLifecycleController.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2019 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 androidx.camera.core;
-
-import androidx.annotation.GuardedBy;
-import androidx.camera.core.impl.UseCaseMediator;
-import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.Lifecycle.State;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.lifecycle.OnLifecycleEvent;
-
-/** A {@link UseCaseMediator} whose starting and stopping is controlled by a {@link Lifecycle}. */
-final class UseCaseMediatorLifecycleController implements LifecycleObserver {
- private final Object mUseCaseMediatorLock = new Object();
-
- @GuardedBy("mUseCaseMediatorLock")
- private final UseCaseMediator mUseCaseMediator;
-
- /** The lifecycle that controls the {@link UseCaseMediator}. */
- private final Lifecycle mLifecycle;
-
- /** Creates a new {@link UseCaseMediator} which gets controlled by lifecycle transitions. */
- UseCaseMediatorLifecycleController(Lifecycle lifecycle) {
- this(lifecycle, new UseCaseMediator());
- }
-
- /** Wraps an existing {@link UseCaseMediator} so it is controlled by lifecycle transitions. */
- UseCaseMediatorLifecycleController(Lifecycle lifecycle, UseCaseMediator useCaseMediator) {
- this.mUseCaseMediator = useCaseMediator;
- this.mLifecycle = lifecycle;
- lifecycle.addObserver(this);
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_START)
- public void onStart(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCaseMediatorLock) {
- mUseCaseMediator.start();
- }
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
- public void onStop(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCaseMediatorLock) {
- mUseCaseMediator.stop();
- }
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
- public void onDestroy(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCaseMediatorLock) {
- mUseCaseMediator.destroy();
- }
- }
-
- /**
- * Starts the underlying {@link UseCaseMediator} so that its {@link
- * UseCaseMediator.StateChangeCallback} can be notified.
- *
- * <p>This is required when the contained {@link Lifecycle} is in a STARTED state, since the
- * default state for a {@link UseCaseMediator} is inactive. The explicit call forces a check on
- * the actual state of the mediator.
- */
- void notifyState() {
- synchronized (mUseCaseMediatorLock) {
- if (mLifecycle.getCurrentState().isAtLeast(State.STARTED)) {
- mUseCaseMediator.start();
- }
- for (UseCase useCase : mUseCaseMediator.getUseCases()) {
- useCase.notifyState();
- }
- }
- }
-
- UseCaseMediator getUseCaseMediator() {
- synchronized (mUseCaseMediatorLock) {
- return mUseCaseMediator;
- }
- }
-
- /**
- * Stops observing lifecycle changes.
- *
- * <p>Once released the wrapped {@link UseCaseMediator} is still valid, but will no longer be
- * triggered by lifecycle state transitions. In order to observe lifecycle changes again a new
- * {@link UseCaseMediatorLifecycleController} instance should be created.
- *
- * <p>Calls subsequent to the first time will do nothing.
- */
- void release() {
- mLifecycle.removeObserver(this);
- }
-}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorRepository.java b/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorRepository.java
deleted file mode 100644
index c47c40f..0000000
--- a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseMediatorRepository.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) 2019 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 androidx.camera.core;
-
-import androidx.annotation.GuardedBy;
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-import androidx.camera.core.impl.UseCaseMediator;
-import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.Lifecycle.State;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.lifecycle.OnLifecycleEvent;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A repository of {@link UseCaseMediatorLifecycleController} instances.
- *
- * <p>Each {@link UseCaseMediatorLifecycleController} is associated with a {@link LifecycleOwner}
- * that regulates the common lifecycle shared by all the use cases in the mediator.
- */
-final class UseCaseMediatorRepository {
- final Object mUseCasesLock = new Object();
-
- @GuardedBy("mUseCasesLock")
- final Map<LifecycleOwner, UseCaseMediatorLifecycleController>
- mLifecycleToUseCaseMediatorControllerMap =
- new HashMap<>();
- @GuardedBy("mUseCasesLock")
- final List<LifecycleOwner> mActiveLifecycleOwnerList = new ArrayList<>();
- @GuardedBy("mUseCasesLock")
- LifecycleOwner mCurrentActiveLifecycleOwner = null;
-
- /**
- * Gets an existing {@link UseCaseMediatorLifecycleController} associated with the given {@link
- * LifecycleOwner}, or creates a new {@link UseCaseMediatorLifecycleController} if a mediator
- * does not already exist.
- *
- * <p>The {@link UseCaseMediatorLifecycleController} is set to be an observer of the {@link
- * LifecycleOwner}.
- *
- * @param lifecycleOwner to associate with the mediator
- */
- UseCaseMediatorLifecycleController getOrCreateUseCaseMediator(LifecycleOwner lifecycleOwner) {
- return getOrCreateUseCaseMediator(lifecycleOwner, useCaseMediator -> {
- });
- }
-
- /**
- * Gets an existing {@link UseCaseMediatorLifecycleController} associated with the given {@link
- * LifecycleOwner}, or creates a new {@link UseCaseMediatorLifecycleController} if a mediator
- * does not already exist.
- *
- * <p>The {@link UseCaseMediatorLifecycleController} is set to be an observer of the {@link
- * LifecycleOwner}.
- *
- * @param lifecycleOwner to associate with the mediator
- * @param mediatorSetup additional setup to do on the mediator if a new instance is created
- */
- UseCaseMediatorLifecycleController getOrCreateUseCaseMediator(
- LifecycleOwner lifecycleOwner, UseCaseMediatorSetup mediatorSetup) {
- UseCaseMediatorLifecycleController useCaseMediatorLifecycleController;
- synchronized (mUseCasesLock) {
- useCaseMediatorLifecycleController = mLifecycleToUseCaseMediatorControllerMap.get(
- lifecycleOwner);
- if (useCaseMediatorLifecycleController == null) {
- useCaseMediatorLifecycleController = createUseCaseMediator(lifecycleOwner);
- mediatorSetup.setup(useCaseMediatorLifecycleController.getUseCaseMediator());
- }
- }
- return useCaseMediatorLifecycleController;
- }
-
- /**
- * Creates a new {@link UseCaseMediatorLifecycleController} associated with the given {@link
- * LifecycleOwner} and adds the mediator to the repository.
- *
- * <p>The {@link UseCaseMediatorLifecycleController} is set to be an observer of the {@link
- * LifecycleOwner}.
- *
- * @param lifecycleOwner to associate with the mediator
- * @return a new {@link UseCaseMediatorLifecycleController}
- * @throws IllegalArgumentException if the {@link androidx.lifecycle.Lifecycle} of
- * lifecycleOwner is already
- * {@link androidx.lifecycle.Lifecycle.State.DESTROYED}.
- */
- private UseCaseMediatorLifecycleController createUseCaseMediator(
- LifecycleOwner lifecycleOwner) {
- if (lifecycleOwner.getLifecycle().getCurrentState() == State.DESTROYED) {
- throw new IllegalArgumentException(
- "Trying to create use case mediator with destroyed lifecycle.");
- }
-
- // Need to add observer before creating UseCaseMediatorLifecycleController to make sure
- // UseCaseMediators can be stopped before the latest active one is started.
- lifecycleOwner.getLifecycle().addObserver(createLifecycleObserver());
- UseCaseMediatorLifecycleController useCaseMediatorLifecycleController =
- new UseCaseMediatorLifecycleController(lifecycleOwner.getLifecycle());
- synchronized (mUseCasesLock) {
- mLifecycleToUseCaseMediatorControllerMap.put(lifecycleOwner,
- useCaseMediatorLifecycleController);
- }
- return useCaseMediatorLifecycleController;
- }
-
- /**
- * Creates a {@link LifecycleObserver} to monitor state change of {@link LifecycleOwner}.
- *
- * @return a new {@link LifecycleObserver}
- */
- private LifecycleObserver createLifecycleObserver() {
- return new LifecycleObserver() {
- /**
- * Monitors which {@link LifecycleOwner} receives an ON_START event and then stop
- * others {@link UseCaseMediator} to keep only one active at a time.
- */
- @OnLifecycleEvent(Lifecycle.Event.ON_START)
- public void onStart(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCasesLock) {
- // Only keep the last {@link LifecycleOwner} active. Stop the others.
- for (Map.Entry<LifecycleOwner, UseCaseMediatorLifecycleController> entry :
- mLifecycleToUseCaseMediatorControllerMap.entrySet()) {
- if (entry.getKey() != lifecycleOwner) {
- UseCaseMediator useCaseMediator = entry.getValue().getUseCaseMediator();
- if (useCaseMediator.isActive()) {
- useCaseMediator.stop();
- }
- }
- }
-
- mCurrentActiveLifecycleOwner = lifecycleOwner;
- mActiveLifecycleOwnerList.add(0, mCurrentActiveLifecycleOwner);
- }
- }
-
- /**
- * Monitors which {@link LifecycleOwner} receives an ON_STOP event.
- */
- @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
- public void onStop(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCasesLock) {
- // Removes stopped lifecycleOwner from active list.
- mActiveLifecycleOwnerList.remove(lifecycleOwner);
- if (mCurrentActiveLifecycleOwner == lifecycleOwner) {
- // If stopped lifecycleOwner is original active one, check whether there
- // is other active lifecycleOwner and start UseCaseMediator belong to it.
- if (mActiveLifecycleOwnerList.size() > 0) {
- mCurrentActiveLifecycleOwner = mActiveLifecycleOwnerList.get(0);
- mLifecycleToUseCaseMediatorControllerMap.get(
- mCurrentActiveLifecycleOwner).getUseCaseMediator().start();
- } else {
- mCurrentActiveLifecycleOwner = null;
- }
- }
- }
- }
-
- /**
- * Monitors which {@link LifecycleOwner} receives an ON_DESTROY event and then
- * removes any {@link UseCaseMediatorLifecycleController} associated with it from this
- * repository when that lifecycle is destroyed.
- */
- @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
- public void onDestroy(LifecycleOwner lifecycleOwner) {
- synchronized (mUseCasesLock) {
- mLifecycleToUseCaseMediatorControllerMap.remove(lifecycleOwner);
- }
- lifecycleOwner.getLifecycle().removeObserver(this);
- }
- };
- }
-
- Collection<UseCaseMediatorLifecycleController> getUseCaseMediators() {
- synchronized (mUseCasesLock) {
- return Collections.unmodifiableCollection(
- mLifecycleToUseCaseMediatorControllerMap.values());
- }
- }
-
- @VisibleForTesting
- Map<LifecycleOwner, UseCaseMediatorLifecycleController> getUseCasesMap() {
- synchronized (mUseCasesLock) {
- return mLifecycleToUseCaseMediatorControllerMap;
- }
- }
-
- /**
- * The interface for doing additional setup work on a newly created {@link UseCaseMediator}
- * instance.
- */
- public interface UseCaseMediatorSetup {
- void setup(@NonNull UseCaseMediator useCaseMediator);
- }
-}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java
index 25ccb0d..eb1bfe7 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java
@@ -23,7 +23,6 @@
import androidx.annotation.NonNull;
import androidx.camera.core.CameraUnavailableException;
import androidx.camera.core.InitializationException;
-import androidx.camera.core.UseCase;
import androidx.camera.core.impl.utils.executor.CameraXExecutors;
import androidx.camera.core.impl.utils.futures.Futures;
import androidx.concurrent.futures.CallbackToFutureAdapter;
@@ -40,11 +39,9 @@
/**
* A collection of {@link CameraInternal} instances.
*/
-public final class CameraRepository implements UseCaseMediator.StateChangeCallback {
+public final class CameraRepository {
private static final String TAG = "CameraRepository";
-
private final Object mCamerasLock = new Object();
-
@GuardedBy("mCamerasLock")
private final Map<String, CameraInternal> mCameras = new LinkedHashMap<>();
@GuardedBy("mCamerasLock")
@@ -53,7 +50,6 @@
private ListenableFuture<Void> mDeinitFuture;
@GuardedBy("mCamerasLock")
private CallbackToFutureAdapter.Completer<Void> mDeinitCompleter;
-
/**
* Initializes the repository from a {@link Context}.
*
@@ -72,7 +68,6 @@
}
}
}
-
/**
* Clear and release all cameras from the repository.
*/
@@ -85,7 +80,6 @@
if (mCameras.isEmpty()) {
return mDeinitFuture == null ? Futures.immediateFuture(null) : mDeinitFuture;
}
-
ListenableFuture<Void> currentFuture = mDeinitFuture;
if (currentFuture == null) {
// Create a single future that will be used to track closing of all cameras.
@@ -101,7 +95,6 @@
});
mDeinitFuture = currentFuture;
}
-
// Ensure all of the cameras have been added here before we start releasing so that
// if the first camera release finishes inline it won't complete the future prematurely.
mReleasingCameras.addAll(mCameras.values());
@@ -126,15 +119,12 @@
}
}, CameraXExecutors.directExecutor());
}
-
// Ensure all cameras are removed from the active "mCameras" map. This map can be
// repopulated by #init().
mCameras.clear();
-
return currentFuture;
}
}
-
/**
* Gets a {@link CameraInternal} for the given id.
*
@@ -146,15 +136,12 @@
public CameraInternal getCamera(@NonNull String cameraId) {
synchronized (mCamerasLock) {
CameraInternal cameraInternal = mCameras.get(cameraId);
-
if (cameraInternal == null) {
throw new IllegalArgumentException("Invalid camera: " + cameraId);
}
-
return cameraInternal;
}
}
-
/**
* Gets the set of all cameras.
*
@@ -166,7 +153,6 @@
return new LinkedHashSet<>(mCameras.values());
}
}
-
/**
* Gets the set of all camera ids.
*
@@ -178,53 +164,4 @@
return new LinkedHashSet<>(mCameras.keySet());
}
}
-
- /**
- * Attaches all the use cases in the {@link UseCaseMediator} and opens all the associated
- * cameras.
- *
- * <p>This will start streaming data to the uses cases which are also online.
- */
- @Override
- public void onActive(@NonNull UseCaseMediator useCaseMediator) {
- synchronized (mCamerasLock) {
- Map<String, Set<UseCase>> cameraIdToUseCaseMap =
- useCaseMediator.getCameraIdToUseCaseMap();
- for (Map.Entry<String, Set<UseCase>> cameraUseCaseEntry :
- cameraIdToUseCaseMap.entrySet()) {
- CameraInternal cameraInternal = getCamera(cameraUseCaseEntry.getKey());
- attachUseCasesToCamera(cameraInternal, cameraUseCaseEntry.getValue());
- }
- }
- }
-
- /** Attaches a set of use cases to a camera. */
- @GuardedBy("mCamerasLock")
- private void attachUseCasesToCamera(CameraInternal cameraInternal, Set<UseCase> useCases) {
- cameraInternal.attachUseCases(useCases);
- }
-
- /**
- * Detaches all the use cases in the {@link UseCaseMediator} and closes the camera with no
- * attached
- * use cases.
- */
- @Override
- public void onInactive(@NonNull UseCaseMediator useCaseMediator) {
- synchronized (mCamerasLock) {
- Map<String, Set<UseCase>> cameraIdToUseCaseMap =
- useCaseMediator.getCameraIdToUseCaseMap();
- for (Map.Entry<String, Set<UseCase>> cameraUseCaseEntry :
- cameraIdToUseCaseMap.entrySet()) {
- CameraInternal cameraInternal = getCamera(cameraUseCaseEntry.getKey());
- detachUseCasesFromCamera(cameraInternal, cameraUseCaseEntry.getValue());
- }
- }
- }
-
- /** Detaches a set of use cases from a camera. */
- @GuardedBy("mCamerasLock")
- private void detachUseCasesFromCamera(CameraInternal cameraInternal, Set<UseCase> useCases) {
- cameraInternal.detachUseCases(useCases);
- }
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseMediator.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseMediator.java
deleted file mode 100644
index 4703e74..0000000
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseMediator.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright 2019 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 androidx.camera.core.impl;
-
-import android.util.Log;
-
-import androidx.annotation.GuardedBy;
-import androidx.annotation.NonNull;
-import androidx.camera.core.UseCase;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A collection of {@link UseCase}.
- *
- * <p>The set of {@link UseCase} instances have synchronized interactions with the {@link
- * CameraInternal}.
- */
-
-public final class UseCaseMediator {
- private static final String TAG = "UseCaseMediator";
-
- /**
- * The lock for the single {@link StateChangeCallback} held by the mediator.
- *
- * <p>This lock is always acquired prior to acquiring the mUseCasesLock so that there is no
- * lock-ordering deadlock.
- */
- private final Object mListenerLock = new Object();
- /**
- * The lock for accessing the map of use case types to use case instances.
- *
- * <p>This lock is always acquired after acquiring the mListenerLock so that there is no
- * lock-ordering deadlock.
- */
- private final Object mUseCasesLock = new Object();
- @GuardedBy("mUseCasesLock")
- private final Set<UseCase> mUseCases = new HashSet<>();
- @GuardedBy("mListenerLock")
- private StateChangeCallback mStateChangeCallback;
- private volatile boolean mIsActive = false;
-
- /** Starts all the use cases so that they are brought into an online state. */
- public void start() {
- synchronized (mListenerLock) {
- if (mStateChangeCallback != null) {
- mStateChangeCallback.onActive(this);
- }
- mIsActive = true;
- }
- }
-
- /** Stops all the use cases so that they are brought into an offline state. */
- public void stop() {
- synchronized (mListenerLock) {
- if (mStateChangeCallback != null) {
- mStateChangeCallback.onInactive(this);
- }
- mIsActive = false;
- }
- }
-
- /** Sets the StateChangeCallback listener */
- public void setListener(@NonNull StateChangeCallback stateChangeCallback) {
- synchronized (mListenerLock) {
- this.mStateChangeCallback = stateChangeCallback;
- }
- }
-
- /**
- * Adds the {@link UseCase} to the mediator.
- *
- * @return true if the use case is added, or false if the use case already exists in the
- * mediator.
- */
- public boolean addUseCase(@NonNull UseCase useCase) {
- synchronized (mUseCasesLock) {
- return mUseCases.add(useCase);
- }
- }
-
- /** Returns true if the {@link UseCase} is contained in the mediator. */
- public boolean contains(@NonNull UseCase useCase) {
- synchronized (mUseCasesLock) {
- return mUseCases.contains(useCase);
- }
- }
-
- /**
- * Removes the {@link UseCase} from the mediator.
- *
- * @return Returns true if the use case is removed. Otherwise returns false (if the use case did
- * not exist in the mediator).
- */
- public boolean removeUseCase(@NonNull UseCase useCase) {
- synchronized (mUseCasesLock) {
- return mUseCases.remove(useCase);
- }
- }
-
- /**
- * Called when lifecycle ends. Destroys all use cases in this mediator.
- */
- public void destroy() {
- List<UseCase> useCasesToClear = new ArrayList<>();
- synchronized (mUseCasesLock) {
- useCasesToClear.addAll(mUseCases);
- mUseCases.clear();
- }
-
- for (UseCase useCase : useCasesToClear) {
- Log.d(TAG, "Destroying use case: " + useCase.getName());
- useCase.onDetach(useCase.getCamera());
- useCase.onDestroy();
- }
- }
-
- /**
- * Returns the collection of all the use cases currently contained by
- * the{@link UseCaseMediator}.
- */
- @NonNull
- public Collection<UseCase> getUseCases() {
- synchronized (mUseCasesLock) {
- return Collections.unmodifiableCollection(mUseCases);
- }
- }
-
- /** Returns the map of all the use cases to its attached camera id. */
- @NonNull
- public Map<String, Set<UseCase>> getCameraIdToUseCaseMap() {
- Map<String, Set<UseCase>> cameraIdToUseCases = new HashMap<>();
- synchronized (mUseCasesLock) {
- for (UseCase useCase : mUseCases) {
- CameraInternal attachedCamera = useCase.getCamera();
- if (attachedCamera != null) {
- String cameraId = attachedCamera.getCameraInfoInternal().getCameraId();
- Set<UseCase> useCaseSet = cameraIdToUseCases.get(cameraId);
- if (useCaseSet == null) {
- useCaseSet = new HashSet<>();
- }
- useCaseSet.add(useCase);
- cameraIdToUseCases.put(cameraId, useCaseSet);
- }
- }
- }
- return Collections.unmodifiableMap(cameraIdToUseCases);
- }
-
- public boolean isActive() {
- return mIsActive;
- }
-
- /**
- * Listener called when a {@link UseCaseMediator} transitions between active/inactive states
- * .
- */
- public interface StateChangeCallback {
- /**
- * Called when a {@link UseCaseMediator} becomes active.
- *
- * <p>When a {@link UseCaseMediator} is active then all the contained {@link UseCase} become
- * online. This means that the {@link CameraInternal} should transition to a state as
- * close as possible to producing, but prior to actually producing data for the use case.
- */
- void onActive(@NonNull UseCaseMediator useCaseMediator);
-
- /**
- * Called when a {@link UseCaseMediator} becomes inactive.
- *
- * <p>When a {@link UseCaseMediator} is active then all the contained {@link UseCase} become
- * offline.
- */
- void onInactive(@NonNull UseCaseMediator useCaseMediator);
- }
-}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java b/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
index ae1a46b..30ae34b 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
@@ -32,26 +32,36 @@
import androidx.camera.core.impl.CameraInternal;
import androidx.camera.core.impl.SurfaceConfig;
import androidx.camera.core.impl.UseCaseConfig;
+import androidx.core.util.Preconditions;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
/**
* A {@link CameraInternal} adapter which checks that the UseCases to make sure that the resolutions
* and image formats can be supported.
+ *
+ * <p> The CameraUseCaseAdapter wraps a set of CameraInternals which it can dynamically switch
+ * between based on different configurations that are required by the adapter. This is used by
+ * extensions in order to select the correct CameraInternal instance which has the required
+ * camera id.
*/
public final class CameraUseCaseAdapter {
private final CameraInternal mCameraInternal;
+ private final LinkedHashSet<CameraInternal> mCameraInternals;
private final CameraDeviceSurfaceManager mCameraDeviceSurfaceManager;
private static final String TAG = "CameraUseCaseAdapter";
+ private final CameraId mId;
+
@GuardedBy("mLock")
- private final List<UseCase> mAttachedUseCases = new ArrayList<>();
+ private final List<UseCase> mUseCases = new ArrayList<>();
@GuardedBy("mLock")
@Nullable
@@ -59,20 +69,52 @@
private final Object mLock = new Object();
+ // This indicates whether or not the UseCases that have been added to this adapter has
+ // actually been attached to the CameraInternal instance.
+ @GuardedBy("mLock")
+ private boolean mAttached = true;
+
/**
* Create a new {@link CameraUseCaseAdapter} instance.
*
- * @param cameraInternal the actual camera implementation that is wrapped
+ * @param cameraInternal the actual camera implementation that is current attached
+ * @param cameras the set of cameras that are wrapped
* @param cameraDeviceSurfaceManager A class that checks for whether a specific camera
* can support the set of Surface with set resolutions.
*/
public CameraUseCaseAdapter(@NonNull CameraInternal cameraInternal,
+ @NonNull LinkedHashSet<CameraInternal> cameras,
@NonNull CameraDeviceSurfaceManager cameraDeviceSurfaceManager) {
mCameraInternal = cameraInternal;
+ mCameraInternals = new LinkedHashSet<>(cameras);
+ mId = new CameraId(mCameraInternals);
mCameraDeviceSurfaceManager = cameraDeviceSurfaceManager;
}
/**
+ * Generate a identifier for the set of {@link CameraInternal}.
+ */
+ @NonNull
+ public static CameraId generateCameraId(@NonNull LinkedHashSet<CameraInternal> cameras) {
+ return new CameraId(cameras);
+ }
+
+ /**
+ * Returns the identifier for this {@link CameraUseCaseAdapter}.
+ */
+ @NonNull
+ public CameraId getCameraId() {
+ return mId;
+ }
+
+ /**
+ * Returns true if the {@link CameraUseCaseAdapter} is an equivalent camera.
+ */
+ public boolean isEquivalent(@NonNull CameraUseCaseAdapter cameraUseCaseAdapter) {
+ return mId.equals(cameraUseCaseAdapter.getCameraId());
+ }
+
+ /**
* Set the viewport that will be used for the {@link UseCase} attached to the camera.
*/
public void setViewPort(@Nullable ViewPort viewPort) {
@@ -85,8 +127,6 @@
* Check to see if the set of {@link UseCase} can be attached to the camera.
*
* <p> This does not take into account UseCases which are already attached to the camera.
- *
- * @throws CameraException
*/
public void checkAttachUseCases(@NonNull List<UseCase> useCases) throws CameraException {
// Only do resolution calculation if UseCases were bound
@@ -104,19 +144,19 @@
}
/**
- * Attach the specified collection of {@link UseCase} to the camera.
+ * Add the specified collection of {@link UseCase} to the adapter.
*
- * @throws CameraException Thrown if the combination of newly attached UseCases and the
- * currently attached UseCases exceed the capability of the camera.
+ * @throws CameraException Thrown if the combination of newly added UseCases and the
+ * currently added UseCases exceed the capability of the camera.
*/
@UseExperimental(markerClass = androidx.camera.core.ExperimentalUseCaseGroup.class)
- public void attachUseCases(@NonNull Collection<UseCase> useCases) throws CameraException {
+ public void addUseCases(@NonNull Collection<UseCase> useCases) throws CameraException {
synchronized (mLock) {
- List<UseCase> useCaseListAfterUpdate = new ArrayList<>(mAttachedUseCases);
+ List<UseCase> useCaseListAfterUpdate = new ArrayList<>(mUseCases);
List<UseCase> newUseCases = new ArrayList<>();
for (UseCase useCase : useCases) {
- if (mAttachedUseCases.contains(useCase)) {
+ if (mUseCases.contains(useCase)) {
Log.e(TAG, "Attempting to attach already attached UseCase");
} else {
useCaseListAfterUpdate.add(useCase);
@@ -133,8 +173,8 @@
Map<UseCase, Size> suggestedResolutionsMap;
try {
suggestedResolutionsMap =
- calculateSuggestedResolutions(newUseCases, mAttachedUseCases);
- } catch (IllegalArgumentException e) {
+ calculateSuggestedResolutions(newUseCases, mUseCases);
+ } catch (IllegalArgumentException e) {
throw new CameraException(e.getMessage());
}
@@ -157,23 +197,26 @@
// Do all attaching related work
for (UseCase useCase : newUseCases) {
useCase.onAttach(mCameraInternal);
- useCase.updateSuggestedResolution(suggestedResolutionsMap.get(useCase));
+ useCase.updateSuggestedResolution(
+ Preconditions.checkNotNull(suggestedResolutionsMap.get(useCase)));
}
- mAttachedUseCases.addAll(newUseCases);
- mCameraInternal.attachUseCases(newUseCases);
+ mUseCases.addAll(newUseCases);
+ if (mAttached) {
+ mCameraInternal.attachUseCases(newUseCases);
+ }
}
}
/**
- * Detached the specified collection of {@link UseCase} from the camera.
+ * Remove the specified collection of {@link UseCase} from the adapter.
*/
- public void detachUseCases(@NonNull Collection<UseCase> useCases) {
+ public void removeUseCases(@NonNull Collection<UseCase> useCases) {
synchronized (mLock) {
mCameraInternal.detachUseCases(useCases);
for (UseCase useCase : useCases) {
- if (mAttachedUseCases.contains(useCase)) {
+ if (mUseCases.contains(useCase)) {
useCase.onDetach(mCameraInternal);
useCase.onDestroy();
} else {
@@ -181,7 +224,49 @@
}
}
- mAttachedUseCases.removeAll(useCases);
+ mUseCases.removeAll(useCases);
+ }
+ }
+
+ /**
+ * Returns the UseCases currently associated with the adapter.
+ *
+ * <p> The UseCases may or may not be actually attached to the underlying
+ * {@link CameraInternal} instance.
+ */
+ @NonNull
+ public List<UseCase> getUseCases() {
+ synchronized (mLock) {
+ return mUseCases;
+ }
+ }
+
+ /**
+ * Attach the UseCases to the {@link CameraInternal} camera so that the UseCases can receive
+ * data if they are active.
+ *
+ * <p> This will start the underlying {@link CameraInternal} instance.
+ */
+ public void attachUseCases() {
+ synchronized (mLock) {
+ if (!mAttached) {
+ mCameraInternal.attachUseCases(mUseCases);
+ mAttached = true;
+ }
+ }
+ }
+
+ /**
+ * Detach the UseCases from the {@link CameraInternal} so that the UseCases stop receiving data.
+ *
+ * <p> This will stop the underlying {@link CameraInternal} instance.
+ */
+ public void detachUseCases() {
+ synchronized (mLock) {
+ if (mAttached) {
+ mCameraInternal.detachUseCases(mUseCases);
+ mAttached = false;
+ }
}
}
@@ -224,14 +309,6 @@
return suggestedResolutions;
}
- /**
- * Get the {@link CameraInternal} instance that is wrapped by this {@link CameraUseCaseAdapter}.
- */
- @NonNull
- public CameraInternal getCameraInternal() {
- return mCameraInternal;
- }
-
@NonNull
public CameraInfoInternal getCameraInfoInternal() {
return mCameraInternal.getCameraInfoInternal();
@@ -243,6 +320,36 @@
}
/**
+ * An identifier for a {@link CameraUseCaseAdapter}.
+ *
+ * <p>This identifies the actual camera instances that are wrapped by the
+ * CameraUseCaseAdapter and is used to determine if 2 different instances of
+ * CameraUseCaseAdapter are actually equivalent.
+ */
+ public static final class CameraId {
+ private final List<String> mIds;
+ CameraId(LinkedHashSet<CameraInternal> cameraInternals) {
+ mIds = new ArrayList<>();
+ for (CameraInternal cameraInternal : cameraInternals) {
+ mIds.add(cameraInternal.getCameraInfoInternal().getCameraId());
+ }
+ }
+
+ @Override
+ public boolean equals(Object cameraId) {
+ if (cameraId instanceof CameraId) {
+ return mIds.equals(((CameraId) cameraId).mIds);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return 53 * mIds.hashCode();
+ }
+ }
+
+ /**
* An exception thrown when the {@link CameraUseCaseAdapter} errors in one of its operations.
*/
public static final class CameraException extends Exception {
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/CameraSelectorTest.java b/camera/camera-core/src/test/java/androidx/camera/core/CameraSelectorTest.java
index b10f261..60de785 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/CameraSelectorTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/CameraSelectorTest.java
@@ -19,24 +19,16 @@
import static org.mockito.Mockito.mock;
-import android.content.Context;
import android.os.Build;
import androidx.annotation.experimental.UseExperimental;
import androidx.camera.core.impl.CameraControlInternal;
-import androidx.camera.core.impl.CameraDeviceSurfaceManager;
import androidx.camera.core.impl.CameraInternal;
-import androidx.camera.core.impl.ExtendableUseCaseConfigFactory;
-import androidx.camera.core.impl.UseCaseConfigFactory;
import androidx.camera.testing.fakes.FakeCamera;
-import androidx.camera.testing.fakes.FakeCameraDeviceSurfaceManager;
import androidx.camera.testing.fakes.FakeCameraFactory;
import androidx.camera.testing.fakes.FakeCameraInfoInternal;
-import androidx.camera.testing.fakes.FakeUseCaseConfig;
-import androidx.test.core.app.ApplicationProvider;
import androidx.test.filters.SmallTest;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -62,16 +54,6 @@
@Before
public void setUp() throws ExecutionException, InterruptedException {
- Context context = ApplicationProvider.getApplicationContext();
- CameraDeviceSurfaceManager.Provider surfaceManagerProvider =
- ignored -> new FakeCameraDeviceSurfaceManager();
- UseCaseConfigFactory.Provider configFactoryProvider = ignored -> {
- ExtendableUseCaseConfigFactory defaultConfigFactory =
- new ExtendableUseCaseConfigFactory();
- defaultConfigFactory.installDefaultProvider(FakeUseCaseConfig.class,
- cameraInfo -> new FakeUseCaseConfig.Builder().getUseCaseConfig());
- return defaultConfigFactory;
- };
FakeCameraFactory cameraFactory = new FakeCameraFactory();
mRearCamera = new FakeCamera(mock(CameraControlInternal.class),
new FakeCameraInfoInternal(REAR_ROTATION_DEGREE,
@@ -83,17 +65,6 @@
CameraSelector.LENS_FACING_FRONT));
cameraFactory.insertCamera(CameraSelector.LENS_FACING_FRONT, FRONT_ID, () -> mFrontCamera);
mCameras.add(mFrontCamera);
- CameraXConfig.Builder appConfigBuilder =
- new CameraXConfig.Builder()
- .setCameraFactoryProvider((ignored1, ignored2) -> cameraFactory)
- .setDeviceSurfaceManagerProvider(surfaceManagerProvider)
- .setUseCaseConfigFactoryProvider(configFactoryProvider);
- CameraX.initialize(context, appConfigBuilder.build()).get();
- }
-
- @After
- public void tearDown() throws ExecutionException, InterruptedException {
- CameraX.shutdown().get();
}
@Test
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
index 8f218f4..701319c 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
@@ -111,7 +111,8 @@
public void camerasAreReleasedByDeinit() throws ExecutionException, InterruptedException {
List<CameraInternal> cameraInternals = new ArrayList<>();
for (String cameraId : mCameraRepository.getCameraIds()) {
- cameraInternals.add(mCameraRepository.getCamera(cameraId));
+ cameraInternals.add(
+ mCameraRepository.getCamera(cameraId));
}
ListenableFuture<Void> deinitFuture = mCameraRepository.deinit();
diff --git a/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt b/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
index d7c6615..01f99dc 100644
--- a/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
+++ b/camera/camera-lifecycle/src/androidTest/java/androidx/camera/lifecycle/ProcessCameraProviderTest.kt
@@ -19,6 +19,7 @@
import androidx.camera.core.CameraSelector
import androidx.annotation.experimental.UseExperimental
import androidx.camera.core.CameraXConfig
+import androidx.camera.core.Preview
import androidx.camera.testing.fakes.FakeAppConfig
import androidx.camera.testing.fakes.FakeLifecycleOwner
import androidx.concurrent.futures.await
@@ -37,7 +38,10 @@
class ProcessCameraProviderTest {
private val context = ApplicationProvider.getApplicationContext() as android.content.Context
- private val lifecycleOwner = FakeLifecycleOwner()
+ private val lifecycleOwner0 = FakeLifecycleOwner()
+ private val lifecycleOwner1 = FakeLifecycleOwner()
+
+ private var provider: ProcessCameraProvider? = null
@After
fun tearDown() {
@@ -75,7 +79,7 @@
fun configuredGetInstance_returnsProvider() {
ProcessCameraProvider.configureInstance(FakeAppConfig.create())
runBlocking {
- val provider = ProcessCameraProvider.getInstance(context).await()
+ provider = ProcessCameraProvider.getInstance(context).await()
assertThat(provider).isNotNull()
}
}
@@ -103,10 +107,120 @@
fun canRetrieveCamera_withZeroUseCases() {
ProcessCameraProvider.configureInstance(FakeAppConfig.create())
runBlocking(MainScope().coroutineContext) {
- val provider = ProcessCameraProvider.getInstance(context).await()
+ provider = ProcessCameraProvider.getInstance(context).await()
val camera =
- provider.bindToLifecycle(lifecycleOwner, CameraSelector.DEFAULT_BACK_CAMERA)
+ provider!!.bindToLifecycle(lifecycleOwner0, CameraSelector.DEFAULT_BACK_CAMERA)
assertThat(camera).isNotNull()
}
}
+
+ @Test
+ fun bindUseCase_isBound() {
+ ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+ runBlocking(MainScope().coroutineContext) {
+ provider = ProcessCameraProvider.getInstance(context).await()
+ val useCase = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+ provider!!.bindToLifecycle(
+ lifecycleOwner0, CameraSelector.DEFAULT_BACK_CAMERA,
+ useCase
+ )
+
+ assertThat(provider!!.isBound(useCase)).isTrue()
+ }
+ }
+
+ @Test
+ fun bindSecondUseCaseToDifferentLifecycle_firstUseCaseStillBound() {
+ ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+ runBlocking(MainScope().coroutineContext) {
+ provider = ProcessCameraProvider.getInstance(context).await()
+
+ val useCase0 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+ val useCase1 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+ provider!!.bindToLifecycle(
+ lifecycleOwner0, CameraSelector.DEFAULT_BACK_CAMERA,
+ useCase0
+ )
+ provider!!.bindToLifecycle(
+ lifecycleOwner1, CameraSelector.DEFAULT_BACK_CAMERA,
+ useCase1
+ )
+
+ // TODO(b/158595693) Add check on whether or not camera for fakeUseCase0 should be
+ // exist or not
+ // assertThat(fakeUseCase0.camera).isNotNull() (or isNull()?)
+ assertThat(provider!!.isBound(useCase0)).isTrue()
+ assertThat(useCase1.camera).isNotNull()
+ assertThat(provider!!.isBound(useCase1)).isTrue()
+ }
+ }
+
+ @Test
+ fun isNotBound_afterUnbind() {
+ ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+ runBlocking(MainScope().coroutineContext) {
+ provider = ProcessCameraProvider.getInstance(context).await()
+
+ val useCase = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+ provider!!.bindToLifecycle(
+ lifecycleOwner0,
+ CameraSelector.DEFAULT_BACK_CAMERA,
+ useCase
+ )
+
+ provider!!.unbind(useCase)
+
+ assertThat(provider!!.isBound(useCase)).isFalse()
+ }
+ }
+
+ @Test
+ fun unbindFirstUseCase_secondUseCaseStillBound() {
+ ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+ runBlocking(MainScope().coroutineContext) {
+ provider = ProcessCameraProvider.getInstance(context).await()
+
+ val useCase0 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+ val useCase1 = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+ provider!!.bindToLifecycle(
+ lifecycleOwner0, CameraSelector.DEFAULT_BACK_CAMERA,
+ useCase0, useCase1
+ )
+
+ provider!!.unbind(useCase0)
+
+ assertThat(useCase0.camera).isNull()
+ assertThat(provider!!.isBound(useCase0)).isFalse()
+ assertThat(useCase1.camera).isNotNull()
+ assertThat(provider!!.isBound(useCase1)).isTrue()
+ }
+ }
+
+ @Test
+ fun unbindAll_unbindsAllUseCasesFromCameras() {
+ ProcessCameraProvider.configureInstance(FakeAppConfig.create())
+
+ runBlocking(MainScope().coroutineContext) {
+ provider = ProcessCameraProvider.getInstance(context).await()
+
+ val useCase = Preview.Builder().setSessionOptionUnpacker { _, _ -> }.build()
+
+ provider!!.bindToLifecycle(
+ lifecycleOwner0, CameraSelector.DEFAULT_BACK_CAMERA, useCase
+ )
+
+ provider!!.unbindAll()
+
+ assertThat(useCase.camera).isNull()
+ assertThat(provider!!.isBound(useCase)).isFalse()
+ }
+ }
}
\ No newline at end of file
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCamera.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCamera.java
index 0640d95..a03ce63 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCamera.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCamera.java
@@ -44,7 +44,9 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
* A fake camera which will not produce any data, but provides a valid Camera implementation.
@@ -58,6 +60,7 @@
private final CameraInfoInternal mCameraInfoInternal;
private String mCameraId;
private UseCaseAttachState mUseCaseAttachState;
+ private Set<UseCase> mAttachedUseCases = new HashSet<>();
private State mState = State.CLOSED;
private int mAvailableCameraCount = 1;
@@ -236,6 +239,8 @@
return;
}
+ mAttachedUseCases.addAll(useCases);
+
Log.d(TAG, "Use cases " + useCases + " ATTACHED for camera " + mCameraId);
for (UseCase useCase : useCases) {
mUseCaseAttachState.setUseCaseAttached(useCase.getName() + useCase.hashCode(),
@@ -257,6 +262,8 @@
return;
}
+ mAttachedUseCases.removeAll(useCases);
+
Log.d(TAG, "Use cases " + useCases + " DETACHED for camera " + mCameraId);
for (UseCase useCase : useCases) {
mUseCaseAttachState.setUseCaseDetached(useCase.getName() + useCase.hashCode());
@@ -271,6 +278,11 @@
updateCaptureSessionConfig();
}
+ @NonNull
+ public Set<UseCase> getAttachedUseCases() {
+ return mAttachedUseCases;
+ }
+
// Returns fixed CameraControlInternal instance in order to verify the instance is correctly
// attached.
@NonNull
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisBaseTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisBaseTest.kt
new file mode 100644
index 0000000..1966794
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisBaseTest.kt
@@ -0,0 +1,109 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.content.Intent
+import androidx.camera.testing.CameraUtil
+import androidx.camera.testing.CoreAppTestUtil
+import androidx.test.core.app.ActivityScenario
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.Assume
+import java.util.concurrent.TimeUnit
+
+/**
+ * Base class for rotation image analysis tests.
+ *
+ * The flow of the tests is:
+ * - Launch the activity
+ * - Wait fo the camera to be set up
+ * - Rotate
+ * - Wait a couple of frames
+ * - Verify the image analysis image rotation
+ */
+abstract class ImageAnalysisBaseTest<A : CameraActivity> {
+
+ protected fun setUp(lensFacing: Int) {
+ CoreAppTestUtil.assumeCompatibleDevice()
+ Assume.assumeTrue(CameraUtil.hasCameraWithLensFacing(lensFacing))
+
+ // Clear the device's UI and ensure it's in a natural orientation
+ CoreAppTestUtil.clearDeviceUI(InstrumentationRegistry.getInstrumentation())
+ val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+ device.setOrientationNatural()
+ }
+
+ protected fun tearDown() {
+ val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+ device.unfreezeRotation()
+ }
+
+ protected inline fun <reified A : CameraActivity> verifyRotation(
+ lensFacing: Int,
+ rotate: ActivityScenario<A>.() -> Unit
+ ) {
+ val activityScenario: ActivityScenario<A> = launchActivity(lensFacing)
+ activityScenario.use { scenario ->
+
+ // Wait until the camera is set up and analysis starts receiving frames
+ scenario.waitOnCameraFrames()
+
+ // Rotate
+ rotate(scenario)
+
+ // Reset received camera frames count
+ scenario.resetFramesCount()
+
+ // Wait a couple of frames after rotation
+ scenario.waitOnCameraFrames()
+
+ // Image rotation is correct if equal to sensor rotation relative to target rotation
+ val (sensorToTargetRotation, imageRotationDegrees) = scenario.withActivity {
+ Pair(getSensorRotationRelativeToAnalysisTargetRotation(), mAnalysisImageRotation)
+ }
+ assertThat(sensorToTargetRotation).isEqualTo(imageRotationDegrees)
+ }
+ }
+
+ protected inline fun <reified A : CameraActivity> launchActivity(lensFacing: Int):
+ ActivityScenario<A> {
+ val intent = Intent(
+ ApplicationProvider.getApplicationContext(),
+ A::class.java
+ ).apply {
+ putExtra(CameraActivity.KEY_LENS_FACING, lensFacing)
+ }
+ return ActivityScenario.launch<A>(intent)
+ }
+
+ protected inline fun <reified A : CameraActivity> ActivityScenario<A>.waitOnCameraFrames() {
+ val analysisRunning = withActivity { mAnalysisRunning }
+ assertThat(analysisRunning.tryAcquire(IMAGES_COUNT, TIMEOUT, TimeUnit.SECONDS)).isTrue()
+ }
+
+ protected inline fun <reified A : CameraActivity> ActivityScenario<A>.resetFramesCount() {
+ withActivity { mAnalysisRunning.drainPermits() }
+ }
+
+ companion object {
+ protected const val IMAGES_COUNT = 30
+ protected const val TIMEOUT = 5L
+ }
+}
\ No newline at end of file
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisLockedOrientationTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisLockedOrientationTest.kt
new file mode 100644
index 0000000..873c254
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisLockedOrientationTest.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import androidx.camera.core.CameraSelector
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.rule.GrantPermissionRule
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageAnalysisLockedOrientationTest(
+ private val lensFacing: Int,
+ private val rotationDegrees: Int
+) : ImageAnalysisBaseTest<LockedOrientationActivity>() {
+
+ companion object {
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, rotationDegrees={1}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, 0))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, 90))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, 180))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, 270))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, 0))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, 90))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, 180))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, 270))
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<LockedOrientationActivity>(lensFacing) {
+ rotate(rotationDegrees)
+ }
+ }
+
+ private fun ActivityScenario<LockedOrientationActivity>.rotate(rotationDegrees: Int) {
+ onActivity { activity ->
+ activity.mOrientationEventListener.onOrientationChanged(rotationDegrees)
+ }
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisOrientationConfigChangesTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisOrientationConfigChangesTest.kt
new file mode 100644
index 0000000..0f8ab55
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisOrientationConfigChangesTest.kt
@@ -0,0 +1,93 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.view.Surface
+import androidx.camera.core.CameraSelector
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import java.util.concurrent.TimeUnit
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageAnalysisOrientationConfigChangesTest(
+ private val lensFacing: Int,
+ private val rotation: Int
+) : ImageAnalysisBaseTest<OrientationConfigChangesOverriddenActivity>() {
+
+ companion object {
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, rotation={1}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_0))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_90))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_180))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_270))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_0))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_90))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_180))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_270))
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<OrientationConfigChangesOverriddenActivity>(lensFacing) {
+ if (rotate(rotation)) {
+
+ // Wait for the rotation to occur
+ waitForRotation()
+ }
+ }
+ }
+
+ private fun ActivityScenario<OrientationConfigChangesOverriddenActivity>.rotate(rotation: Int):
+ Boolean {
+ val currentRotation = withActivity { this.display!!.rotation }
+ InstrumentationRegistry.getInstrumentation().uiAutomation.setRotation(rotation)
+ return currentRotation != rotation
+ }
+
+ private fun ActivityScenario<OrientationConfigChangesOverriddenActivity>.waitForRotation() {
+ val displayChanged = withActivity { mDisplayChanged }
+ assertThat(displayChanged.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisUnlockedOrientationTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisUnlockedOrientationTest.kt
new file mode 100644
index 0000000..7ebe9f6
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageAnalysisUnlockedOrientationTest.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
+import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
+import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
+import android.content.res.Configuration
+import androidx.camera.core.CameraSelector
+import androidx.camera.integration.uiwidgets.rotations.UnlockedOrientationActivity.Companion.mCreated
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.rule.GrantPermissionRule
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import java.util.concurrent.Semaphore
+import java.util.concurrent.TimeUnit
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageAnalysisUnlockedOrientationTest(
+ private val lensFacing: Int,
+ private val orientation: Int
+) : ImageAnalysisBaseTest<UnlockedOrientationActivity>() {
+
+ companion object {
+ private val ORIENTATION_MAP = hashMapOf(
+ SCREEN_ORIENTATION_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
+ SCREEN_ORIENTATION_REVERSE_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
+ SCREEN_ORIENTATION_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE,
+ SCREEN_ORIENTATION_REVERSE_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE
+ )
+
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, orientation={1}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_PORTRAIT))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_REVERSE_PORTRAIT))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_LANDSCAPE))
+ add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_REVERSE_LANDSCAPE))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_PORTRAIT))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_REVERSE_PORTRAIT))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_LANDSCAPE))
+ add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_REVERSE_LANDSCAPE))
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<UnlockedOrientationActivity>(lensFacing) {
+ if (rotate(orientation)) {
+
+ // Wait for the rotation to occur
+ waitForRotation()
+ }
+ }
+ }
+
+ private fun ActivityScenario<UnlockedOrientationActivity>.rotate(orientation: Int): Boolean {
+ val currentOrientation = withActivity { resources.configuration.orientation }
+ val didRotate = ORIENTATION_MAP[orientation] != currentOrientation
+ mCreated = Semaphore(0)
+ onActivity { activity ->
+ activity.requestedOrientation = orientation
+ }
+ return didRotate
+ }
+
+ private fun waitForRotation() {
+ assertThat(mCreated.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureBaseTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureBaseTest.kt
new file mode 100644
index 0000000..65fdb18a
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureBaseTest.kt
@@ -0,0 +1,163 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.content.Intent
+import android.os.Build
+import android.view.View
+import androidx.camera.core.CameraSelector
+import androidx.camera.integration.uiwidgets.R
+import androidx.camera.testing.CameraUtil
+import androidx.camera.testing.CoreAppTestUtil
+import androidx.test.core.app.ActivityScenario
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.Assume
+import org.junit.Assume.assumeFalse
+import java.util.concurrent.TimeUnit
+
+/**
+ * Base class for rotation image capture tests.
+ *
+ * The flow of the tests is:
+ * - Launch the activity
+ * - Wait fo the camera to be set up
+ * - Rotate
+ * - Wait a couple of frames
+ * - Take a picture
+ * - Wait for the image capture callback
+ * - Verify the picture's rotation or resolution
+ */
+abstract class ImageCaptureBaseTest<A : CameraActivity> {
+
+ protected fun setUp(lensFacing: Int) {
+ // TODO(b/147448711) Cuttlefish seems to have an issue handling rotation. Might be
+ // related to the attached bug.
+ assumeFalse(
+ "Cuttlefish does not correctly handle rotating. Unable to test.",
+ Build.MODEL.contains("Cuttlefish")
+ )
+
+ CoreAppTestUtil.assumeCompatibleDevice()
+ Assume.assumeTrue(CameraUtil.hasCameraWithLensFacing(lensFacing))
+
+ // Clear the device's UI and ensure it's in a natural orientation
+ CoreAppTestUtil.clearDeviceUI(InstrumentationRegistry.getInstrumentation())
+ val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+ device.setOrientationNatural()
+ }
+
+ protected fun tearDown() {
+ val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+ device.unfreezeRotation()
+ }
+
+ protected inline fun <reified A : CameraActivity> verifyRotation(
+ lensFacing: Int,
+ captureMode: Int,
+ rotate: ActivityScenario<A>.() -> Unit
+ ) {
+ val activityScenario: ActivityScenario<A> = launchActivity(lensFacing, captureMode)
+ activityScenario.use { scenario ->
+
+ // Wait until the camera is set up and analysis starts receiving frames
+ scenario.waitOnCameraFrames()
+
+ // Rotate
+ rotate(scenario)
+
+ // Reset received camera frames count
+ scenario.resetFramesCount()
+
+ // Wait a couple of frames after rotation
+ scenario.waitOnCameraFrames()
+
+ // Take picture
+ scenario.onActivity {
+ val view = it.findViewById<View>(R.id.previewView)
+ view.performClick()
+ }
+
+ // Wait until a picture is taken and the capture callback is invoked
+ val captureDone = scenario.withActivity { mCaptureDone }
+ assertThat(captureDone.tryAcquire(TIMEOUT, TimeUnit.SECONDS)).isTrue()
+
+ // If the camera HAL doesn't rotate the image, the captured image should contain a
+ // rotation that's equal to the sensor rotation relative to target rotation
+ val (sensorToTargetRotation, imageRotationDegrees) = scenario.withActivity {
+ Pair(
+ getSensorRotationRelativeToCaptureTargetRotation(),
+ mCaptureResult?.getRotation()
+ )
+ }
+ val areRotationsEqual = sensorToTargetRotation == imageRotationDegrees
+
+ // If the camera HAL did rotate the image, verifying the image's rotation isn't
+ // possible, so we make sure the image has the correct orientation/resolution.
+ val (expectedResolution, imageSize) = scenario.withActivity {
+ Pair(getCaptureResolution(), mCaptureResult?.getResolution())
+ }
+ val areResolutionsEqual = expectedResolution == imageSize
+
+ assertThat(areRotationsEqual || areResolutionsEqual).isTrue()
+
+ // Delete captured image
+ scenario.withActivity { mCaptureResult?.delete() ?: Unit }
+ }
+ }
+
+ protected inline fun <reified A : CameraActivity> launchActivity(
+ lensFacing: Int,
+ captureMode: Int
+ ): ActivityScenario<A> {
+ val intent = Intent(
+ ApplicationProvider.getApplicationContext(),
+ A::class.java
+ ).apply {
+ putExtra(CameraActivity.KEY_LENS_FACING, lensFacing)
+ putExtra(CameraActivity.KEY_IMAGE_CAPTURE_MODE, captureMode)
+ }
+ return ActivityScenario.launch<A>(intent)
+ }
+
+ protected inline fun <reified A : CameraActivity> ActivityScenario<A>.waitOnCameraFrames() {
+ val analysisRunning = withActivity { mAnalysisRunning }
+ assertThat(analysisRunning.tryAcquire(IMAGES_COUNT, TIMEOUT, TimeUnit.SECONDS)).isTrue()
+ }
+
+ protected inline fun <reified A : CameraActivity> ActivityScenario<A>.resetFramesCount() {
+ withActivity { mAnalysisRunning.drainPermits() }
+ }
+
+ companion object {
+ protected const val IMAGES_COUNT = 30
+ protected const val TIMEOUT = 5L
+ @JvmStatic
+ protected val captureModes = arrayOf(
+ CameraActivity.IMAGE_CAPTURE_MODE_IN_MEMORY,
+ CameraActivity.IMAGE_CAPTURE_MODE_FILE,
+ CameraActivity.IMAGE_CAPTURE_MODE_OUTPUT_STREAM,
+ CameraActivity.IMAGE_CAPTURE_MODE_MEDIA_STORE
+ )
+ @JvmStatic
+ protected val lensFacing =
+ arrayOf(CameraSelector.LENS_FACING_BACK, CameraSelector.LENS_FACING_FRONT)
+ }
+}
\ No newline at end of file
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureLockedOrientationTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureLockedOrientationTest.kt
new file mode 100644
index 0000000..28a89cc
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureLockedOrientationTest.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.rule.GrantPermissionRule
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageCaptureLockedOrientationTest(
+ private val lensFacing: Int,
+ private val rotationDegrees: Int,
+ private val captureMode: Int
+) : ImageCaptureBaseTest<LockedOrientationActivity>() {
+
+ companion object {
+ private val rotationDegrees = arrayOf(0, 90, 180, 270)
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, rotationDegrees={1}, captureMode={2}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ lensFacing.forEach { lens ->
+ rotationDegrees.forEach { rotation ->
+ captureModes.forEach { mode ->
+ add(arrayOf(lens, rotation, mode))
+ }
+ }
+ }
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<LockedOrientationActivity>(lensFacing, captureMode) {
+ rotate(rotationDegrees)
+ }
+ }
+
+ private fun ActivityScenario<LockedOrientationActivity>.rotate(rotationDegrees: Int) {
+ onActivity { activity ->
+ activity.mOrientationEventListener.onOrientationChanged(rotationDegrees)
+ }
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt
new file mode 100644
index 0000000..e27786e
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureOrientationConfigChangesTest.kt
@@ -0,0 +1,102 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.view.Surface
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import java.util.concurrent.TimeUnit
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageCaptureOrientationConfigChangesTest(
+ private val lensFacing: Int,
+ private val rotation: Int,
+ private val captureMode: Int
+) : ImageCaptureBaseTest<OrientationConfigChangesOverriddenActivity>() {
+
+ companion object {
+ private val rotations = arrayOf(
+ Surface.ROTATION_0,
+ Surface.ROTATION_90,
+ Surface.ROTATION_180,
+ Surface.ROTATION_270
+ )
+
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, rotation={1}, captureMode={2}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ lensFacing.forEach { lens ->
+ rotations.forEach { rotation ->
+ captureModes.forEach { mode ->
+ add(arrayOf(lens, rotation, mode))
+ }
+ }
+ }
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<OrientationConfigChangesOverriddenActivity>(
+ lensFacing,
+ captureMode
+ ) {
+ if (rotate(rotation)) {
+
+ // Wait for the rotation to occur
+ waitForRotation()
+ }
+ }
+ }
+
+ private fun ActivityScenario<OrientationConfigChangesOverriddenActivity>.rotate(rotation: Int):
+ Boolean {
+ val currentRotation = withActivity { this.display!!.rotation }
+ InstrumentationRegistry.getInstrumentation().uiAutomation.setRotation(rotation)
+ return currentRotation != rotation
+ }
+
+ private fun ActivityScenario<OrientationConfigChangesOverriddenActivity>.waitForRotation() {
+ val displayChanged = withActivity { mDisplayChanged }
+ assertThat(displayChanged.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureUnlockedOrientationTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureUnlockedOrientationTest.kt
new file mode 100644
index 0000000..10ec2b4
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureUnlockedOrientationTest.kt
@@ -0,0 +1,103 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.content.pm.ActivityInfo
+import android.content.res.Configuration
+import androidx.camera.integration.uiwidgets.rotations.UnlockedOrientationActivity.Companion.mCreated
+import androidx.test.core.app.ActivityScenario
+import androidx.test.filters.LargeTest
+import androidx.test.rule.GrantPermissionRule
+import androidx.testutils.withActivity
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import java.util.concurrent.Semaphore
+import java.util.concurrent.TimeUnit
+
+@RunWith(Parameterized::class)
+@LargeTest
+class ImageCaptureUnlockedOrientationTest(
+ private val lensFacing: Int,
+ private val orientation: Int,
+ private val captureMode: Int
+) : ImageCaptureBaseTest<UnlockedOrientationActivity>() {
+
+ companion object {
+ val ORIENTATION_MAP = hashMapOf(
+ ActivityInfo.SCREEN_ORIENTATION_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
+ ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE,
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE
+ )
+
+ @JvmStatic
+ @Parameterized.Parameters(name = "lensFacing={0}, orientation={1}, captureMode={2}")
+ fun data() = mutableListOf<Array<Any?>>().apply {
+ lensFacing.forEach { lens ->
+ ORIENTATION_MAP.keys.forEach { orientation ->
+ captureModes.forEach { mode ->
+ add(arrayOf(lens, orientation, mode))
+ }
+ }
+ }
+ }
+ }
+
+ @get:Rule
+ val mCameraPermissionRule: GrantPermissionRule =
+ GrantPermissionRule.grant(*CameraActivity.PERMISSIONS)
+
+ @Before
+ fun before() {
+ setUp(lensFacing)
+ }
+
+ @After
+ fun after() {
+ tearDown()
+ }
+
+ @Test
+ fun verifyRotation() {
+ verifyRotation<UnlockedOrientationActivity>(lensFacing, captureMode) {
+ if (rotate(orientation)) {
+
+ // Wait for the rotation to occur
+ waitForRotation()
+ }
+ }
+ }
+
+ private fun ActivityScenario<UnlockedOrientationActivity>.rotate(orientation: Int): Boolean {
+ val currentOrientation = withActivity { resources.configuration.orientation }
+ val didRotate = ORIENTATION_MAP[orientation] != currentOrientation
+ mCreated = Semaphore(0)
+ onActivity { activity ->
+ activity.requestedOrientation = orientation
+ }
+ return didRotate
+ }
+
+ private fun waitForRotation() {
+ assertThat(mCreated.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
+ }
+}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/LockedOrientationActivityTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/LockedOrientationActivityTest.kt
deleted file mode 100644
index e026c9a..0000000
--- a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/LockedOrientationActivityTest.kt
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 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 androidx.camera.integration.uiwidgets.rotations.imageanalysis
-
-import android.Manifest
-import android.content.Context
-import android.content.Intent
-import androidx.camera.camera2.Camera2Config
-import androidx.camera.core.CameraSelector
-import androidx.camera.core.CameraX
-import androidx.camera.integration.uiwidgets.rotations.CameraActivity
-import androidx.camera.integration.uiwidgets.rotations.LockedOrientationActivity
-import androidx.camera.testing.CameraUtil
-import androidx.camera.testing.CoreAppTestUtil
-import androidx.test.core.app.ActivityScenario
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.LargeTest
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.rule.GrantPermissionRule
-import androidx.test.uiautomator.UiDevice
-import androidx.testutils.withActivity
-import com.google.common.truth.Truth.assertThat
-import org.junit.After
-import org.junit.Assume
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
-
-/**
- * On device rotation, an Activity with a locked orientation isn't recreated, and it's UI remains
- * the same, as the screen rotation ({@link Display#getRotation()}) remains unchanged.
- * <p>
- * Testing that the camera use cases produce images with the correct rotation as a device running
- * an Activity with a locked orientation rotates can be done as follows:
- * - Launching the Activity
- * - Waiting for the camera setup to finish
- * - Simulating a physical device rotation by calling {@link
- * OrientationEventListener#onOrientationChanged(int)}.
- * - Waiting for the camera use cases to receive new images
- * - Verifying the use cases' image rotation
- */
-@RunWith(Parameterized::class)
-@LargeTest
-class LockedOrientationActivityTest(private val lensFacing: Int, private val rotationDegrees: Int) {
-
- companion object {
- private const val IMAGES_COUNT = 10
-
- @JvmStatic
- @Parameterized.Parameters(name = "lensFacing={0}, rotationDegrees={1}")
- fun data() = mutableListOf<Array<Any?>>().apply {
- add(arrayOf(CameraSelector.LENS_FACING_BACK, 0))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, 90))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, 180))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, 270))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, 0))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, 90))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, 180))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, 270))
- }
- }
-
- @get:Rule
- val mCameraPermissionRule: GrantPermissionRule =
- GrantPermissionRule.grant(Manifest.permission.CAMERA)
-
- @Before
- fun setUp() {
- CoreAppTestUtil.assumeCompatibleDevice()
- Assume.assumeTrue(CameraUtil.hasCameraWithLensFacing(lensFacing))
-
- // Initialize CameraX
- val context = ApplicationProvider.getApplicationContext<Context>()
- val config = Camera2Config.defaultConfig()
- CameraX.initialize(context, config).get()
-
- // Clear the device's UI and ensure it's in a natural orientation
- CoreAppTestUtil.clearDeviceUI(InstrumentationRegistry.getInstrumentation())
- val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
- uiDevice.setOrientationNatural()
- }
-
- @After
- fun tearDown() {
- CameraX.shutdown().get()
- }
-
- @Test
- fun analyzedImageRotation() {
- launchActivity(lensFacing).use { scenario ->
-
- // Wait until camera is set up, and Analyzer is running
- val analysisRunning = scenario.withActivity { mAnalysisRunning }
- assertThat(analysisRunning.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
-
- // Rotate device
- scenario.rotate(rotationDegrees)
-
- // Wait for Analyzer to receive new images
- assertThat(analysisRunning.tryAcquire(IMAGES_COUNT, 5, TimeUnit.SECONDS)).isTrue()
-
- // Image rotation is correct if equal to sensor rotation relative to target rotation
- val (sensorToTargetRotation, imageRotationDegrees) = scenario.withActivity {
- Pair(getSensorRotationRelativeToAnalysisTargetRotation(), mAnalysisImageRotation)
- }
- assertThat(sensorToTargetRotation).isEqualTo(imageRotationDegrees)
- }
- }
-
- private fun launchActivity(lensFacing: Int): ActivityScenario<LockedOrientationActivity> {
- val intent = Intent(
- ApplicationProvider.getApplicationContext<Context>(),
- LockedOrientationActivity::class.java
- )
- intent.putExtra(CameraActivity.KEY_LENS_FACING, lensFacing)
- return ActivityScenario.launch<LockedOrientationActivity>(intent)
- }
-
- private fun ActivityScenario<LockedOrientationActivity>.rotate(rotationDegrees: Int) {
- onActivity { activity ->
- activity.mOrientationEventListener.onOrientationChanged(rotationDegrees)
- }
- }
-}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/OrientationConfigChangesOverriddenActivityTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/OrientationConfigChangesOverriddenActivityTest.kt
deleted file mode 100644
index 4549155..0000000
--- a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/OrientationConfigChangesOverriddenActivityTest.kt
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 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 androidx.camera.integration.uiwidgets.rotations.imageanalysis
-
-import android.Manifest
-import android.content.Context
-import android.content.Intent
-import android.view.Surface
-import androidx.camera.camera2.Camera2Config
-import androidx.camera.core.CameraSelector
-import androidx.camera.core.CameraX
-import androidx.camera.integration.uiwidgets.rotations.CameraActivity
-import androidx.camera.integration.uiwidgets.rotations.OrientationConfigChangesOverriddenActivity
-import androidx.camera.testing.CameraUtil
-import androidx.camera.testing.CoreAppTestUtil
-import androidx.test.core.app.ActivityScenario
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.LargeTest
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.rule.GrantPermissionRule
-import androidx.test.uiautomator.UiDevice
-import androidx.testutils.withActivity
-import com.google.common.truth.Truth.assertThat
-import org.junit.After
-import org.junit.Assume
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import java.util.concurrent.TimeUnit
-
-/**
- * On device rotation, an Activity that overrides orientation configuration changes isn't
- * recreated, but it's UI is updated to match the screen rotation ({@link Display#getRotation()}).
- * <p>
- * Testing that the camera use cases produce images with the correct rotation as a device running
- * an Activity that overrides orientation configuration changes rotates can be done as follows:
- * - Launching the Activity
- * - Waiting for the camera setup to finish
- * - Simulating a physical device rotation by calling {@link UiAutomation#setRotation(int)}.
- * - Waiting for the camera use cases to receive new images
- * - Verifying the use cases' image rotation
- */
-@RunWith(Parameterized::class)
-@LargeTest
-class OrientationConfigChangesOverriddenActivityTest(
- private val lensFacing: Int,
- private val rotation: Int
-) {
-
- companion object {
- private const val IMAGES_COUNT = 10
-
- @JvmStatic
- @Parameterized.Parameters(name = "lensFacing={0}, rotation={1}")
- fun data() = mutableListOf<Array<Any?>>().apply {
- add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_0))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_90))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_180))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, Surface.ROTATION_270))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_0))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_90))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_180))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, Surface.ROTATION_270))
- }
- }
-
- @get:Rule
- val mCameraPermissionRule: GrantPermissionRule =
- GrantPermissionRule.grant(Manifest.permission.CAMERA)
-
- @Before
- fun setUp() {
- CoreAppTestUtil.assumeCompatibleDevice()
- Assume.assumeTrue(CameraUtil.hasCameraWithLensFacing(lensFacing))
-
- // Initialize CameraX
- val context = ApplicationProvider.getApplicationContext<Context>()
- val config = Camera2Config.defaultConfig()
- CameraX.initialize(context, config).get()
-
- // Clear the device's UI and ensure it's in a natural orientation
- CoreAppTestUtil.clearDeviceUI(InstrumentationRegistry.getInstrumentation())
- val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
- uiDevice.setOrientationNatural()
- }
-
- @After
- fun tearDown() {
- CameraX.shutdown().get()
- }
-
- @Test
- fun analyzedImageRotation() {
- launchActivity(lensFacing).use { scenario ->
-
- // Wait until camera is set up, and Analyzer is running
- val analysisRunning = scenario.withActivity { mAnalysisRunning }
- assertThat(analysisRunning.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
-
- // Rotate device
- if (scenario.rotate(rotation)) {
-
- // Wait for the display to change
- val displayChanged = scenario.withActivity { mDisplayChanged }
- assertThat(displayChanged.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
-
- // Wait for Analyzer to receive new images
- assertThat(analysisRunning.tryAcquire(IMAGES_COUNT, 5, TimeUnit.SECONDS)).isTrue()
- }
-
- // Image rotation is correct if equal to sensor rotation relative to target rotation
- val (sensorToTargetRotation, imageRotationDegrees) = scenario.withActivity {
- Pair(getSensorRotationRelativeToAnalysisTargetRotation(), mAnalysisImageRotation)
- }
- assertThat(sensorToTargetRotation).isEqualTo(imageRotationDegrees)
- }
- }
-
- private fun launchActivity(lensFacing: Int):
- ActivityScenario<OrientationConfigChangesOverriddenActivity> {
- val intent = Intent(
- ApplicationProvider.getApplicationContext<Context>(),
- OrientationConfigChangesOverriddenActivity::class.java
- )
- intent.putExtra(CameraActivity.KEY_LENS_FACING, lensFacing)
- return ActivityScenario.launch<OrientationConfigChangesOverriddenActivity>(intent)
- }
-
- private fun ActivityScenario<OrientationConfigChangesOverriddenActivity>.rotate(rotation: Int):
- Boolean {
- val currentRotation = withActivity { this.display!!.rotation }
- InstrumentationRegistry.getInstrumentation().uiAutomation.setRotation(rotation)
- return currentRotation != rotation
- }
-}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/UnlockedOrientationActivityTest.kt b/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/UnlockedOrientationActivityTest.kt
deleted file mode 100644
index eccd02e..0000000
--- a/camera/integration-tests/uiwidgetstestapp/src/androidTest/java/androidx/camera/integration/uiwidgets/rotations/imageanalysis/UnlockedOrientationActivityTest.kt
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright 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 androidx.camera.integration.uiwidgets.rotations.imageanalysis
-
-import android.Manifest
-import android.content.Context
-import android.content.Intent
-import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
-import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
-import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
-import android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
-import android.content.res.Configuration
-import androidx.camera.camera2.Camera2Config
-import androidx.camera.core.CameraSelector
-import androidx.camera.core.CameraX
-import androidx.camera.integration.uiwidgets.rotations.CameraActivity
-import androidx.camera.integration.uiwidgets.rotations.UnlockedOrientationActivity
-import androidx.camera.integration.uiwidgets.rotations.UnlockedOrientationActivity.Companion.mCreated
-import androidx.camera.testing.CameraUtil
-import androidx.camera.testing.CoreAppTestUtil
-import androidx.test.core.app.ActivityScenario
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.LargeTest
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.rule.GrantPermissionRule
-import androidx.test.uiautomator.UiDevice
-import androidx.testutils.withActivity
-import com.google.common.truth.Truth.assertThat
-import org.junit.After
-import org.junit.Assume
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import java.util.concurrent.Semaphore
-import java.util.concurrent.TimeUnit
-
-/**
- * On device rotation, an Activity with an unlocked orientation is destroyed, and a new instance
- * of it is created.
- * <p>
- * Testing that the camera use cases produce images with the correct rotation as a device
- * running an Activity that has an unlocked orientation rotates can be done as follows:
- * - Launching the Activity
- * - Waiting for the camera setup to finish
- * - Setting a new orientation to the Activity. This results in the system destroying it, and
- * creating a new instance of it with the specified orientation.
- * - Waiting for the camera setup to finish
- * - Verifying the use cases' image rotation
- */
-@RunWith(Parameterized::class)
-@LargeTest
-class UnlockedOrientationActivityTest(private val lensFacing: Int, private val orientation: Int) {
-
- companion object {
- private val ORIENTATION_MAP = hashMapOf(
- SCREEN_ORIENTATION_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
- SCREEN_ORIENTATION_REVERSE_PORTRAIT to Configuration.ORIENTATION_PORTRAIT,
- SCREEN_ORIENTATION_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE,
- SCREEN_ORIENTATION_REVERSE_LANDSCAPE to Configuration.ORIENTATION_LANDSCAPE
- )
-
- @JvmStatic
- @Parameterized.Parameters(name = "lensFacing={0}, orientation={1}")
- fun data() = mutableListOf<Array<Any?>>().apply {
- add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_PORTRAIT))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_REVERSE_PORTRAIT))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_LANDSCAPE))
- add(arrayOf(CameraSelector.LENS_FACING_BACK, SCREEN_ORIENTATION_REVERSE_LANDSCAPE))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_PORTRAIT))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_REVERSE_PORTRAIT))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_LANDSCAPE))
- add(arrayOf(CameraSelector.LENS_FACING_FRONT, SCREEN_ORIENTATION_REVERSE_LANDSCAPE))
- }
- }
-
- @get:Rule
- val mCameraPermissionRule: GrantPermissionRule =
- GrantPermissionRule.grant(Manifest.permission.CAMERA)
-
- @Before
- fun setUp() {
- CoreAppTestUtil.assumeCompatibleDevice()
- Assume.assumeTrue(CameraUtil.hasCameraWithLensFacing(lensFacing))
-
- // Initialize CameraX
- val context = ApplicationProvider.getApplicationContext<Context>()
- val config = Camera2Config.defaultConfig()
- CameraX.initialize(context, config).get()
-
- // Clear the device's UI and ensure it's in a natural orientation
- CoreAppTestUtil.clearDeviceUI(InstrumentationRegistry.getInstrumentation())
- val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
- uiDevice.setOrientationNatural()
- }
-
- @After
- fun tearDown() {
- CameraX.shutdown().get()
- }
-
- @Test
- fun analyzedImageRotation() {
- launchActivity(lensFacing).use { scenario ->
-
- // Wait until camera is set up, and Analyzer is running
- val analysisRunning1 = scenario.withActivity { mAnalysisRunning }
- assertThat(analysisRunning1.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
-
- // Rotate to specified orientation
- if (scenario.rotate(orientation)) {
-
- // Wait until the activity is rotated (and recreated)
- assertThat(mCreated.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
-
- // Wait until camera is set up, and Analyzer is running
- val analysisRunning2 = scenario.withActivity { mAnalysisRunning }
- assertThat(analysisRunning1).isNotSameInstanceAs(analysisRunning2)
- assertThat(analysisRunning2.tryAcquire(5, TimeUnit.SECONDS)).isTrue()
- }
-
- // Image rotation is correct if equal to sensor rotation relative to target rotation
- val (sensorToTargetRotation, imageRotationDegrees) = scenario.withActivity {
- Pair(getSensorRotationRelativeToAnalysisTargetRotation(), mAnalysisImageRotation)
- }
- assertThat(sensorToTargetRotation).isEqualTo(imageRotationDegrees)
- }
- }
-
- private fun launchActivity(lensFacing: Int): ActivityScenario<UnlockedOrientationActivity> {
- val intent = Intent(
- ApplicationProvider.getApplicationContext<Context>(),
- UnlockedOrientationActivity::class.java
- )
- intent.putExtra(CameraActivity.KEY_LENS_FACING, lensFacing)
- return ActivityScenario.launch<UnlockedOrientationActivity>(intent)
- }
-
- private fun ActivityScenario<UnlockedOrientationActivity>.rotate(orientation: Int): Boolean {
- val currentOrientation = withActivity { resources.configuration.orientation }
- val didRotate = ORIENTATION_MAP[orientation] != currentOrientation
- // Rotate
- onActivity { activity ->
- mCreated = Semaphore(0)
- activity.requestedOrientation = orientation
- }
- return didRotate
- }
-}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/main/AndroidManifest.xml b/camera/integration-tests/uiwidgetstestapp/src/main/AndroidManifest.xml
index 3f58bb8..46c13d2 100644
--- a/camera/integration-tests/uiwidgetstestapp/src/main/AndroidManifest.xml
+++ b/camera/integration-tests/uiwidgetstestapp/src/main/AndroidManifest.xml
@@ -39,5 +39,6 @@
</application>
<uses-permission android:name="android.permission.CAMERA" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
\ No newline at end of file
diff --git a/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
index ac35c412..6e55523 100644
--- a/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
+++ b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/CameraActivity.kt
@@ -23,6 +23,7 @@
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
+import android.util.Size
import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.Camera
@@ -32,7 +33,6 @@
import androidx.camera.core.ImageCaptureException
import androidx.camera.core.ImageProxy
import androidx.camera.core.Preview
-import androidx.camera.core.impl.utils.Exif
import androidx.camera.core.impl.utils.executor.CameraXExecutors
import androidx.camera.integration.uiwidgets.R
import androidx.camera.lifecycle.ProcessCameraProvider
@@ -160,15 +160,15 @@
CameraXExecutors.mainThreadExecutor(),
object : ImageCapture.OnImageCapturedCallback() {
override fun onCaptureSuccess(image: ImageProxy) {
- mCapturedImageRotation = image.imageInfo.rotationDegrees
+ mCaptureResult = ImageCaptureResult.InMemory(image)
mCaptureDone.release()
- Log.d(TAG, "InMemory captured image rotation = $mCapturedImageRotation")
image.close()
+ Log.d(TAG, "MediaStore captured successful")
}
override fun onError(exception: ImageCaptureException) {
- Log.e(TAG, "InMemory capture failed", exception)
mCaptureDone.release()
+ Log.e(TAG, "InMemory capture failed", exception)
}
})
}
@@ -181,14 +181,14 @@
CameraXExecutors.mainThreadExecutor(),
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
- mCapturedImageRotation = Exif.createFromFile(imageFile).rotation
+ mCaptureResult = ImageCaptureResult.FileOrOutputStream(imageFile)
mCaptureDone.release()
- Log.d(TAG, "File captured image rotation = $mCapturedImageRotation")
+ Log.d(TAG, "MediaStore captured successful")
}
override fun onError(exception: ImageCaptureException) {
- Log.e(TAG, "File capture failed", exception)
mCaptureDone.release()
+ Log.e(TAG, "File capture failed", exception)
}
})
}
@@ -202,14 +202,14 @@
CameraXExecutors.mainThreadExecutor(),
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
- mCapturedImageRotation = Exif.createFromFile(imageFile).rotation
+ mCaptureResult = ImageCaptureResult.FileOrOutputStream(imageFile)
mCaptureDone.release()
- Log.d(TAG, "OutputStream captured image rotation = $mCapturedImageRotation")
+ Log.d(TAG, "MediaStore captured successful")
}
override fun onError(exception: ImageCaptureException) {
- Log.e(TAG, "OutputStream capture failed", exception)
mCaptureDone.release()
+ Log.e(TAG, "OutputStream capture failed", exception)
}
})
}
@@ -227,15 +227,15 @@
CameraXExecutors.mainThreadExecutor(),
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
- val inputStream = contentResolver.openInputStream(outputFileResults.savedUri!!)
- mCapturedImageRotation = Exif.createFromInputStream(inputStream!!).rotation
+ mCaptureResult =
+ ImageCaptureResult.MediaStore(contentResolver, outputFileResults.savedUri!!)
mCaptureDone.release()
- Log.d(TAG, "MediaStore captured image rotation = $mCapturedImageRotation")
+ Log.d(TAG, "MediaStore captured successful")
}
override fun onError(exception: ImageCaptureException) {
- Log.e(TAG, "MediaStore capture failed", exception)
mCaptureDone.release()
+ Log.e(TAG, "MediaStore capture failed", exception)
}
})
}
@@ -259,14 +259,33 @@
val mCaptureDone = Semaphore(0)
@VisibleForTesting
- var mCapturedImageRotation = -1
- // Todo: Delete captured images when test finishes
+ var mCaptureResult: ImageCaptureResult? = null
@VisibleForTesting
fun getSensorRotationRelativeToAnalysisTargetRotation(): Int {
val targetRotation = mImageAnalysis.targetRotation
return mCamera.cameraInfo.getSensorRotationDegrees(targetRotation)
}
+
+ @VisibleForTesting
+ fun getSensorRotationRelativeToCaptureTargetRotation(): Int {
+ val targetRotation = mImageCapture.targetRotation
+ return mCamera.cameraInfo.getSensorRotationDegrees(targetRotation)
+ }
+
+ @Suppress("RestrictedApi")
+ @VisibleForTesting
+ fun getCaptureResolution(): Size {
+ val resolution = mImageCapture.attachedSurfaceResolution
+ ?: throw IllegalStateException("ImageCapture surface resolution is null")
+
+ val rotation = getSensorRotationRelativeToCaptureTargetRotation()
+ return if (rotation == 90 || rotation == 270) {
+ Size(resolution.height, resolution.width)
+ } else {
+ resolution
+ }
+ }
// endregion
companion object {
@@ -279,7 +298,7 @@
private const val TAG = "MainActivity"
private const val REQUEST_CODE_PERMISSIONS = 20
- private val PERMISSIONS =
- arrayOf(Manifest.permission.CAMERA)
+ val PERMISSIONS =
+ arrayOf(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
}
diff --git a/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureResult.kt b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureResult.kt
new file mode 100644
index 0000000..2dec4dd
--- /dev/null
+++ b/camera/integration-tests/uiwidgetstestapp/src/main/java/androidx/camera/integration/uiwidgets/rotations/ImageCaptureResult.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright 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 androidx.camera.integration.uiwidgets.rotations
+
+import android.content.ContentResolver
+import android.net.Uri
+import android.util.Size
+import androidx.camera.core.ImageProxy
+import androidx.camera.core.impl.utils.Exif
+import java.io.File
+
+/** A wrapper around an ImageCapture result, used for testing. */
+sealed class ImageCaptureResult {
+
+ abstract fun getResolution(): Size
+
+ abstract fun getRotation(): Int
+
+ abstract fun delete()
+
+ class InMemory(private val imageProxy: ImageProxy) : ImageCaptureResult() {
+ override fun getResolution() = Size(imageProxy.width, imageProxy.height)
+ override fun getRotation() = imageProxy.imageInfo.rotationDegrees
+ override fun delete() {}
+ }
+
+ class FileOrOutputStream(private val file: File) : ImageCaptureResult() {
+ private val exif = Exif.createFromFile(file)
+ override fun getResolution() = Size(exif.width, exif.height)
+ override fun getRotation() = exif.rotation
+ override fun delete() {
+ file.delete()
+ }
+ }
+
+ class MediaStore(private val contentResolver: ContentResolver, private val uri: Uri) :
+ ImageCaptureResult() {
+
+ private val exif: Exif
+
+ init {
+ val inputStream = contentResolver.openInputStream(uri)
+ exif = Exif.createFromInputStream(inputStream!!)
+ }
+
+ override fun getResolution() = Size(exif.width, exif.height)
+ override fun getRotation() = exif.rotation
+ override fun delete() {
+ contentResolver.delete(uri, null, null)
+ }
+ }
+}
\ No newline at end of file
diff --git a/collection/collection-benchmark/src/androidTest/AndroidManifest.xml b/collection/collection-benchmark/src/androidTest/AndroidManifest.xml
index 0e6ce1e..1664e8d 100644
--- a/collection/collection-benchmark/src/androidTest/AndroidManifest.xml
+++ b/collection/collection-benchmark/src/androidTest/AndroidManifest.xml
@@ -23,5 +23,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
index d93f5ee..37fbc95 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
@@ -162,7 +162,9 @@
fun invokeComposable(composer: Composer<*>?, fn: @Composable () -> Unit) {
if (composer == null) error("Composer was null")
- val composition = compositionFor(composer) { a, b -> composer }
+ val composition = compositionFor(composer, Recomposer.current()) { a, b ->
+ composer
+ }
composition.setContent(fn)
}
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
index ca93902..1e6df0d 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
@@ -2158,17 +2158,16 @@
@Composable
fun Reordering() {
LinearLayout {
- Recompose { recompose ->
- Button(
- id=50,
- text="Recompose!",
- onClick={ list.add(list.removeAt(0)); recompose(); }
- )
- LinearLayout(id=100) {
- for(id in list) {
- key(id) {
- StatefulButton()
- }
+ val recompose = invalidate
+ Button(
+ id=50,
+ text="Recompose!",
+ onClick={ list.add(list.removeAt(0)); recompose(); }
+ )
+ LinearLayout(id=100) {
+ for(id in list) {
+ key(id) {
+ StatefulButton()
}
}
}
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallResolverTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallResolverTests.kt
index c27b941..7485608 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallResolverTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallResolverTests.kt
@@ -232,20 +232,13 @@
"$calltype.")
when (calltype) {
- "<normal>" -> assert(!resolvedCall.isCall())
- "<call>" -> assert(resolvedCall.isCall())
+ "<normal>" -> assert(!resolvedCall.isComposableInvocation())
+ "<call>" -> assert(resolvedCall.isComposableInvocation())
else -> error("Call type of $calltype not recognized.")
}
}
}
- private fun ResolvedCall<*>.isCall(): Boolean =
- when (candidateDescriptor) {
- is ComposableFunctionDescriptor -> true
- is ComposablePropertyDescriptor -> true
- else -> false
- }
-
private val callPattern = Regex("(<normal>)|(<emit>)|(<call>)")
private fun extractCarets(text: String): Pair<String, List<Pair<Int, String>>> {
val indices = mutableListOf<Pair<Int, String>>()
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/DefaultParamTransformTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/DefaultParamTransformTests.kt
index 230cdc5..735a5ba 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/DefaultParamTransformTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/DefaultParamTransformTests.kt
@@ -172,18 +172,22 @@
%composer.startRestartGroup(%key)
val %dirty = %changed
val x = x
- if (%default and 0b0001 === 0 && %changed and 0b0110 === 0) {
- %dirty = %dirty or if (%composer.changed(x)) 0b0100 else 0b0010
+ if (%changed and 0b0110 === 0) {
+ %dirty = %dirty or if (%default and 0b0001 === 0 && %composer.changed(x)) 0b0100 else 0b0010
}
if (%dirty and 0b0011 xor 0b0010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
%composer.startDefaults()
if (%default and 0b0001 !== 0) {
x = makeInt()
+ %dirty = %dirty and 0b0110.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0001 !== 0) {
+ %dirty = %dirty and 0b0110.inv()
+ }
}
} else {
%composer.skipToGroupEnd()
@@ -218,8 +222,8 @@
} else if (%changed and 0b0110 === 0) {
%dirty = %dirty or if (%composer.changed(a)) 0b0100 else 0b0010
}
- if (%default and 0b0010 === 0 && %changed and 0b00011000 === 0) {
- %dirty = %dirty or if (%composer.changed(b)) 0b00010000 else 0b1000
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(b)) 0b00010000 else 0b1000
}
if (%dirty and 0b1011 xor 0b1010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
@@ -229,10 +233,14 @@
}
if (%default and 0b0010 !== 0) {
b = a + 1
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
print(a)
print(b)
@@ -1207,6 +1215,7 @@
}
if (%default and 0b001000000000 !== 0) {
a09 = Foo()
+ %dirty = %dirty and 0b000110000000000000000000.inv()
}
if (%default and 0b010000000000 !== 0) {
a10 = 0
@@ -1273,10 +1282,17 @@
}
if (%default1 and 0b0001 !== 0) {
a31 = Foo()
+ %dirty2 = %dirty2 and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b001000000000 !== 0) {
+ %dirty = %dirty and 0b000110000000000000000000.inv()
+ }
+ if (%default1 and 0b0001 !== 0) {
+ %dirty2 = %dirty2 and 0b00011000.inv()
+ }
}
print("Hello world!")
} else {
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
index 4ad6961..b4eed4c 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
@@ -118,13 +118,9 @@
}
""",
"""
- import androidx.compose.Untracked
- import androidx.compose.ExperimentalComposeApi
-
@Composable
fun Test(x: Int = 0, y: Int = 0) {
- @OptIn(ExperimentalComposeApi::class)
- Wrap @Untracked {
+ Wrap @ComposableContract(tracked = false) {
A(x)
}
}
@@ -264,8 +260,8 @@
} else if (%changed and 0b01100000 === 0) {
%dirty = %dirty or if (%composer.changed(arrangement)) 0b01000000 else 0b00100000
}
- if (%default and 0b1000 === 0 && %changed and 0b000110000000 === 0) {
- %dirty = %dirty or if (%composer.changed(crossAxisAlignment)) 0b000100000000 else 0b10000000
+ if (%changed and 0b000110000000 === 0) {
+ %dirty = %dirty or if (%default and 0b1000 === 0 && %composer.changed(crossAxisAlignment)) 0b000100000000 else 0b10000000
}
if (%default and 0b00010000 !== 0) {
%dirty = %dirty or 0b011000000000
@@ -288,6 +284,7 @@
}
if (%default and 0b1000 !== 0) {
crossAxisAlignment = Companion.Start
+ %dirty = %dirty and 0b000110000000.inv()
}
if (%default and 0b00010000 !== 0) {
crossAxisSize = SizeMode.Wrap
@@ -295,6 +292,9 @@
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b1000 !== 0) {
+ %dirty = %dirty and 0b000110000000.inv()
+ }
}
println()
} else {
@@ -321,8 +321,8 @@
} else if (%changed and 0b00011000 === 0) {
%dirty = %dirty or if (%composer.changed(verticalArrangement)) 0b00010000 else 0b1000
}
- if (%default and 0b0100 === 0 && %changed and 0b01100000 === 0) {
- %dirty = %dirty or if (%composer.changed(horizontalGravity)) 0b01000000 else 0b00100000
+ if (%changed and 0b01100000 === 0) {
+ %dirty = %dirty or if (%default and 0b0100 === 0 && %composer.changed(horizontalGravity)) 0b01000000 else 0b00100000
}
if (%default and 0b1000 !== 0) {
%dirty = %dirty or 0b000110000000
@@ -340,10 +340,14 @@
}
if (%default and 0b0100 !== 0) {
horizontalGravity = Companion.Start
+ %dirty = %dirty and 0b01100000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0100 !== 0) {
+ %dirty = %dirty and 0b01100000.inv()
+ }
}
val tmp0_orientation = LayoutOrientation.Vertical
val tmp1_arrangement = verticalArrangement
@@ -421,18 +425,22 @@
%composer.startRestartGroup(%key)
val %dirty = %changed
val a = a
- if (%default and 0b0001 === 0 && %changed and 0b0110 === 0) {
- %dirty = %dirty or if (%composer.changed(a)) 0b0100 else 0b0010
+ if (%changed and 0b0110 === 0) {
+ %dirty = %dirty or if (%default and 0b0001 === 0 && %composer.changed(a)) 0b0100 else 0b0010
}
if (%dirty and 0b0011 xor 0b0010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
%composer.startDefaults()
if (%default and 0b0001 !== 0) {
a = newInt()
+ %dirty = %dirty and 0b0110.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0001 !== 0) {
+ %dirty = %dirty and 0b0110.inv()
+ }
}
print(a)
} else {
@@ -489,10 +497,14 @@
}
if (%default and 0b0010 !== 0) {
shape = RectangleShape
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
println()
} else {
@@ -533,8 +545,8 @@
} else if (%changed and 0b0110 === 0) {
%dirty = %dirty or if (%composer.changed(modifier)) 0b0100 else 0b0010
}
- if (%default and 0b0010 === 0 && %changed and 0b00011000 === 0) {
- %dirty = %dirty or if (%composer.changed(children)) 0b00010000 else 0b1000
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(children)) 0b00010000 else 0b1000
}
if (%dirty and 0b1011 xor 0b1010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
@@ -550,10 +562,14 @@
%composer.skipToGroupEnd()
}
}
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
println()
} else {
@@ -843,8 +859,8 @@
} else if (%changed and 0b0110 === 0) {
%dirty = %dirty or if (%composer.changed(a)) 0b0100 else 0b0010
}
- if (%default and 0b0010 === 0 && %changed and 0b00011000 === 0) {
- %dirty = %dirty or if (%composer.changed(b)) 0b00010000 else 0b1000
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(b)) 0b00010000 else 0b1000
}
if (%default and 0b0100 !== 0) {
%dirty = %dirty or 0b01100000
@@ -859,6 +875,7 @@
}
if (%default and 0b0010 !== 0) {
b = makeInt(%composer, <>, 0)
+ %dirty = %dirty and 0b00011000.inv()
}
if (%default and 0b0100 !== 0) {
c = 0
@@ -866,6 +883,9 @@
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
} else {
%composer.skipToGroupEnd()
@@ -1102,10 +1122,14 @@
}
if (%default and 0b0010 !== 0) {
b = Foo()
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
print("Hello World")
} else {
@@ -1241,18 +1265,22 @@
} else if (%changed and 0b0110 === 0) {
%dirty = %dirty or if (%composer.changed(text)) 0b0100 else 0b0010
}
- if (%default and 0b0010 === 0 && %changed and 0b00011000 === 0) {
- %dirty = %dirty or if (%composer.changed(color.value)) 0b00010000 else 0b1000
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(color.value)) 0b00010000 else 0b1000
}
if (%dirty and 0b1011 xor 0b1010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
%composer.startDefaults()
if (%default and 0b0010 !== 0) {
color = Companion.Unset
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
} else {
%composer.skipToGroupEnd()
@@ -1372,6 +1400,39 @@
)
@Test
+ fun testAnnotationChecker(): Unit = comparisonPropagation(
+ """
+ @Composable fun D(content: @Composable() () -> Unit) {}
+ """,
+ """
+ @Composable fun Example() {
+ D {}
+ }
+ """,
+ """
+ @Composable
+ fun Example(%composer: Composer<*>?, %key: Int, %changed: Int) {
+ %composer.startRestartGroup(%key)
+ if (%changed !== 0 || !%composer.skipping) {
+ D(composableLambda(%composer, <>, true) { %composer: Composer<*>?, %key: Int, %changed: Int ->
+ if (%changed and 0b0011 xor 0b0010 !== 0 || !%composer.skipping) {
+ Unit
+ } else {
+ %composer.skipToGroupEnd()
+ }
+ }, %composer, <>, 0b0110)
+ } else {
+ %composer.skipToGroupEnd()
+ }
+ %composer.endRestartGroup()?.updateScope { %composer: Composer<*>?, %key: Int, %force: Int ->
+ Example(%composer, %key, %changed or 0b0001)
+ }
+ }
+
+ """
+ )
+
+ @Test
fun testSingleStableParamWithDefault(): Unit = comparisonPropagation(
"""
@Composable fun A(x: Int) {}
@@ -1426,18 +1487,22 @@
%composer.startRestartGroup(%key)
val %dirty = %changed
val x = x
- if (%default and 0b0001 === 0 && %changed and 0b0110 === 0) {
- %dirty = %dirty or if (%composer.changed(x)) 0b0100 else 0b0010
+ if (%changed and 0b0110 === 0) {
+ %dirty = %dirty or if (%default and 0b0001 === 0 && %composer.changed(x)) 0b0100 else 0b0010
}
if (%dirty and 0b0011 xor 0b0010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
%composer.startDefaults()
if (%default and 0b0001 !== 0) {
x = I(%composer, <>, 0)
+ %dirty = %dirty and 0b0110.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0001 !== 0) {
+ %dirty = %dirty and 0b0110.inv()
+ }
}
A(x, %composer, <>, 0b0110 and %dirty)
} else {
@@ -1500,10 +1565,14 @@
%composer.startDefaults()
if (%default and 0b0001 !== 0) {
x = Foo()
+ %dirty = %dirty and 0b0110.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0001 !== 0) {
+ %dirty = %dirty and 0b0110.inv()
+ }
}
A(x, %composer, <>, 0b0110 and %dirty)
} else {
@@ -1565,13 +1634,21 @@
}
if (%default and 0b1000 !== 0) {
d = Foo()
+ %dirty = %dirty and 0b000110000000.inv()
}
if (%default and 0b00010000 !== 0) {
e = emptyList()
+ %dirty = %dirty and 0b011000000000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b1000 !== 0) {
+ %dirty = %dirty and 0b000110000000.inv()
+ }
+ if (%default and 0b00010000 !== 0) {
+ %dirty = %dirty and 0b011000000000.inv()
+ }
}
A(a, b, c, d, e, %composer, <>, 0b0110 and %dirty or 0b00011000 and %dirty or 0b01100000 and %dirty or 0b000110000000 and %dirty or 0b011000000000 and %dirty)
} else {
@@ -2341,8 +2418,8 @@
} else if (%changed and 0b0110 === 0) {
%dirty = %dirty or if (%composer.changed(wontChange)) 0b0100 else 0b0010
}
- if (%default and 0b0010 === 0 && %changed and 0b00011000 === 0) {
- %dirty = %dirty or if (%composer.changed(mightChange)) 0b00010000 else 0b1000
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(mightChange)) 0b00010000 else 0b1000
}
if (%dirty and 0b1011 xor 0b1010 !== 0 || !%composer.skipping) {
if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
@@ -2352,10 +2429,14 @@
}
if (%default and 0b0010 !== 0) {
mightChange = AmbientColor.current
+ %dirty = %dirty and 0b00011000.inv()
}
%composer.endDefaults()
} else {
%composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
}
A(wontChange, %composer, <>, 0b0110 and %dirty)
A(mightChange, %composer, <>, 0b0110 and %dirty shr 0b0010)
@@ -2397,4 +2478,73 @@
}
"""
)
+
+ @Test
+ fun testDefaultsIssue(): Unit = comparisonPropagation(
+ """
+ """,
+ """
+ import androidx.ui.core.Modifier
+ import androidx.ui.unit.Dp
+ import androidx.compose.emptyContent
+
+ @Composable
+ fun Box2(
+ modifier: Modifier = Modifier,
+ paddingStart: Dp = Dp.Unspecified,
+ children: @Composable () -> Unit = emptyContent()
+ ) {
+
+ }
+ """,
+ """
+ @Composable
+ fun Box2(modifier: Modifier?, paddingStart: Dp, children: Function3<Composer<*>, Int, Int, Unit>?, %composer: Composer<*>?, %key: Int, %changed: Int, %default: Int) {
+ %composer.startRestartGroup(%key)
+ val %dirty = %changed
+ val modifier = modifier
+ val paddingStart = paddingStart
+ val children = children
+ if (%default and 0b0001 !== 0) {
+ %dirty = %dirty or 0b0110
+ } else if (%changed and 0b0110 === 0) {
+ %dirty = %dirty or if (%composer.changed(modifier)) 0b0100 else 0b0010
+ }
+ if (%changed and 0b00011000 === 0) {
+ %dirty = %dirty or if (%default and 0b0010 === 0 && %composer.changed(paddingStart.value)) 0b00010000 else 0b1000
+ }
+ if (%default and 0b0100 !== 0) {
+ %dirty = %dirty or 0b01100000
+ } else if (%changed and 0b01100000 === 0) {
+ %dirty = %dirty or if (%composer.changed(children)) 0b01000000 else 0b00100000
+ }
+ if (%dirty and 0b00101011 xor 0b00101010 !== 0 || !%composer.skipping) {
+ if (%changed and 0b0001 === 0 || %composer.defaultsInvalid) {
+ %composer.startDefaults()
+ if (%default and 0b0001 !== 0) {
+ modifier = Companion
+ }
+ if (%default and 0b0010 !== 0) {
+ paddingStart = Companion.Unspecified
+ %dirty = %dirty and 0b00011000.inv()
+ }
+ if (%default and 0b0100 !== 0) {
+ children = emptyContent()
+ }
+ %composer.endDefaults()
+ } else {
+ %composer.skipCurrentGroup()
+ if (%default and 0b0010 !== 0) {
+ %dirty = %dirty and 0b00011000.inv()
+ }
+ }
+ } else {
+ %composer.skipToGroupEnd()
+ }
+ %composer.endRestartGroup()?.updateScope { %composer: Composer<*>?, %key: Int, %force: Int ->
+ Box2(modifier, paddingStart, children, %composer, %key, %changed or 0b0001, %default)
+ }
+ }
+ """
+ )
}
\ No newline at end of file
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/KtxCrossModuleTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/KtxCrossModuleTests.kt
index defb9ca..6f764e2 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/KtxCrossModuleTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/KtxCrossModuleTests.kt
@@ -718,10 +718,8 @@
class TestF {
@Composable
fun compose() {
- Recompose { recompose ->
- doRecompose = recompose
- Foo(bar)
- }
+ doRecompose = invalidate
+ Foo(bar)
}
fun advance() {
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
index fa69781..a17847f 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
@@ -664,8 +664,7 @@
@Composable
fun Example(model: String) {
workToBeRepeated()
- @OptIn(androidx.compose.ExperimentalComposeApi::class)
- Wrapper @Untracked {
+ Wrapper @ComposableContract(tracked = false) {
workToBeAvoided()
ValidateModel(model)
}
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ScopeComposabilityTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ScopeComposabilityTests.kt
index 3e508ee..7390a5e 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ScopeComposabilityTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ScopeComposabilityTests.kt
@@ -16,8 +16,6 @@
package androidx.compose.plugins.kotlin
-import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
-import androidx.compose.plugins.kotlin.ComposableAnnotationChecker.Composability
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
@@ -59,7 +57,7 @@
@Composable
fun Foo() {
- <marked>
+ <composable>
}
"""
)
@@ -68,15 +66,15 @@
"""
import androidx.compose.*
- val foo = @Composable { <marked> }
+ val foo = @Composable { <composable> }
@Composable
fun Bar() {
- <marked>
+ <composable>
fun bam() { <normal> }
val x = { <normal> }
- val y = @Composable { <marked> }
- @Composable fun z() { <marked> }
+ val y = @Composable { <composable> }
+ @Composable fun z() { <composable> }
}
"""
)
@@ -88,9 +86,9 @@
@Composable
fun Bar() {
- <marked>
+ <composable>
listOf(1, 2, 3).forEach {
- <inferred> // should be inferred, but is normal
+ <composable>
}
}
"""
@@ -104,11 +102,11 @@
@Composable
fun Bar() {
- <marked>
+ <composable>
Wrap {
- <marked>
+ <composable>
Wrap {
- <marked>
+ <composable>
}
}
}
@@ -123,7 +121,7 @@
@Composable
fun Bar() {
- <marked>
+ <composable>
Callback {
<normal>
}
@@ -140,7 +138,7 @@
fun Bar() {
<normal>
kickOff {
- <marked>
+ <composable>
}
}
"""
@@ -162,17 +160,13 @@
).bindingContext
carets.forEachIndexed { index, (offset, marking) ->
- val composability = composabiliityAtOffset(bindingContext, ktFile, offset)
- ?: error("composability not found for index: $index, offset: $offset. Expected " +
- "$marking.")
+ val composable = composabiliityAtOffset(bindingContext, ktFile, offset)
when (marking) {
- "<marked>" -> assertEquals("index: $index", Composability.MARKED, composability)
- "<inferred>" -> assertEquals("index: $index", Composability.INFERRED, composability)
- "<normal>" -> assertEquals(
+ "<composable>" -> assertTrue("index: $index", composable)
+ "<normal>" -> assertTrue(
"index: $index",
- Composability.NOT_COMPOSABLE,
- composability
+ !composable
)
else -> error("Composability of $marking not recognized.")
}
@@ -195,7 +189,7 @@
bindingContext: BindingContext,
jetFile: KtFile,
index: Int
- ): Composability? {
+ ): Boolean {
val element = jetFile.findElementAt(index)!!
return element.getNearestComposability(bindingContext)
}
@@ -203,7 +197,7 @@
fun PsiElement?.getNearestComposability(
bindingContext: BindingContext
-): Composability? {
+): Boolean {
var node: PsiElement? = this
while (node != null) {
when (node) {
@@ -215,11 +209,14 @@
is KtFunction,
is KtPropertyAccessor,
is KtProperty -> {
- val el = node as KtElement
- return bindingContext.get(ComposeWritableSlices.COMPOSABLE_ANALYSIS, el)
+ val descriptor = bindingContext[BindingContext.FUNCTION, node]
+ if (descriptor == null) {
+ return false
+ }
+ return descriptor.allowsComposableCalls(bindingContext)
}
}
node = node.parent as? KtElement
}
- return null
+ return false
}
\ No newline at end of file
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/analysis/ComposableCheckerTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/analysis/ComposableCheckerTests.kt
index 5181116..925795e 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/analysis/ComposableCheckerTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/analysis/ComposableCheckerTests.kt
@@ -8,7 +8,6 @@
import com.intellij.openapi.util.Disposer
class ComposableCheckerTests : AbstractComposeDiagnosticsTest() {
-
override fun setUp() {
// intentionally don't call super.setUp() here since we are recreating an environment
// every test
@@ -57,25 +56,130 @@
doTest(expectedText, false)
}
+ fun testCfromNC() = check("""
+ import androidx.compose.*
+
+ @Composable fun C() {}
+ fun <!COMPOSABLE_EXPECTED!>NC<!>() { <!COMPOSABLE_INVOCATION!>C<!>() }
+ """)
+
+ fun testNCfromC() = check("""
+ import androidx.compose.*
+
+ fun NC() {}
+ @Composable fun C() { NC() }
+ """)
+
+ fun testCfromC() = check("""
+ import androidx.compose.*
+
+ @Composable fun C() {}
+ @Composable fun C2() { C() }
+ """)
+
+ fun testCinCLambdaArg() = check("""
+ import androidx.compose.*
+ @Composable fun C() { }
+ @Composable fun C2(lambda: @Composable () -> Unit) { lambda() }
+ @Composable fun C3() {
+ C2 {
+ C()
+ }
+ }
+ """)
+
+ fun testCinInlinedNCLambdaArg() = check("""
+ import androidx.compose.*
+ @Composable fun C() { }
+ inline fun InlineNC(lambda: () -> Unit) { lambda() }
+ @Composable fun C3() {
+ InlineNC {
+ C()
+ }
+ }
+ """)
+
+ fun testCinLambdaArgOfNC() = check("""
+ import androidx.compose.*
+ @Composable fun C() { }
+ fun NC(lambda: () -> Unit) { lambda() }
+ @Composable fun C3() {
+ NC {
+ <!COMPOSABLE_INVOCATION!>C<!>()
+ }
+ }
+ """)
+
+ fun testCinLambdaArgOfC() = check("""
+ import androidx.compose.*
+ @Composable fun C() { }
+ @Composable fun C2(lambda: () -> Unit) { lambda() }
+ @Composable fun C3() {
+ C2 {
+ <!COMPOSABLE_INVOCATION!>C<!>()
+ }
+ }
+ """)
+
+ fun testCinCPropGetter() = check("""
+ import androidx.compose.*
+ @Composable fun C(): Int { return 123 }
+ @Composable val cProp: Int get() = C()
+ """)
+
+ fun testCinNCPropGetter() = check("""
+ import androidx.compose.*
+ @Composable fun C(): Int { return 123 }
+ val <!COMPOSABLE_EXPECTED!>ncProp<!>: Int get() = <!COMPOSABLE_INVOCATION!>C<!>()
+ """)
+
+ fun testCinTopLevelInitializer() = check("""
+ import androidx.compose.*
+ @Composable fun C(): Int { return 123 }
+ val ncProp: Int = <!COMPOSABLE_INVOCATION!>C<!>()
+ @Composable val cProp: Int = <!COMPOSABLE_INVOCATION!>C<!>()
+ """)
+
+ fun testCTypeAlias() = check("""
+ import androidx.compose.*
+ typealias Content = @Composable () -> Unit
+ @Composable fun C() {}
+ @Composable fun C2(content: Content) { content() }
+ @Composable fun C3() {
+ val inner: Content = { C() }
+ C2 { C() }
+ C2 { inner() }
+ }
+ """)
+
+ fun testPreventedCaptureOnInlineLambda() = check("""
+ import androidx.compose.*
+
+ @Composable inline fun A(
+ lambda: @ComposableContract(preventCapture=true) () -> Unit
+ ) { if (Math.random() > 0.5) lambda() }
+ @Composable fun B() {}
+
+ @Composable fun C() {
+ A { <!CAPTURED_COMPOSABLE_INVOCATION!>B<!>() }
+ }
+ """)
+
fun testComposableReporting001() {
checkFail("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
fun myStatelessFunctionalComponent() {
Leaf()
}
-
- fun foo() {
- myStatelessFunctionalComponent()
- }
""")
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
@Composable
@@ -94,7 +198,7 @@
checkFail("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
val myLambda1 = { Leaf() }
@@ -103,7 +207,7 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
val myLambda1 = @Composable { Leaf() }
@@ -111,22 +215,11 @@
""")
}
- fun testComposableReporting003() {
- check("""
- import androidx.compose.*;
- import android.widget.TextView;
-
- fun myRandomFunction() {
- <!NONE_APPLICABLE!>TextView<!>(text="Hello World!")
- }
- """)
- }
-
fun testComposableReporting006() {
checkFail("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
fun foo() {
@@ -140,7 +233,7 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
@Composable
@@ -157,7 +250,6 @@
fun testComposableReporting007() {
checkFail("""
import androidx.compose.*;
- import android.widget.TextView;
fun foo(children: @Composable ()->Unit) {
<!SVC_INVOCATION!>children<!>()
@@ -168,42 +260,32 @@
fun testComposableReporting008() {
checkFail("""
import androidx.compose.*;
- import android.widget.TextView;
+
+ @Composable fun Leaf() {}
fun foo() {
val bar: @Composable ()->Unit = @Composable {
- TextView()
+ Leaf()
}
- <!SVC_INVOCATION!>bar<!>()
+ <!COMPOSABLE_INVOCATION!>bar<!>()
System.out.println(bar)
}
""")
}
fun testComposableReporting009() {
- checkFail("""
+ check("""
import androidx.compose.*;
- import android.widget.TextView;
- fun myStatelessFunctionalComponent() {
- TextView(text="Hello World!")
- }
-
- fun noise() {
- <!SVC_INVOCATION!>myStatelessFunctionalComponent<!>()
- }
- """)
- checkFail("""
- import androidx.compose.*;
- import android.widget.TextView;
+ @Composable fun Leaf() {}
@Composable
fun myStatelessFunctionalComponent() {
- TextView(text="Hello World!")
+ Leaf()
}
- fun noise() {
- <!SVC_INVOCATION!>myStatelessFunctionalComponent<!>()
+ fun <!COMPOSABLE_EXPECTED!>noise<!>() {
+ <!COMPOSABLE_INVOCATION!>myStatelessFunctionalComponent<!>()
}
""")
}
@@ -211,8 +293,8 @@
fun testComposableReporting017() {
checkFail("""
import androidx.compose.*;
- import android.widget.LinearLayout;
- import android.widget.TextView;
+
+ @Composable fun Leaf() {}
@Composable
fun Foo(children: ()->Unit) {
@@ -221,13 +303,13 @@
@Composable
fun main() {
- Foo { TextView(text="Hello") }
+ Foo { Leaf() }
}
""")
check("""
import androidx.compose.*;
- import android.widget.LinearLayout;
- import android.widget.TextView;
+
+ @Composable fun Leaf() {}
@Composable
fun Foo(children: ()->Unit) {
@@ -236,7 +318,7 @@
@Composable
fun main() {
- Foo { <!NONE_APPLICABLE!>TextView<!>(text="Hello") }
+ Foo { <!COMPOSABLE_INVOCATION!>Leaf<!>() }
}
""")
}
@@ -245,7 +327,7 @@
checkFail("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
fun foo() {
@@ -256,7 +338,7 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
fun foo() {
@@ -270,13 +352,13 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
@Composable
fun foo() {
val myList = listOf(1,2,3,4,5)
- myList.forEach @Composable { value: Int ->
+ myList.forEach @Composable { value: Int ->
Leaf()
System.out.println(value)
}
@@ -285,32 +367,35 @@
}
fun testComposableReporting022() {
- checkFail("""
+ check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
- fun foo() {
+ fun <!COMPOSABLE_EXPECTED!>foo<!>() {
val myList = listOf(1,2,3,4,5)
- myList.forEach { value: Int ->
- Leaf()
- System.out.println(value)
+ myList.forEach { value: Int ->
+ <!COMPOSABLE_INVOCATION!>Leaf<!>()
+ println(value)
}
}
""")
+ }
+
+ fun testComposableReporting023() {
check("""
import androidx.compose.*;
- import android.widget.TextView;
- @Composable
+ @Composable
fun Leaf() {}
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>foo<!>() {
+ @Composable
+ fun foo() {
val myList = listOf(1,2,3,4,5)
- myList.forEach @Composable { value: Int ->
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE, COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Leaf<!>()
- System.out.println(value)
+ myList.forEach { value: Int ->
+ Leaf()
+ println(value)
}
}
""")
@@ -318,15 +403,33 @@
fun testComposableReporting024() {
check("""
- import androidx.compose.*;
- import android.widget.LinearLayout
- import androidx.ui.core.setViewContent
+ import androidx.compose.*
- @Composable
+ var x: (@Composable () -> Unit)? = null
+
+ class Foo
+ fun Foo.setContent(content: @Composable () -> Unit) {
+ x = content
+ }
+
+ @Composable
fun Leaf() {}
- fun foo(ll: LinearLayout) {
- ll.setViewContent { Leaf() }
+ fun Example(foo: Foo) {
+ foo.setContent { Leaf() }
+ }
+ """)
+ }
+
+ fun testComposableReporting024x() {
+ check("""
+ import androidx.compose.*
+
+ var x: (@Composable () -> Unit)? = null
+
+ fun <!COMPOSABLE_EXPECTED!>Example<!>(content: @Composable () -> Unit) {
+ x = content
+ <!COMPOSABLE_INVOCATION!>content<!>()
}
""")
}
@@ -335,7 +438,7 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
@Composable
@@ -349,10 +452,10 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
- @Composable
+ @Composable
fun Group(content: @Composable () -> Unit) { content() }
@Composable
@@ -368,10 +471,10 @@
check("""
import androidx.compose.*;
- @Composable
+ @Composable
fun Leaf() {}
- @Composable
+ @Composable
fun Group(content: @Composable () -> Unit) { content() }
@Composable
@@ -388,7 +491,6 @@
fun testComposableReporting028() {
checkFail("""
import androidx.compose.*;
- import android.widget.TextView;
fun foo(v: @Composable ()->Unit) {
val myVariable: ()->Unit = v
@@ -397,7 +499,6 @@
""")
check("""
import androidx.compose.*;
- import android.widget.TextView;
fun foo(v: @Composable ()->Unit) {
val myVariable: ()->Unit = <!TYPE_MISMATCH!>v<!>
@@ -409,7 +510,6 @@
fun testComposableReporting030() {
check("""
import androidx.compose.*;
- import android.widget.TextView;
@Composable
fun foo() {
@@ -419,18 +519,6 @@
""")
}
- fun testComposableReporting031() {
- check("""
- import androidx.compose.*;
- import android.widget.TextView;
-
- fun foo() {
- val myVariable: ()->Unit = { <!NONE_APPLICABLE!>TextView<!>(text="Hello") };
- myVariable();
- }
- """)
- }
-
fun testComposableReporting032() {
check("""
import androidx.compose.*;
@@ -438,7 +526,7 @@
@Composable
fun MyComposable(children: @Composable ()->Unit) { children() }
- @Composable
+ @Composable
fun Leaf() {}
@Composable
@@ -455,7 +543,7 @@
@Composable
fun MyComposable(children: @Composable ()->Unit) { children() }
- @Composable
+ @Composable
fun Leaf() {}
@Composable
@@ -468,7 +556,6 @@
fun testComposableReporting034() {
checkFail("""
import androidx.compose.*;
- import android.widget.TextView;
fun identity(f: ()->Unit): ()->Unit { return f; }
@@ -480,7 +567,6 @@
""")
check("""
import androidx.compose.*;
- import android.widget.TextView;
fun identity(f: ()->Unit): ()->Unit { return f; }
@@ -504,70 +590,6 @@
""")
}
- fun testComposableReporting036() {
- checkFail("""
- import androidx.compose.*
- import android.widget.TextView;
-
- fun Foo() {
- repeat(5) {
- TextView(text="Hello World")
- }
- }
-
- fun Bar() {
- <!SVC_INVOCATION!>Foo<!>()
- }
- """)
- checkFail("""
- import androidx.compose.*
- import android.widget.TextView;
-
- fun Foo() {
- repeat(5) {
- TextView(text="Hello World")
- }
- }
-
- fun Bar() {
- <!SVC_INVOCATION!>Foo<!>()
- }
- """)
- }
-
- fun testComposableReporting037() {
- checkFail("""
- import androidx.compose.*
- import android.widget.TextView;
-
- fun Foo() {
- fun Noise() {
- TextView(text="Hello World")
- }
- }
-
- fun Bar() {
- Foo()
- }
- """)
- }
-
- fun testComposableReporting038() {
- check("""
- import androidx.compose.*
- import android.widget.TextView;
-
- // Function intentionally not inline
- fun repeat(x: Int, l: ()->Unit) { for(i in 1..x) l() }
-
- fun Foo() {
- repeat(5) {
- <!NONE_APPLICABLE!>TextView<!>(text="Hello World")
- }
- }
- """)
- }
-
fun testComposableReporting039() {
check(
"""
@@ -589,29 +611,9 @@
)
}
- fun testComposableReporting040() {
- checkFail("""
- import androidx.compose.*
- import android.widget.TextView;
-
- inline fun noise(l: ()->Unit) { l() }
-
- fun Foo() {
- noise {
- TextView(text="Hello World")
- }
- }
-
- fun Bar() {
- <!SVC_INVOCATION!>Foo<!>()
- }
- """)
- }
-
fun testComposableReporting041() {
check("""
import androidx.compose.*
- import android.widget.TextView;
typealias COMPOSABLE_UNIT_LAMBDA = @Composable () -> Unit
@@ -631,15 +633,12 @@
fun testComposableReporting043() {
check("""
import androidx.compose.*
- import android.widget.TextView;
-
- typealias UNIT_LAMBDA = () -> Unit
@Composable
fun FancyButton() {}
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Noise<!>() {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>FancyButton<!>()
+ fun <!COMPOSABLE_EXPECTED!>Noise<!>() {
+ <!COMPOSABLE_INVOCATION!>FancyButton<!>()
}
""")
}
@@ -764,13 +763,13 @@
}
fun testComposableReporting050() {
- checkFail("""
+ check("""
import androidx.compose.*;
@Composable val foo: Int = 123
- fun App() {
- foo
+ fun <!COMPOSABLE_EXPECTED!>App<!>() {
+ <!COMPOSABLE_INVOCATION!>foo<!>
}
""")
check("""
@@ -837,13 +836,13 @@
}
fun testComposableReporting052() {
- checkFail("""
+ check("""
import androidx.compose.*;
@Composable fun Foo() {}
- val bam: Int get() {
- Foo()
+ val <!COMPOSABLE_EXPECTED!>bam<!>: Int get() {
+ <!COMPOSABLE_INVOCATION!>Foo<!>()
return 123
}
""")
@@ -866,8 +865,8 @@
@Composable fun foo(): Int = 123
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>App<!>() {
- val x = <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>foo<!>()
+ fun <!COMPOSABLE_EXPECTED!>App<!>() {
+ val x = <!COMPOSABLE_INVOCATION!>foo<!>()
print(x)
}
""")
@@ -879,26 +878,26 @@
@Composable fun Foo() {}
- val y: Any <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>get() =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!> { 1 }<!>
+ val <!COMPOSABLE_EXPECTED!>y<!>: Any get() =
+ <!COMPOSABLE_INVOCATION!>state<!> { 1 }
fun App() {
val x = object {
- val a <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>get() =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!> { 2 }<!>
+ val <!COMPOSABLE_EXPECTED!>a<!> get() =
+ <!COMPOSABLE_INVOCATION!>state<!> { 2 }
@Composable val c get() = state { 4 }
@Composable fun bar() { Foo() }
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>foo<!>() {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Foo<!>()
+ fun <!COMPOSABLE_EXPECTED!>foo<!>() {
+ <!COMPOSABLE_INVOCATION!>Foo<!>()
}
}
class Bar {
- val b <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>get() =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!> { 6 }<!>
+ val <!COMPOSABLE_EXPECTED!>b<!> get() =
+ <!COMPOSABLE_INVOCATION!>state<!> { 6 }
@Composable val c get() = state { 7 }
}
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Bam<!>() {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Foo<!>()
+ fun <!COMPOSABLE_EXPECTED!>Bam<!>() {
+ <!COMPOSABLE_INVOCATION!>Foo<!>()
}
@Composable fun Boo() {
Foo()
@@ -916,21 +915,19 @@
@Composable fun App() {
val x = object {
- val a <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>get() =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!><!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!><!> { 2 }<!>
+ val <!COMPOSABLE_EXPECTED!>a<!> get() = <!COMPOSABLE_INVOCATION!>state<!> { 2 }
@Composable val c get() = state { 4 }
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>foo<!>() {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Foo<!>()
+ fun <!COMPOSABLE_EXPECTED!>foo<!>() {
+ <!COMPOSABLE_INVOCATION!>Foo<!>()
}
@Composable fun bar() { Foo() }
}
class Bar {
- val b <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>get() =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!><!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!><!> { 6 }<!>
+ val <!COMPOSABLE_EXPECTED!>b<!> get() = <!COMPOSABLE_INVOCATION!>state<!> { 6 }
@Composable val c get() = state { 7 }
}
- fun <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Bam<!>() {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>Foo<!>()
+ fun <!COMPOSABLE_EXPECTED!>Bam<!>() {
+ <!COMPOSABLE_INVOCATION!>Foo<!>()
}
@Composable fun Boo() {
Foo()
@@ -941,21 +938,15 @@
}
fun testComposableReporting057() {
- // This tests composable calls in initialization expressions of object literals inside of
- // composable functions. I don't see any reason why we shouldn't support this, but right now
- // we catch it and prevent it. Enabling it is nontrivial so i'm writing the test to assert
- // on the current behavior, and we can consider changing it at a later date.
check("""
import androidx.compose.*;
@Composable fun App() {
val x = object {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>val b =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!><!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!><!> { 3 }<!>
+ val b = state { 3 }
}
class Bar {
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>val a =
- <!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!><!COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE!>state<!><!> { 5 }<!>
+ val a = <!COMPOSABLE_INVOCATION!>state<!> { 5 }
}
print(x)
}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableAnnotationChecker.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableAnnotationChecker.kt
deleted file mode 100644
index f5ec4af..0000000
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableAnnotationChecker.kt
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose.plugins.kotlin
-
-import com.intellij.openapi.project.Project
-import com.intellij.psi.PsiElement
-import org.jetbrains.kotlin.container.StorageComponentContainer
-import org.jetbrains.kotlin.container.useInstance
-import org.jetbrains.kotlin.descriptors.ClassDescriptor
-import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
-import org.jetbrains.kotlin.descriptors.FunctionDescriptor
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.descriptors.PropertyDescriptor
-import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
-import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
-import org.jetbrains.kotlin.descriptors.VariableDescriptor
-import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
-import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
-import org.jetbrains.kotlin.diagnostics.Errors
-import org.jetbrains.kotlin.diagnostics.reportFromPlugin
-import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
-import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
-import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
-import org.jetbrains.kotlin.psi.KtAnnotatedExpression
-import org.jetbrains.kotlin.psi.KtAnnotationEntry
-import org.jetbrains.kotlin.psi.KtCallExpression
-import org.jetbrains.kotlin.psi.KtClass
-import org.jetbrains.kotlin.psi.KtDeclaration
-import org.jetbrains.kotlin.psi.KtElement
-import org.jetbrains.kotlin.psi.KtExpression
-import org.jetbrains.kotlin.psi.KtFunction
-import org.jetbrains.kotlin.psi.KtLambdaExpression
-import org.jetbrains.kotlin.psi.KtNamedFunction
-import org.jetbrains.kotlin.psi.KtObjectLiteralExpression
-import org.jetbrains.kotlin.psi.KtParameter
-import org.jetbrains.kotlin.psi.KtProperty
-import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
-import androidx.compose.plugins.kotlin.analysis.ComposeDefaultErrorMessages
-import androidx.compose.plugins.kotlin.analysis.ComposeErrors
-import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices.COMPOSABLE_ANALYSIS
-import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices.FCS_RESOLVEDCALL_COMPOSABLE
-import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR
-import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor
-import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
-import org.jetbrains.kotlin.resolve.AdditionalAnnotationChecker
-import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.BindingTrace
-import org.jetbrains.kotlin.platform.TargetPlatform
-import org.jetbrains.kotlin.platform.jvm.isJvm
-import org.jetbrains.kotlin.psi.KtPropertyAccessor
-import org.jetbrains.kotlin.psi.KtSimpleNameExpression
-import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
-import org.jetbrains.kotlin.resolve.calls.checkers.AdditionalTypeChecker
-import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
-import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
-import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext
-import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
-import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall
-import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
-import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
-import org.jetbrains.kotlin.resolve.inline.InlineUtil.isInlinedArgument
-import org.jetbrains.kotlin.types.KotlinType
-import org.jetbrains.kotlin.types.TypeUtils
-import org.jetbrains.kotlin.types.lowerIfFlexible
-import org.jetbrains.kotlin.types.typeUtil.builtIns
-import org.jetbrains.kotlin.types.upperIfFlexible
-import org.jetbrains.kotlin.util.OperatorNameConventions
-
-open class ComposableAnnotationChecker : CallChecker, DeclarationChecker,
- AdditionalTypeChecker, AdditionalAnnotationChecker, StorageComponentContainerContributor {
-
- companion object {
- fun get(project: Project): ComposableAnnotationChecker {
- return StorageComponentContainerContributor.getInstances(project).single {
- it is ComposableAnnotationChecker
- } as ComposableAnnotationChecker
- }
- }
-
- enum class Composability { NOT_COMPOSABLE, INFERRED, MARKED }
-
- fun shouldInvokeAsTag(trace: BindingTrace, resolvedCall: ResolvedCall<*>): Boolean {
- if (resolvedCall is VariableAsFunctionResolvedCall) {
- if (resolvedCall.variableCall.candidateDescriptor.type.hasComposableAnnotation())
- return true
- if (resolvedCall.functionCall.resultingDescriptor.hasComposableAnnotation()) return true
- return false
- }
- val candidateDescriptor = resolvedCall.candidateDescriptor
- if (candidateDescriptor is FunctionDescriptor) {
- if (candidateDescriptor.isOperator &&
- candidateDescriptor.name == OperatorNameConventions.INVOKE) {
- if (resolvedCall.dispatchReceiver?.type?.hasComposableAnnotation() == true) {
- return true
- }
- }
- }
- if (candidateDescriptor is FunctionDescriptor) {
- when (analyze(trace, candidateDescriptor)) {
- Composability.NOT_COMPOSABLE -> return false
- Composability.INFERRED -> return true
- Composability.MARKED -> return true
- }
- }
- if (candidateDescriptor is ValueParameterDescriptor) {
- return candidateDescriptor.type.hasComposableAnnotation()
- }
- if (candidateDescriptor is LocalVariableDescriptor) {
- return candidateDescriptor.type.hasComposableAnnotation()
- }
- if (candidateDescriptor is PropertyDescriptor) {
- return candidateDescriptor.hasComposableAnnotation()
- }
- return candidateDescriptor.hasComposableAnnotation()
- }
-
- fun analyze(trace: BindingTrace, descriptor: FunctionDescriptor): Composability {
- val unwrappedDescriptor = when (descriptor) {
- is ComposableFunctionDescriptor -> descriptor.underlyingDescriptor
- else -> descriptor
- }
- val psi = unwrappedDescriptor.findPsi() as? KtElement
- psi?.let { trace.bindingContext.get(COMPOSABLE_ANALYSIS, it)?.let { return it } }
- var composability = Composability.NOT_COMPOSABLE
- if (trace.bindingContext.get(
- INFERRED_COMPOSABLE_DESCRIPTOR,
- unwrappedDescriptor
- ) ?: false) {
- composability = Composability.MARKED
- } else {
- when (unwrappedDescriptor) {
- is VariableDescriptor ->
- if (unwrappedDescriptor.hasComposableAnnotation() ||
- unwrappedDescriptor.type.hasComposableAnnotation()
- )
- composability =
- Composability.MARKED
- is ConstructorDescriptor ->
- if (unwrappedDescriptor.hasComposableAnnotation()) composability =
- Composability.MARKED
- is JavaMethodDescriptor ->
- if (unwrappedDescriptor.hasComposableAnnotation()) composability =
- Composability.MARKED
- is AnonymousFunctionDescriptor -> {
- if (unwrappedDescriptor.hasComposableAnnotation()) composability =
- Composability.MARKED
- }
- is PropertyGetterDescriptor ->
- if (unwrappedDescriptor.correspondingProperty.hasComposableAnnotation())
- composability = Composability.MARKED
- else -> if (unwrappedDescriptor.hasComposableAnnotation()) composability =
- Composability.MARKED
- }
- }
- (unwrappedDescriptor.findPsi() as? KtElement)?.let {
- element -> composability = analyzeFunctionContents(trace, element, composability)
- }
- psi?.let { trace.record(COMPOSABLE_ANALYSIS, it, composability) }
- return composability
- }
-
- private fun analyzeFunctionContents(
- trace: BindingTrace,
- element: KtElement,
- signatureComposability: Composability
- ): Composability {
- var composability = signatureComposability
- var localFcs = false
- var isInlineLambda = false
- element.accept(object : KtTreeVisitorVoid() {
- override fun visitNamedFunction(function: KtNamedFunction) {
- if (function == element) {
- super.visitNamedFunction(function)
- }
- }
-
- override fun visitPropertyAccessor(accessor: KtPropertyAccessor) {
- // this is basically a function, so unless it is the function we are analyzing, we
- // stop here
- if (accessor == element) {
- super.visitPropertyAccessor(accessor)
- }
- }
-
- override fun visitClass(klass: KtClass) {
- // never traverse a class
- }
-
- override fun visitLambdaExpression(lambdaExpression: KtLambdaExpression) {
- val isInlineable = isInlinedArgument(
- lambdaExpression.functionLiteral,
- trace.bindingContext,
- true
- )
- if (isInlineable && lambdaExpression == element) isInlineLambda = true
- if (isInlineable || lambdaExpression == element)
- super.visitLambdaExpression(lambdaExpression)
- }
-
- override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
- val resolvedCall = expression.getResolvedCall(trace.bindingContext)
- if (resolvedCall?.candidateDescriptor is PropertyDescriptor) {
- checkResolvedCall(
- resolvedCall,
- trace.get(FCS_RESOLVEDCALL_COMPOSABLE, expression),
- expression
- )
- }
- super.visitSimpleNameExpression(expression)
- }
-
- override fun visitCallExpression(expression: KtCallExpression) {
- val resolvedCall = expression.getResolvedCall(trace.bindingContext)
- checkResolvedCall(
- resolvedCall,
- trace.get(FCS_RESOLVEDCALL_COMPOSABLE, expression),
- expression.calleeExpression ?: expression
- )
- super.visitCallExpression(expression)
- }
-
- private fun checkResolvedCall(
- resolvedCall: ResolvedCall<*>?,
- isCallComposable: Boolean?,
- reportElement: KtExpression
- ) {
- when (resolvedCall?.candidateDescriptor) {
- is ComposablePropertyDescriptor,
- is ComposableFunctionDescriptor -> {
- localFcs = true
- if (!isInlineLambda && composability != Composability.MARKED) {
- // Report error on composable element to make it obvious which invocation is offensive
- trace.reportFromPlugin(
- ComposeErrors.COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE
- .on(reportElement),
- ComposeDefaultErrorMessages
- )
- }
- }
- }
- // Can be null in cases where the call isn't resolvable (eg. due to a bug/typo in the user's code)
- if (isCallComposable == true) {
- localFcs = true
- if (!isInlineLambda && composability != Composability.MARKED) {
- // Report error on composable element to make it obvious which invocation is offensive
- trace.reportFromPlugin(
- ComposeErrors.COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE
- .on(reportElement),
- ComposeDefaultErrorMessages
- )
- }
- }
- }
- }, null)
- if (
- localFcs &&
- !isInlineLambda && composability != Composability.MARKED
- ) {
- val reportElement = when (element) {
- is KtNamedFunction -> element.nameIdentifier ?: element
- else -> element
- }
- if (localFcs) {
- trace.reportFromPlugin(
- ComposeErrors.COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE.on(reportElement),
- ComposeDefaultErrorMessages
- )
- }
- }
- if (localFcs && composability == Composability.NOT_COMPOSABLE)
- composability =
- Composability.INFERRED
- return composability
- }
-
- /**
- * Analyze a KtElement
- * - Determine if it is @Composable (eg. the element or inferred type has an @Composable annotation)
- * - Update the binding context to cache analysis results
- * - Report errors (eg. invocations of an @Composable, etc)
- * - Return true if element is @Composable, else false
- */
- fun analyze(trace: BindingTrace, element: KtElement, type: KotlinType?): Composability {
- trace.bindingContext.get(COMPOSABLE_ANALYSIS, element)?.let { return it }
-
- var composability =
- Composability.NOT_COMPOSABLE
-
- if (element is KtClass) {
- val annotationEntry = element.annotationEntries.singleOrNull {
- trace.bindingContext.get(BindingContext.ANNOTATION, it)?.isComposableAnnotation
- ?: false
- }
- if (annotationEntry != null) {
- trace.report(
- Errors.WRONG_ANNOTATION_TARGET.on(
- annotationEntry,
- "class which does not extend androidx.compose.Component"
- )
- )
- }
- }
- if (element is KtParameter) {
- val composableAnnotation = element
- .typeReference
- ?.annotationEntries
- ?.mapNotNull { trace.bindingContext.get(BindingContext.ANNOTATION, it) }
- ?.singleOrNull { it.isComposableAnnotation }
-
- if (composableAnnotation != null) {
- composability += Composability.MARKED
- }
- }
- if (element is KtParameter) {
- val composableAnnotation = element
- .typeReference
- ?.annotationEntries
- ?.mapNotNull { trace.bindingContext.get(BindingContext.ANNOTATION, it) }
- ?.singleOrNull { it.isComposableAnnotation }
-
- if (composableAnnotation != null) {
- composability += Composability.MARKED
- }
- }
-
- // if (candidateDescriptor.type.arguments.size != 1 || !candidateDescriptor.type.arguments[0].type.isUnit()) return false
- if (
- type != null &&
- type !== TypeUtils.NO_EXPECTED_TYPE &&
- type.hasComposableAnnotation()
- ) {
- composability += Composability.MARKED
- }
- val parent = element.parent
- val annotations = when {
- element is KtNamedFunction -> element.annotationEntries
- parent is KtAnnotatedExpression -> parent.annotationEntries
- element is KtProperty -> element.annotationEntries
- element is KtParameter -> element.typeReference?.annotationEntries ?: emptyList()
- else -> emptyList()
- }
-
- for (entry in annotations) {
- val descriptor = trace.bindingContext.get(BindingContext.ANNOTATION, entry) ?: continue
- if (descriptor.isComposableAnnotation) {
- composability += Composability.MARKED
- }
- }
-
- if (element is KtLambdaExpression || element is KtFunction) {
- composability = analyzeFunctionContents(trace, element, composability)
- }
-
- trace.record(COMPOSABLE_ANALYSIS, element, composability)
- return composability
- }
-
- override fun registerModuleComponents(
- container: StorageComponentContainer,
- platform: TargetPlatform,
- moduleDescriptor: ModuleDescriptor
- ) {
- if (!platform.isJvm()) return
- container.useInstance(this)
- }
-
- override fun check(
- declaration: KtDeclaration,
- descriptor: DeclarationDescriptor,
- context: DeclarationCheckerContext
- ) {
- when (descriptor) {
- is ClassDescriptor -> {
- val trace = context.trace
- val element = descriptor.findPsi()
- if (element is KtClass) {
- val composableAnnotationEntry = element.annotationEntries.singleOrNull {
- trace.bindingContext.get(
- BindingContext.ANNOTATION,
- it
- )?.isComposableAnnotation ?: false
- }
- if (composableAnnotationEntry != null) {
- trace.report(
- Errors.WRONG_ANNOTATION_TARGET.on(
- composableAnnotationEntry,
- "class which does not extend androidx.compose.Component"
- )
- )
- }
- }
- }
- is PropertyDescriptor -> {}
- is LocalVariableDescriptor -> {}
- is TypeAliasDescriptor -> {}
- is FunctionDescriptor -> analyze(context.trace, descriptor)
- else ->
- throw Error("currently unsupported " + descriptor.javaClass)
- }
- }
-
- override fun check(
- resolvedCall: ResolvedCall<*>,
- reportOn: PsiElement,
- context: CallCheckerContext
- ) {
- val shouldBeTag = shouldInvokeAsTag(context.trace, resolvedCall)
- context.trace.record(
- FCS_RESOLVEDCALL_COMPOSABLE,
- resolvedCall.call.callElement,
- shouldBeTag
- )
- }
-
- override fun checkType(
- expression: KtExpression,
- expressionType: KotlinType,
- expressionTypeWithSmartCast: KotlinType,
- c: ResolutionContext<*>
- ) {
- if (expression is KtLambdaExpression) {
- val expectedType = c.expectedType
- if (expectedType === TypeUtils.NO_EXPECTED_TYPE) return
- val expectedComposable = expectedType.hasComposableAnnotation()
- val composability = analyze(c.trace, expression, c.expectedType)
- if ((expectedComposable && composability == Composability.NOT_COMPOSABLE) ||
- (!expectedComposable && composability == Composability.MARKED)) {
- val isInlineable =
- isInlinedArgument(
- expression.functionLiteral,
- c.trace.bindingContext,
- true
- )
- if (isInlineable) return
-
- val reportOn =
- if (expression.parent is KtAnnotatedExpression)
- expression.parent as KtExpression
- else expression
- c.trace.report(
- Errors.TYPE_MISMATCH.on(
- reportOn,
- expectedType,
- expressionTypeWithSmartCast
- )
- )
- }
- return
- } else {
- val expectedType = c.expectedType
-
- if (expectedType === TypeUtils.NO_EXPECTED_TYPE) return
- if (expectedType === TypeUtils.UNIT_EXPECTED_TYPE) return
-
- val nullableAnyType = expectedType.builtIns.nullableAnyType
- val anyType = expectedType.builtIns.anyType
-
- if (anyType == expectedType.lowerIfFlexible() &&
- nullableAnyType == expectedType.upperIfFlexible()) return
-
- val nullableNothingType = expectedType.builtIns.nullableNothingType
-
- // Handle assigning null to a nullable composable type
- if (expectedType.isMarkedNullable &&
- expressionTypeWithSmartCast == nullableNothingType) return
-
- val expectedComposable = expectedType.hasComposableAnnotation()
- val isComposable = expressionType.hasComposableAnnotation()
-
- if (expectedComposable != isComposable) {
- val reportOn =
- if (expression.parent is KtAnnotatedExpression)
- expression.parent as KtExpression
- else expression
- c.trace.report(
- Errors.TYPE_MISMATCH.on(
- reportOn,
- expectedType,
- expressionTypeWithSmartCast
- )
- )
- }
- return
- }
- }
-
- override fun checkEntries(
- entries: List<KtAnnotationEntry>,
- actualTargets: List<KotlinTarget>,
- trace: BindingTrace
- ) {
- val entry = entries.singleOrNull {
- trace.bindingContext.get(BindingContext.ANNOTATION, it)?.isComposableAnnotation ?: false
- }
- if ((entry?.parent as? KtAnnotatedExpression)?.baseExpression is
- KtObjectLiteralExpression) {
- trace.report(
- Errors.WRONG_ANNOTATION_TARGET.on(
- entry,
- "class which does not extend androidx.compose.Component"
- )
- )
- }
- }
-
- operator fun Composability.plus(rhs: Composability): Composability =
- if (this > rhs) this else rhs
-}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt
new file mode 100644
index 0000000..fc6e5873
--- /dev/null
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt
@@ -0,0 +1,423 @@
+/*
+ * Copyright 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 androidx.compose.plugins.kotlin
+
+import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.container.StorageComponentContainer
+import org.jetbrains.kotlin.container.useInstance
+import org.jetbrains.kotlin.descriptors.CallableDescriptor
+import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
+import org.jetbrains.kotlin.descriptors.FunctionDescriptor
+import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+import org.jetbrains.kotlin.descriptors.PropertyDescriptor
+import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor
+import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
+import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactory2
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.diagnostics.Severity
+import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
+import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap
+import org.jetbrains.kotlin.diagnostics.rendering.Renderers
+import org.jetbrains.kotlin.diagnostics.reportFromPlugin
+import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
+import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
+import org.jetbrains.kotlin.psi.KtAnnotatedExpression
+import org.jetbrains.kotlin.psi.KtAnnotationEntry
+import org.jetbrains.kotlin.psi.KtClass
+import org.jetbrains.kotlin.psi.KtElement
+import org.jetbrains.kotlin.psi.KtExpression
+import org.jetbrains.kotlin.psi.KtFile
+import org.jetbrains.kotlin.psi.KtFunction
+import org.jetbrains.kotlin.psi.KtFunctionLiteral
+import org.jetbrains.kotlin.psi.KtLambdaExpression
+import org.jetbrains.kotlin.psi.KtProperty
+import org.jetbrains.kotlin.psi.KtPropertyAccessor
+import org.jetbrains.kotlin.psi.KtPsiUtil
+import org.jetbrains.kotlin.resolve.BindingContext
+import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
+import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentForExpression
+import org.jetbrains.kotlin.resolve.calls.checkers.AdditionalTypeChecker
+import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
+import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
+import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext
+import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
+import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
+import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall
+import org.jetbrains.kotlin.resolve.inline.InlineUtil.canBeInlineArgument
+import org.jetbrains.kotlin.resolve.inline.InlineUtil.isInline
+import org.jetbrains.kotlin.resolve.inline.InlineUtil.isInlineParameter
+import org.jetbrains.kotlin.resolve.inline.InlineUtil.isInlinedArgument
+import org.jetbrains.kotlin.types.KotlinType
+import org.jetbrains.kotlin.types.TypeUtils
+import org.jetbrains.kotlin.types.lowerIfFlexible
+import org.jetbrains.kotlin.types.upperIfFlexible
+import org.jetbrains.kotlin.util.OperatorNameConventions
+import org.jetbrains.kotlin.types.typeUtil.builtIns
+
+object ComposeErrorMessages : DefaultErrorMessages.Extension {
+ private val MAP = DiagnosticFactoryToRendererMap("Compose")
+ override fun getMap() = MAP
+
+ init {
+ Errors.Initializer.initializeFactoryNames(ComposeErrors::class.java)
+ MAP.put(
+ ComposeErrors.COMPOSABLE_INVOCATION,
+ "@Composable invocations can only happen from the context of a @Composable function"
+ )
+
+ MAP.put(
+ ComposeErrors.COMPOSABLE_EXPECTED,
+ "Functions which invoke @Composable functions must be marked with the @Composable " +
+ "annotation"
+ )
+
+ MAP.put(
+ ComposeErrors.CAPTURED_COMPOSABLE_INVOCATION,
+ "Composable calls are not allowed inside the {0} parameter of {1}",
+ Renderers.NAME,
+ Renderers.COMPACT
+ )
+ }
+}
+
+object ComposeErrors {
+ // error goes on the composable call in a non-composable function
+ @JvmField
+ val COMPOSABLE_INVOCATION =
+ DiagnosticFactory0.create<PsiElement>(Severity.ERROR)
+
+ // error goes on the non-composable function with composable calls
+ @JvmField
+ val COMPOSABLE_EXPECTED =
+ DiagnosticFactory0.create<PsiElement>(Severity.ERROR)
+
+ @JvmField
+ val CAPTURED_COMPOSABLE_INVOCATION =
+ DiagnosticFactory2.create<PsiElement, DeclarationDescriptor, DeclarationDescriptor>(
+ Severity.ERROR
+ )
+}
+
+open class ComposableCallChecker : CallChecker, AdditionalTypeChecker,
+ StorageComponentContainerContributor {
+ override fun registerModuleComponents(
+ container: StorageComponentContainer,
+ platform: TargetPlatform,
+ moduleDescriptor: ModuleDescriptor
+ ) {
+ if (!platform.isJvm()) return
+ container.useInstance(this)
+ }
+
+ override fun check(
+ resolvedCall: ResolvedCall<*>,
+ reportOn: PsiElement,
+ context: CallCheckerContext
+ ) {
+ if (!resolvedCall.isComposableInvocation()) return
+ val bindingContext = context.trace.bindingContext
+ var node: PsiElement? = reportOn
+ loop@while (node != null) {
+ when (node) {
+ is KtFunctionLiteral -> {
+ // keep going, as this is a "KtFunction", but we actually want the
+ // KtLambdaExpression
+ }
+ is KtLambdaExpression -> {
+ val descriptor = bindingContext[BindingContext.FUNCTION, node.functionLiteral]
+ if (descriptor == null) {
+ illegalCall(context, reportOn)
+ return
+ }
+ val composable = descriptor.isComposableCallable(bindingContext)
+ if (composable) return
+ val arg = getArgumentDescriptor(node.functionLiteral, bindingContext)
+ if (arg?.type?.composablePreventCaptureContract() == true) {
+ context.trace.record(
+ ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+ descriptor,
+ false
+ )
+ context.trace.reportFromPlugin(
+ ComposeErrors.CAPTURED_COMPOSABLE_INVOCATION.on(
+ reportOn,
+ arg,
+ arg.containingDeclaration
+ ),
+ ComposeErrorMessages
+ )
+ return
+ }
+ // TODO(lmr): in future, we should check for CALLS_IN_PLACE contract
+ val inlined = arg != null &&
+ canBeInlineArgument(node.functionLiteral) &&
+ isInline(arg.containingDeclaration) &&
+ isInlineParameter(arg)
+ if (!inlined) {
+ illegalCall(context, reportOn)
+ return
+ } else {
+ // since the function is inlined, we continue going up the PSI tree
+ // until we find a composable context. We also mark this lambda
+ context.trace.record(
+ ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+ descriptor,
+ true
+ )
+ }
+ }
+ is KtFunction -> {
+ val descriptor = bindingContext[BindingContext.FUNCTION, node]
+ if (descriptor == null) {
+ illegalCall(context, reportOn)
+ return
+ }
+ val composable = descriptor.isComposableCallable(bindingContext)
+ if (!composable) {
+ illegalCall(context, reportOn, node.nameIdentifier ?: node)
+ }
+ return
+ }
+ is KtProperty -> {
+ // NOTE: since we're explicitly going down a different branch for
+ // KtPropertyAccessor, the ONLY time we make it into this branch is when the
+ // call was done in the initializer of the property/variable.
+ val descriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, node]
+ if (
+ descriptor !is LocalVariableDescriptor &&
+ node.annotationEntries.hasComposableAnnotation(bindingContext)
+ ) {
+ // composables shouldn't have initializers in the first place
+ illegalCall(context, reportOn)
+ return
+ }
+ }
+ is KtPropertyAccessor -> {
+ val property = node.property
+ if (!property.annotationEntries.hasComposableAnnotation(bindingContext)) {
+ illegalCall(context, reportOn, property.nameIdentifier ?: property)
+ }
+ return
+ }
+ is KtFile -> {
+ // if we've made it this far, the call was made in a non-composable context.
+ illegalCall(context, reportOn)
+ return
+ }
+ is KtClass -> {
+ // composable calls are never allowed in the initializers of a class
+ illegalCall(context, reportOn)
+ return
+ }
+ }
+ node = node.parent as? KtElement
+ }
+ }
+
+ private fun illegalCall(
+ context: CallCheckerContext,
+ callEl: PsiElement,
+ functionEl: PsiElement? = null
+ ) {
+ context.trace.reportFromPlugin(
+ ComposeErrors.COMPOSABLE_INVOCATION.on(callEl),
+ ComposeErrorMessages
+ )
+ if (functionEl != null) {
+ context.trace.reportFromPlugin(
+ ComposeErrors.COMPOSABLE_EXPECTED.on(functionEl),
+ ComposeErrorMessages
+ )
+ }
+ }
+
+ override fun checkType(
+ expression: KtExpression,
+ expressionType: KotlinType,
+ expressionTypeWithSmartCast: KotlinType,
+ c: ResolutionContext<*>
+ ) {
+ val bindingContext = c.trace.bindingContext
+ val expectedType = c.expectedType
+ if (expectedType === TypeUtils.NO_EXPECTED_TYPE) return
+ if (expectedType === TypeUtils.UNIT_EXPECTED_TYPE) return
+ val expectedComposable = expectedType.hasComposableAnnotation()
+ if (expression is KtLambdaExpression) {
+ val descriptor = bindingContext[BindingContext.FUNCTION, expression.functionLiteral]
+ ?: return
+ val isComposable = descriptor.isComposableCallable(bindingContext)
+ if (expectedComposable != isComposable) {
+ val isInlineable = isInlinedArgument(
+ expression.functionLiteral,
+ c.trace.bindingContext,
+ true
+ )
+ if (isInlineable) return
+
+ val reportOn =
+ if (expression.parent is KtAnnotatedExpression)
+ expression.parent as KtExpression
+ else expression
+ c.trace.report(
+ Errors.TYPE_MISMATCH.on(
+ reportOn,
+ expectedType,
+ expressionTypeWithSmartCast
+ )
+ )
+ }
+ return
+ } else {
+ val nullableAnyType = expectedType.builtIns.nullableAnyType
+ val anyType = expectedType.builtIns.anyType
+
+ if (anyType == expectedType.lowerIfFlexible() &&
+ nullableAnyType == expectedType.upperIfFlexible()) return
+
+ val nullableNothingType = expectedType.builtIns.nullableNothingType
+
+ // Handle assigning null to a nullable composable type
+ if (expectedType.isMarkedNullable &&
+ expressionTypeWithSmartCast == nullableNothingType) return
+ val isComposable = expressionType.hasComposableAnnotation()
+
+ if (expectedComposable != isComposable) {
+ val reportOn =
+ if (expression.parent is KtAnnotatedExpression)
+ expression.parent as KtExpression
+ else expression
+ c.trace.report(
+ Errors.TYPE_MISMATCH.on(
+ reportOn,
+ expectedType,
+ expressionTypeWithSmartCast
+ )
+ )
+ }
+ return
+ }
+ }
+}
+
+fun ResolvedCall<*>.isComposableInvocation(): Boolean {
+ if (this is VariableAsFunctionResolvedCall) {
+ if (variableCall.candidateDescriptor.type.hasComposableAnnotation())
+ return true
+ if (functionCall.resultingDescriptor.hasComposableAnnotation()) return true
+ return false
+ }
+ val candidateDescriptor = candidateDescriptor
+ if (candidateDescriptor is FunctionDescriptor) {
+ if (candidateDescriptor.isOperator &&
+ candidateDescriptor.name == OperatorNameConventions.INVOKE) {
+ if (dispatchReceiver?.type?.hasComposableAnnotation() == true) {
+ return true
+ }
+ }
+ }
+ return when (candidateDescriptor) {
+ is ValueParameterDescriptor -> false
+ is LocalVariableDescriptor -> false
+ is PropertyDescriptor -> candidateDescriptor.hasComposableAnnotation()
+ is PropertyGetterDescriptor ->
+ candidateDescriptor.correspondingProperty.hasComposableAnnotation()
+ else -> candidateDescriptor.hasComposableAnnotation()
+ }
+}
+
+internal fun CallableDescriptor.isMarkedAsComposable(): Boolean {
+ return when (this) {
+ is PropertyGetterDescriptor -> correspondingProperty.hasComposableAnnotation()
+ is ValueParameterDescriptor -> type.hasComposableAnnotation()
+ is LocalVariableDescriptor -> type.hasComposableAnnotation()
+ is PropertyDescriptor -> hasComposableAnnotation()
+ else -> hasComposableAnnotation()
+ }
+}
+
+// if you called this, it would need to be a composable call (composer, changed, etc.)
+fun CallableDescriptor.isComposableCallable(bindingContext: BindingContext): Boolean {
+ // if it's marked as composable then we're done
+ if (isMarkedAsComposable()) return true
+ if (
+ this is FunctionDescriptor &&
+ bindingContext[ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR, this] == true
+ ) {
+ // even though it's not marked, it is inferred as so by the type system (by being passed
+ // into a parameter marked as composable or a variable typed as one. This isn't much
+ // different than being marked explicitly.
+ return true
+ }
+ val functionLiteral = findPsi() as? KtFunctionLiteral
+ // if it isn't a function literal then we are out of things to try.
+ ?: return false
+
+ if (functionLiteral.annotationEntries.hasComposableAnnotation(bindingContext)) {
+ // in this case the function literal itself is being annotated as composable but the
+ // annotation isn't in the descriptor itself
+ return true
+ }
+ val lambdaExpr = functionLiteral.parent as? KtLambdaExpression
+ if (
+ lambdaExpr != null &&
+ bindingContext[ComposeWritableSlices.INFERRED_COMPOSABLE_LITERAL, lambdaExpr] == true
+ ) {
+ // this lambda was marked as inferred to be composable
+ return true
+ }
+ // TODO(lmr): i'm not sure that this is actually needed at this point, since this should have
+ // been covered by the TypeResolutionInterceptorExtension
+ val arg = getArgumentDescriptor(functionLiteral, bindingContext) ?: return false
+ return arg.type.hasComposableAnnotation()
+}
+
+// the body of this function can have composable calls in it, even if it itself is not
+// composable (it might capture a composer from the parent)
+fun FunctionDescriptor.allowsComposableCalls(bindingContext: BindingContext): Boolean {
+ // if it's callable as a composable, then the answer is yes.
+ if (isComposableCallable(bindingContext)) return true
+ // otherwise, this is only true if it is a lambda which can be capable of composer
+ // capture
+ return bindingContext[
+ ComposeWritableSlices.LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE,
+ this
+ ] == true
+}
+
+private fun getArgumentDescriptor(
+ argument: KtFunction,
+ bindingContext: BindingContext
+): ValueParameterDescriptor? {
+ val call = KtPsiUtil.getParentCallIfPresent(argument) ?: return null
+ val resolvedCall = call.getResolvedCall(bindingContext) ?: return null
+ val valueArgument = resolvedCall.call.getValueArgumentForExpression(argument) ?: return null
+ val mapping = resolvedCall.getArgumentMapping(valueArgument) as? ArgumentMatch ?: return null
+ return mapping.valueParameter
+}
+
+fun List<KtAnnotationEntry>.hasComposableAnnotation(bindingContext: BindingContext): Boolean {
+ for (entry in this) {
+ val descriptor = bindingContext.get(BindingContext.ANNOTATION, entry) ?: continue
+ if (descriptor.isComposableAnnotation) return true
+ }
+ return false
+}
\ No newline at end of file
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableFunctionDescriptor.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableFunctionDescriptor.kt
deleted file mode 100644
index 486ecab..0000000
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableFunctionDescriptor.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose.plugins.kotlin
-
-import org.jetbrains.kotlin.descriptors.CallableDescriptor
-import org.jetbrains.kotlin.descriptors.FunctionDescriptor
-import org.jetbrains.kotlin.descriptors.PropertyDescriptor
-import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
-import org.jetbrains.kotlin.descriptors.SourceElement
-import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
-import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
-import org.jetbrains.kotlin.types.TypeSubstitutor
-
-interface ComposableCallableDescriptor : CallableDescriptor {
- val underlyingDescriptor: CallableDescriptor
-}
-
-interface ComposableFunctionDescriptor : FunctionDescriptor, ComposableCallableDescriptor {
- override val underlyingDescriptor: FunctionDescriptor
-}
-
-interface ComposablePropertyDescriptor : PropertyDescriptor, ComposableCallableDescriptor {
- override val underlyingDescriptor: PropertyDescriptor
-}
-
-class ComposablePropertyDescriptorImpl(
- override val underlyingDescriptor: PropertyDescriptor
-) : PropertyDescriptor by underlyingDescriptor, ComposablePropertyDescriptor {
- override fun substitute(substitutor: TypeSubstitutor): PropertyDescriptor? {
- return underlyingDescriptor.substitute(substitutor)?.let {
- ComposablePropertyDescriptorImpl(it)
- }
- }
-}
-
-fun ComposableFunctionDescriptor(
- underlyingDescriptor: FunctionDescriptor
-): ComposableFunctionDescriptor {
- return if (underlyingDescriptor is SimpleFunctionDescriptor) {
- ComposableSimpleFunctionDescriptorImpl(underlyingDescriptor)
- } else {
- ComposableFunctionDescriptorImpl(underlyingDescriptor)
- }
-}
-
-class ComposableFunctionDescriptorImpl(
- override val underlyingDescriptor: FunctionDescriptor
-) : FunctionDescriptor by underlyingDescriptor, ComposableFunctionDescriptor {
- override fun substitute(substitutor: TypeSubstitutor): FunctionDescriptor? {
- return underlyingDescriptor.substitute(substitutor)?.let {
- ComposableFunctionDescriptor(it)
- }
- }
-}
-
-class ComposableSimpleFunctionDescriptorImpl(
- override val underlyingDescriptor: SimpleFunctionDescriptor
-) : SimpleFunctionDescriptor by underlyingDescriptor, ComposableFunctionDescriptor,
- DescriptorWithContainerSource {
- override fun substitute(substitutor: TypeSubstitutor): FunctionDescriptor? {
- return underlyingDescriptor.substitute(substitutor)?.let {
- ComposableFunctionDescriptor(it)
- }
- }
-
- override fun getSource(): SourceElement {
- return underlyingDescriptor.source
- }
-
- override val containerSource: DeserializedContainerSource?
- get() = (underlyingDescriptor as DescriptorWithContainerSource).containerSource
-
- override fun toString(): String {
- return "ComposableSimpleFunctionDescriptorImpl(${this.underlyingDescriptor.name})"
- }
-}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeCallResolutionInterceptorExtension.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeCallResolutionInterceptorExtension.kt
deleted file mode 100644
index 843f682..0000000
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeCallResolutionInterceptorExtension.kt
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose.plugins.kotlin
-
-import com.intellij.psi.PsiElement
-import org.jetbrains.kotlin.descriptors.CallableDescriptor
-import org.jetbrains.kotlin.descriptors.FunctionDescriptor
-import org.jetbrains.kotlin.descriptors.PropertyDescriptor
-import org.jetbrains.kotlin.extensions.internal.CallResolutionInterceptorExtension
-import org.jetbrains.kotlin.incremental.components.LookupLocation
-import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.psi.KtExpression
-import org.jetbrains.kotlin.psi.KtFunction
-import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.calls.CallResolver
-import org.jetbrains.kotlin.resolve.calls.CandidateResolver
-import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
-import org.jetbrains.kotlin.resolve.calls.context.TemporaryTraceAndCache
-import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall
-import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionMutableResolvedCall
-import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall
-import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCallImpl
-import org.jetbrains.kotlin.resolve.calls.tasks.TracingStrategy
-import org.jetbrains.kotlin.resolve.calls.tower.ImplicitScopeTower
-import org.jetbrains.kotlin.resolve.calls.tower.NewResolutionOldInference
-import org.jetbrains.kotlin.resolve.inline.InlineUtil
-import org.jetbrains.kotlin.resolve.scopes.ResolutionScope
-
-typealias Candidate = NewResolutionOldInference.MyCandidate
-
-fun ComposableCandidate(candidate: Candidate): Candidate {
- val (eagerDiagnostics, resolvedCall) = candidate
-
- if (resolvedCall !is VariableAsFunctionMutableResolvedCall) {
- @Suppress("UNCHECKED_CAST")
- return Candidate(
- eagerDiagnostics = eagerDiagnostics,
- resolvedCall = ComposableResolvedCall(resolvedCall),
- finalDiagnosticsComputation = null
- )
- }
-
- val functionCall = ComposableResolvedCall(resolvedCall.functionCall)
-
- val variableCall = resolvedCall.variableCall
-
- val newCall = VariableAsFunctionResolvedCallImpl(functionCall, variableCall)
-
- return Candidate(
- eagerDiagnostics = eagerDiagnostics,
- resolvedCall = newCall,
- finalDiagnosticsComputation = null
- )
-}
-
-@Suppress("UNCHECKED_CAST")
-class ComposableResolvedCall<T : CallableDescriptor>(
- private val underlying: MutableResolvedCall<T>
-) : MutableResolvedCall<T> by underlying {
- private val composableCandidateDescriptor =
- when (val descriptor = underlying.candidateDescriptor) {
- is FunctionDescriptor -> ComposableFunctionDescriptor(descriptor)
- is PropertyDescriptor -> ComposablePropertyDescriptorImpl(descriptor)
- else -> descriptor
- }
- override fun getCandidateDescriptor(): T = composableCandidateDescriptor as T
- override fun getResultingDescriptor(): T {
- return when (val descriptor = underlying.resultingDescriptor) {
- is FunctionDescriptor -> ComposableFunctionDescriptor(descriptor)
- is PropertyDescriptor -> ComposablePropertyDescriptorImpl(descriptor)
- else -> descriptor
- } as T
- }
-}
-
-// TODO(lmr): This class is only needed for the syntax highlighting for composable calls right
-// now. The ComposableFunctionDescriptors are not otherwise needed. We should refactor the
-// syntax highlighting plugin ASAP so that we can get rid of this plugin.
-@Suppress("INVISIBLE_REFERENCE", "EXPERIMENTAL_IS_NOT_ENABLED")
-@OptIn(org.jetbrains.kotlin.extensions.internal.InternalNonStableExtensionPoints::class)
-open class ComposeCallResolutionInterceptorExtension : CallResolutionInterceptorExtension {
- override fun interceptCandidates(
- candidates: Collection<Candidate>,
- context: BasicCallResolutionContext,
- candidateResolver: CandidateResolver,
- callResolver: CallResolver?,
- name: Name,
- kind: NewResolutionOldInference.ResolutionKind,
- tracing: TracingStrategy
- ): Collection<Candidate> {
- if (candidates.isEmpty()) return candidates
-
- val others = mutableListOf<Candidate>()
- val composables = mutableListOf<Candidate>()
-
- for (candidate in candidates) {
- val resolvedCall = candidate.resolvedCall
- val candidateDescriptor = resolvedCall.candidateDescriptor
- when {
- candidateDescriptor is ComposableFunctionDescriptor -> {
- others.add(candidate)
- }
- resolvedCall is VariableAsFunctionResolvedCall &&
- resolvedCall.variableCall
- .candidateDescriptor
- .type
- .hasComposableAnnotation() -> {
- composables.add(candidate)
- }
- resolvedCall.candidateDescriptor.hasComposableAnnotation() -> {
- composables.add(candidate)
- }
- else -> others.add(candidate)
- }
- }
-
- return when {
- composables.isEmpty() || !isInComposableScope(context) -> candidates
- else -> others + composables.map { ComposableCandidate(it) }
- }
- }
-
- override fun interceptCandidates(
- candidates: Collection<FunctionDescriptor>,
- scopeTower: ImplicitScopeTower,
- resolutionContext: BasicCallResolutionContext,
- resolutionScope: ResolutionScope,
- callResolver: CallResolver?,
- name: Name,
- location: LookupLocation
- ): Collection<FunctionDescriptor> {
- val others = mutableListOf<FunctionDescriptor>()
- val composables = mutableListOf<FunctionDescriptor>()
-
- for (candidate in candidates) {
- when {
- candidate.hasComposableAnnotation() -> {
- composables.add(candidate)
- }
- else -> others.add(candidate)
- }
- }
-
- return when {
- composables.isEmpty() || !isInComposableScope(resolutionContext) -> candidates
- else -> others + composables.map { ComposableFunctionDescriptor(it) }
- }
- }
-
- private fun isInComposableScope(resolutionContext: BasicCallResolutionContext): Boolean {
- val call = resolutionContext.call
- val temporaryTraceForComposeableCall =
- TemporaryTraceAndCache.create(
- resolutionContext,
- "trace to resolve composable call", call.callElement as KtExpression
- )
-
- val composableAnnotationChecker =
- ComposableAnnotationChecker.get(call.callElement.project)
-
- // Ensure we are in a composable context
- // TODO(lmr): there ought to be a better way to do this
- var walker: PsiElement? = call.callElement
- while (walker != null) {
- val descriptor = try {
- resolutionContext.trace[BindingContext.FUNCTION, walker]
- } catch (e: Exception) {
- null
- }
- if (descriptor != null) {
- val composability = composableAnnotationChecker.analyze(
- temporaryTraceForComposeableCall.trace,
- descriptor
- )
- if (composability != ComposableAnnotationChecker.Composability.NOT_COMPOSABLE) {
- return true
- }
-
- // If the descriptor is for an inlined lambda, infer composability from the
- // outer scope
- if (!(walker is KtFunction) ||
- !InlineUtil.isInlinedArgument(
- walker,
- resolutionContext.trace.bindingContext,
- true
- )
- )
- break
- }
- walker = try { walker.parent } catch (e: Throwable) { null }
- }
- return false
- }
-}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeDiagnosticSuppressor.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeDiagnosticSuppressor.kt
index 7a41ed0..223aca0 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeDiagnosticSuppressor.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeDiagnosticSuppressor.kt
@@ -22,10 +22,7 @@
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.psi.KtAnnotatedExpression
import org.jetbrains.kotlin.psi.KtCallExpression
-import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.BindingTraceContext
-import org.jetbrains.kotlin.resolve.TemporaryBindingTrace
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.diagnostics.DiagnosticSuppressor
@@ -61,17 +58,11 @@
}
}
if (diagnostic.factory == Errors.NAMED_ARGUMENTS_NOT_ALLOWED) {
- val functionCall = diagnostic.psiElement.parent.parent.parent.parent as KtExpression
if (bindingContext != null) {
val call = (diagnostic.psiElement.parent.parent.parent.parent as KtCallExpression)
.getCall(bindingContext).getResolvedCall(bindingContext)
- val temporaryTrace = TemporaryBindingTrace.create(
- BindingTraceContext.createTraceableBindingTrace(),
- "trace to resolve ktx call",
- functionCall
- )
if (call != null) {
- return ComposableAnnotationChecker().shouldInvokeAsTag(temporaryTrace, call)
+ return call.isComposableInvocation()
}
}
}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeFqNames.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeFqNames.kt
index 8b4bb14..6aa6442 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeFqNames.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeFqNames.kt
@@ -48,7 +48,6 @@
val StableMarker = ComposeUtils.composeFqName("StableMarker")
val Stable = ComposeUtils.composeFqName("Stable")
val Composer = ComposeUtils.composeFqName("Composer")
- val Untracked = ComposeUtils.composeFqName("Untracked")
val UiComposer = FqName.fromSegments(listOf("androidx", "ui", "node", "UiComposer"))
val Package = FqName.fromSegments(listOf("androidx", "compose"))
val Function0 = FqName.fromSegments(listOf("kotlin", "jvm", "functions", "Function0"))
@@ -87,8 +86,15 @@
val contract = annotations.findAnnotation(ComposeFqNames.ComposableContract) ?: return null
return contract.argumentValue("readonly")?.value as? Boolean
}
-fun Annotated.hasUntrackedAnnotation(): Boolean =
- annotations.findAnnotation(ComposeFqNames.Untracked) != null
+fun Annotated.composableTrackedContract(): Boolean? {
+ val contract = annotations.findAnnotation(ComposeFqNames.ComposableContract) ?: return null
+ return contract.argumentValue("tracked")?.value as? Boolean
+}
+
+fun Annotated.composablePreventCaptureContract(): Boolean? {
+ val contract = annotations.findAnnotation(ComposeFqNames.ComposableContract) ?: return null
+ return contract.argumentValue("preventCapture")?.value as? Boolean
+}
internal val KotlinType.isSpecialType: Boolean get() =
this === NO_EXPECTED_TYPE || this === UNIT_EXPECTED_TYPE
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposePlugin.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposePlugin.kt
index ad29e5d..74baea8 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposePlugin.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposePlugin.kt
@@ -26,7 +26,6 @@
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
-import org.jetbrains.kotlin.extensions.internal.CandidateInterceptor
import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptor
class ComposeCommandLineProcessor : CommandLineProcessor {
@@ -66,7 +65,7 @@
) {
StorageComponentContainerContributor.registerExtension(
project,
- ComposableAnnotationChecker()
+ ComposableCallChecker()
)
StorageComponentContainerContributor.registerExtension(
project,
@@ -87,10 +86,6 @@
IrGenerationExtension.registerExtension(project,
ComposeIrGenerationExtension()
)
- CandidateInterceptor.registerExtension(
- project,
- ComposeCallResolutionInterceptorExtension()
- )
}
}
}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt
index d11b205..586d01b 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeTypeResolutionInterceptorExtension.kt
@@ -16,12 +16,13 @@
package androidx.compose.plugins.kotlin
+import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices.INFERRED_COMPOSABLE_DESCRIPTOR
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
-import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptorExtension
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtLambdaExpression
+import org.jetbrains.kotlin.psi.psiUtil.getAnnotationEntries
import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeUtils
@@ -54,18 +55,12 @@
): KotlinType {
if (resultType === TypeUtils.NO_EXPECTED_TYPE) return resultType
if (element !is KtLambdaExpression) return resultType
- val module = context.scope.ownerDescriptor.module
- val checker =
- StorageComponentContainerContributor.getInstances(element.project).single {
- it is ComposableAnnotationChecker
- } as ComposableAnnotationChecker
- if ((context.expectedType.hasComposableAnnotation() || checker.analyze(
- context.trace,
- element,
- resultType
- ) != ComposableAnnotationChecker.Composability.NOT_COMPOSABLE)
+ if (
+ element.getAnnotationEntries().hasComposableAnnotation(context.trace.bindingContext) ||
+ context.expectedType.hasComposableAnnotation()
) {
- return resultType.makeComposable(module)
+ context.trace.record(ComposeWritableSlices.INFERRED_COMPOSABLE_LITERAL, element, true)
+ return resultType.makeComposable(context.scope.ownerDescriptor.module)
}
return resultType
}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
index 9cc10a1..ccf92be4 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
@@ -49,9 +49,7 @@
) {
val trace = context.trace
val call = resolvedCall.call.callElement
- val shouldBeTag =
- ComposableAnnotationChecker.get(call.project).shouldInvokeAsTag(trace, resolvedCall)
- if (shouldBeTag) {
+ if (resolvedCall.isComposableInvocation()) {
var walker: PsiElement? = call
while (walker != null) {
val parent = walker.parent
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeDefaultErrorMessages.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeDefaultErrorMessages.kt
index ca4d395..86fd149 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeDefaultErrorMessages.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeDefaultErrorMessages.kt
@@ -10,19 +10,6 @@
init {
MAP.put(
- ComposeErrors.OPEN_MODEL,
- "Model objects cannot be open or abstract"
- )
- MAP.put(
- ComposeErrors.SUSPEND_FUNCTION_USED_AS_SFC,
- "Suspend functions are not allowed to be used as Components"
- )
- MAP.put(
- ComposeErrors.COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE,
- "Functions which invoke @Composable functions must be marked with the @Composable " +
- "annotation"
- )
- MAP.put(
ComposeErrors.ILLEGAL_ASSIGN_TO_UNIONTYPE,
"Value of type {0} can't be assigned to union type {1}.",
RENDER_COLLECTION_OF_TYPES,
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
index b7ab4aa7..9499817 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
@@ -32,11 +32,6 @@
* Error messages
*/
public interface ComposeErrors {
- DiagnosticFactory0<PsiElement> OPEN_MODEL = DiagnosticFactory0.create(ERROR);
- DiagnosticFactory0<KtElement>
- SUSPEND_FUNCTION_USED_AS_SFC = DiagnosticFactory0.create(ERROR);
- DiagnosticFactory0<PsiElement>
- COMPOSABLE_INVOCATION_IN_NON_COMPOSABLE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory2<KtExpression, Collection<KotlinType>, Collection<KotlinType>>
ILLEGAL_ASSIGN_TO_UNIONTYPE = DiagnosticFactory2.create(ERROR);
DiagnosticFactory0<PsiElement>
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeWritableSlices.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeWritableSlices.kt
index b0edb3e..a719612 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeWritableSlices.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeWritableSlices.kt
@@ -1,22 +1,21 @@
package androidx.compose.plugins.kotlin.analysis
-import androidx.compose.plugins.kotlin.ComposableAnnotationChecker
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
-import org.jetbrains.kotlin.psi.KtElement
+import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.util.slicedMap.BasicWritableSlice
import org.jetbrains.kotlin.util.slicedMap.RewritePolicy
import org.jetbrains.kotlin.util.slicedMap.WritableSlice
import org.jetbrains.kotlin.types.KotlinType
object ComposeWritableSlices {
- val COMPOSABLE_ANALYSIS: WritableSlice<KtElement, ComposableAnnotationChecker.Composability> =
- BasicWritableSlice(RewritePolicy.DO_NOTHING)
- val FCS_RESOLVEDCALL_COMPOSABLE: WritableSlice<KtElement, Boolean> =
- BasicWritableSlice(RewritePolicy.DO_NOTHING)
val INFERRED_COMPOSABLE_DESCRIPTOR: WritableSlice<FunctionDescriptor, Boolean> =
BasicWritableSlice(RewritePolicy.DO_NOTHING)
+ val LAMBDA_CAPABLE_OF_COMPOSER_CAPTURE: WritableSlice<FunctionDescriptor, Boolean> =
+ BasicWritableSlice(RewritePolicy.DO_NOTHING)
+ val INFERRED_COMPOSABLE_LITERAL: WritableSlice<KtLambdaExpression, Boolean> =
+ BasicWritableSlice(RewritePolicy.DO_NOTHING)
val STABLE_TYPE: WritableSlice<KotlinType, Boolean?> =
BasicWritableSlice(RewritePolicy.DO_NOTHING)
val IS_COMPOSABLE_CALL: WritableSlice<IrAttributeContainer, Boolean> =
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
index e8384da..79808e3 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
@@ -16,11 +16,12 @@
package androidx.compose.plugins.kotlin.compiler.lower
-import androidx.compose.plugins.kotlin.ComposableAnnotationChecker
import androidx.compose.plugins.kotlin.ComposeFqNames
import androidx.compose.plugins.kotlin.KtxNameConventions
+import androidx.compose.plugins.kotlin.allowsComposableCalls
import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
import androidx.compose.plugins.kotlin.irTrace
+import androidx.compose.plugins.kotlin.isComposableCallable
import androidx.compose.plugins.kotlin.isMarkedStable
import androidx.compose.plugins.kotlin.isSpecialType
import org.jetbrains.kotlin.backend.common.descriptors.isFunctionOrKFunctionType
@@ -308,8 +309,6 @@
return false
}
- private val composableChecker = ComposableAnnotationChecker()
-
protected val KotlinType.isEnum
get() =
(constructor.declarationDescriptor as? ClassDescriptor)?.kind == ClassKind.ENUM_CLASS
@@ -343,17 +342,16 @@
} else calculated
}
- fun FunctionDescriptor.isComposable(): Boolean {
- val composability = composableChecker.analyze(bindingTrace, this)
- return when (composability) {
- ComposableAnnotationChecker.Composability.NOT_COMPOSABLE -> false
- ComposableAnnotationChecker.Composability.MARKED -> true
- ComposableAnnotationChecker.Composability.INFERRED -> true
- }
+ fun FunctionDescriptor.isComposableCallable(): Boolean {
+ return isComposableCallable(context.bindingContext)
}
- fun IrFunction.isComposable(): Boolean = descriptor.isComposable()
- fun IrFunctionExpression.isComposable(): Boolean = function.isComposable()
+ fun FunctionDescriptor.allowsComposableCalls(): Boolean {
+ return allowsComposableCalls(context.bindingContext)
+ }
+
+ fun IrFunctionExpression.allowsComposableCalls(): Boolean =
+ function.descriptor.allowsComposableCalls(context.bindingContext)
private fun IrFunction.createParameterDeclarations() {
fun ParameterDescriptor.irValueParameter() = IrValueParameterImpl(
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
index 21a172b..ef37fa3 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
@@ -20,7 +20,7 @@
import androidx.compose.plugins.kotlin.KtxNameConventions
import androidx.compose.plugins.kotlin.composableReadonlyContract
import androidx.compose.plugins.kotlin.composableRestartableContract
-import androidx.compose.plugins.kotlin.hasUntrackedAnnotation
+import androidx.compose.plugins.kotlin.composableTrackedContract
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
@@ -267,6 +267,7 @@
interface IrChangedBitMaskVariable : IrChangedBitMaskValue {
fun asStatements(): List<IrStatement>
fun irOrSetBitsAtSlot(slot: Int, value: IrExpression): IrExpression
+ fun irSetSlotUncertain(slot: Int): IrExpression
}
/**
@@ -597,9 +598,9 @@
if (!scope.isComposable) return super.visitFunction(declaration)
val restartable = declaration.shouldBeRestartable()
val isLambda = declaration.isLambda()
- // if the lambda is untracked, we generate the body like a non-restartable function since
- // the group/update scope is not going to be handled by the ComposableLambda class
- val isTracked = !declaration.descriptor.hasUntrackedAnnotation()
+
+ // we use != false because a null value is treated as "tracked"
+ val isTracked = declaration.descriptor.composableTrackedContract() != false
if (declaration.body == null) return declaration
@@ -1141,6 +1142,7 @@
// first we create the necessary local variables for default handling.
val setDefaults = mutableStatementContainer()
+ val skipDefaults = mutableStatementContainer()
parameters.forEachIndexed { index, param ->
val defaultValue = param.defaultValue
if (defaultParam != null && defaultValue != null) {
@@ -1185,12 +1187,42 @@
isVar = false,
exactName = true
).also {
- setDefaults.statements.add(
- irIf(
- condition = irGetBit(defaultParam, index),
- body = irSet(it, transformedDefault)
+ if (
+ !defaultExprIsStatic[index] &&
+ dirty is IrChangedBitMaskVariable
+ ) {
+ // if we are setting the parameter to the default expression and
+ // running the default expression again, and the expression isn't
+ // provably static, we can't be certain that the dirty value of
+ // SAME is going to be valid. We must mark it as UNCERTAIN. In order
+ // to avoid slot-table misalignment issues, we must mark it as
+ // UNCERTAIN even when we skip the defaults, so that any child
+ // function receives UNCERTAIN vs SAME/DIFFERENT deterministically.
+ setDefaults.statements.add(
+ irIf(
+ condition = irGetBit(defaultParam, index),
+ body = irBlock(
+ statements = listOf(
+ irSet(it, transformedDefault),
+ dirty.irSetSlotUncertain(index)
+ )
+ )
+ )
)
- )
+ skipDefaults.statements.add(
+ irIf(
+ condition = irGetBit(defaultParam, index),
+ body = dirty.irSetSlotUncertain(index)
+ )
+ )
+ } else {
+ setDefaults.statements.add(
+ irIf(
+ condition = irGetBit(defaultParam, index),
+ body = irSet(it, transformedDefault)
+ )
+ )
+ }
}
}
@@ -1234,11 +1266,16 @@
}
val defaultValueIsStatic = defaultExprIsStatic[index]
+ val callChanged = irChanged(irGet(scope.remappedParams[param]!!))
+ val isChanged = if (defaultParam != null && !defaultValueIsStatic)
+ irAndAnd(irIsProvided(defaultParam, index), callChanged)
+ else
+ callChanged
val modifyDirtyFromChangedResult = dirty.irOrSetBitsAtSlot(
index,
irIfThenElse(
context.irBuiltIns.intType,
- irChanged(irGet(scope.remappedParams[param]!!)),
+ isChanged,
// if the value has changed, update the bits in the slot to be
// "Different"
thenPart = irConst(ParamState.Different.bitsForSlot(index)),
@@ -1272,12 +1309,8 @@
// with an "Uncertain" state AND the value was provided. This is safe to do
// because this will remain true or false for *every* execution of the
// function, so we will never get a slot table misalignment as a result.
- val condition = if (defaultParam != null) irAndAnd(
- irIsProvided(defaultParam, index),
- irIsUncertain(changedParam, index)
- ) else irIsUncertain(changedParam, index)
irIf(
- condition = condition,
+ condition = irIsUncertain(changedParam, index),
body = modifyDirtyFromChangedResult
)
}
@@ -1372,7 +1405,12 @@
)
),
// composer.skipCurrentGroup()
- elsePart = irSkipCurrentGroup()
+ elsePart = irBlock(
+ statements = listOf(
+ irSkipCurrentGroup(),
+ *skipDefaults.statements.toTypedArray()
+ )
+ )
)
)
}
@@ -3246,6 +3284,17 @@
)
)
}
+
+ override fun irSetSlotUncertain(slot: Int): IrExpression {
+ val temp = temps[paramIndexForSlot(slot)]
+ return irSet(
+ temp,
+ irAnd(
+ irGet(temp),
+ irInv(irConst(ParamState.Static.bitsForSlot(slot)))
+ )
+ )
+ }
}
}
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
index 453ca95..c87e697 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
@@ -18,8 +18,9 @@
import androidx.compose.plugins.kotlin.ComposeUtils
import androidx.compose.plugins.kotlin.ComposeUtils.composeInternalFqName
+import androidx.compose.plugins.kotlin.allowsComposableCalls
import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
-import androidx.compose.plugins.kotlin.hasUntrackedAnnotation
+import androidx.compose.plugins.kotlin.composableTrackedContract
import androidx.compose.plugins.kotlin.irTrace
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
@@ -167,7 +168,7 @@
override fun visitFunction(declaration: IrFunction): IrStatement {
val descriptor = declaration.descriptor
- val composable = descriptor.isComposable()
+ val composable = descriptor.allowsComposableCalls()
val canRemember = composable &&
// Don't use remember in an inline function
!descriptor.isInline &&
@@ -315,7 +316,7 @@
override fun visitFunctionExpression(expression: IrFunctionExpression): IrExpression {
val declarationContext = declarationContextStack.peek()
?: return super.visitFunctionExpression(expression)
- return if (expression.isComposable())
+ return if (expression.allowsComposableCalls())
visitComposableFunctionExpression(expression, declarationContext)
else
visitNonComposableFunctionExpression(expression, declarationContext)
@@ -506,7 +507,8 @@
}
private fun IrExpression?.isNullOrStable() = this == null || type.toKotlinType().isStable()
- private fun IrFunctionExpression.isTracked() = !function.descriptor.hasUntrackedAnnotation()
+ private fun IrFunctionExpression.isTracked() =
+ function.descriptor.composableTrackedContract() != false
}
// This must match the highest value of FunctionXX which is current Function22
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
index 4d4e36f..591111c 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
@@ -21,6 +21,7 @@
import androidx.compose.plugins.kotlin.generateSymbols
import androidx.compose.plugins.kotlin.hasComposableAnnotation
import androidx.compose.plugins.kotlin.irTrace
+import androidx.compose.plugins.kotlin.isComposableCallable
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.ir.copyTo
import org.jetbrains.kotlin.backend.common.ir.copyTypeParametersFrom
@@ -148,7 +149,7 @@
fun IrCall.withComposerParamIfNeeded(composerParam: IrValueParameter): IrCall {
val isComposableLambda = isComposableLambdaInvoke()
- if (!symbol.descriptor.isComposable() && !isComposableLambda)
+ if (!symbol.descriptor.isComposableCallable() && !isComposableLambda)
return this
val ownerFn = when {
isComposableLambda -> {
@@ -282,11 +283,9 @@
if (transformedFunctionSet.contains(this)) return this
// if not a composable fn, nothing we need to do
- if (!descriptor.isComposable()) return this
-
- // emit children lambdas are marked composable, but technically they are unit lambdas... so
- // we don't want to transform them
- if (isEmitInlineChildrenLambda()) return this
+ if (!descriptor.isComposableCallable(context.bindingContext)) {
+ return this
+ }
// if this function is an inlined lambda passed as an argument to an inline function (and
// is NOT a composable lambda), then we don't want to transform it. Ideally, this
@@ -654,10 +653,6 @@
}
return false
}
-
- private fun IrFunction.isEmitInlineChildrenLambda(): Boolean {
- return false
- }
}
private fun ModuleDescriptor.findTopLevel(name: FqName) =
diff --git a/compose/compose-dispatch/api/0.1.0-dev15.txt b/compose/compose-dispatch/api/0.1.0-dev15.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/0.1.0-dev15.txt
+++ b/compose/compose-dispatch/api/0.1.0-dev15.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/api/current.txt b/compose/compose-dispatch/api/current.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/current.txt
+++ b/compose/compose-dispatch/api/current.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/api/public_plus_experimental_0.1.0-dev15.txt b/compose/compose-dispatch/api/public_plus_experimental_0.1.0-dev15.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/compose/compose-dispatch/api/public_plus_experimental_0.1.0-dev15.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/api/public_plus_experimental_current.txt b/compose/compose-dispatch/api/public_plus_experimental_current.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/public_plus_experimental_current.txt
+++ b/compose/compose-dispatch/api/public_plus_experimental_current.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/api/restricted_0.1.0-dev15.txt b/compose/compose-dispatch/api/restricted_0.1.0-dev15.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/restricted_0.1.0-dev15.txt
+++ b/compose/compose-dispatch/api/restricted_0.1.0-dev15.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/api/restricted_current.txt b/compose/compose-dispatch/api/restricted_current.txt
index da8a09e..15547a8 100644
--- a/compose/compose-dispatch/api/restricted_current.txt
+++ b/compose/compose-dispatch/api/restricted_current.txt
@@ -1,19 +1,23 @@
// Signature format: 3.0
package androidx.compose.dispatch {
+ public final class ActualAndroidKt {
+ method public static androidx.compose.dispatch.MonotonicFrameClock getDefaultMonotonicFrameClock();
+ }
+
public final class AndroidUiDispatcher extends kotlinx.coroutines.CoroutineDispatcher {
method public void dispatch(kotlin.coroutines.CoroutineContext context, Runnable block);
method public android.view.Choreographer getChoreographer();
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.dispatch.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
- method public androidx.compose.dispatch.AndroidUiDispatcher getCurrentThread();
- method public androidx.compose.dispatch.AndroidUiDispatcher getMain();
- property public final androidx.compose.dispatch.AndroidUiDispatcher CurrentThread;
- property public final androidx.compose.dispatch.AndroidUiDispatcher Main;
+ method public kotlin.coroutines.CoroutineContext getCurrentThread();
+ method public kotlin.coroutines.CoroutineContext getMain();
+ property public final kotlin.coroutines.CoroutineContext CurrentThread;
+ property public final kotlin.coroutines.CoroutineContext Main;
}
public final class AndroidUiDispatcherKt {
@@ -25,12 +29,20 @@
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
- public interface MonotonicFrameClock {
+ public interface MonotonicFrameClock extends kotlin.coroutines.CoroutineContext.Element {
+ method public default kotlin.coroutines.CoroutineContext.Key<?> getKey();
method public suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ property public default kotlin.coroutines.CoroutineContext.Key<?> key;
+ field public static final androidx.compose.dispatch.MonotonicFrameClock.Key Key;
+ }
+
+ public static final class MonotonicFrameClock.Key implements kotlin.coroutines.CoroutineContext.Key<androidx.compose.dispatch.MonotonicFrameClock> {
}
public final class MonotonicFrameClockKt {
method public static suspend inline <R> Object? withFrameMillis(androidx.compose.dispatch.MonotonicFrameClock, kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameMillis(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend <R> Object? withFrameNanos(kotlin.jvm.functions.Function1<? super java.lang.Long,? extends R> onFrame, kotlin.coroutines.Continuation<? super R> p);
}
}
diff --git a/compose/compose-dispatch/src/androidAndroidTest/kotlin/androidx/compose/dispatch/AndroidUiDispatcherTest.kt b/compose/compose-dispatch/src/androidAndroidTest/kotlin/androidx/compose/dispatch/AndroidUiDispatcherTest.kt
index c031c35..6c9e7d2 100644
--- a/compose/compose-dispatch/src/androidAndroidTest/kotlin/androidx/compose/dispatch/AndroidUiDispatcherTest.kt
+++ b/compose/compose-dispatch/src/androidAndroidTest/kotlin/androidx/compose/dispatch/AndroidUiDispatcherTest.kt
@@ -97,12 +97,13 @@
return@setOnTouchListener true
}
viewTouchedOnFrame.complete(preDrawCount)
+ // Use the frame clock provided by AndroidUiDispatcher.Main
launch(AndroidUiDispatcher.Main) {
ranInputJobOnFrame.complete(preDrawCount)
- AndroidUiDispatcher.Main.frameClock.withFrameNanos {
+ withFrameNanos {
withFrameOnFrame.complete(preDrawCount)
}
- AndroidUiDispatcher.Main.frameClock.withFrameNanos {
+ withFrameNanos {
withFrameSecondCall.complete(preDrawCount)
}
}
diff --git a/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/ActualAndroid.kt b/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/ActualAndroid.kt
new file mode 100644
index 0000000..7249b60
--- /dev/null
+++ b/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/ActualAndroid.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright 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 androidx.compose.dispatch
+
+import android.os.Looper
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.withContext
+
+/**
+ * This is an inaccurate implementation that will only be used when running linked against
+ * Android SDK stubs in host-side tests. A real implementation should synchronize with the
+ * device's default display's vsync rate.
+ */
+private object SdkStubsFallbackFrameClock : MonotonicFrameClock {
+ private const val DefaultFrameDelay = 16L // milliseconds
+
+ override suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R =
+ withContext(Dispatchers.Main) {
+ delay(DefaultFrameDelay)
+ onFrame(System.nanoTime())
+ }
+}
+
+actual val DefaultMonotonicFrameClock: MonotonicFrameClock by lazy {
+ // When linked against Android SDK stubs and running host-side tests, APIs such as
+ // Looper.getMainLooper() that will never return null on a real device will return null.
+ // This branch offers an alternative solution.
+ if (Looper.getMainLooper() != null) AndroidUiDispatcher.Main[MonotonicFrameClock]!!
+ else SdkStubsFallbackFrameClock
+}
diff --git a/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/AndroidUiDispatcher.kt b/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/AndroidUiDispatcher.kt
index e3d3a05..cadcf6c 100644
--- a/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/AndroidUiDispatcher.kt
+++ b/compose/compose-dispatch/src/androidMain/kotlin/androidx/compose/dispatch/AndroidUiDispatcher.kt
@@ -18,6 +18,8 @@
import android.os.Looper
import android.view.Choreographer
+import androidx.compose.dispatch.AndroidUiDispatcher.Companion.CurrentThread
+import androidx.compose.dispatch.AndroidUiDispatcher.Companion.Main
import androidx.core.os.HandlerCompat
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
@@ -105,7 +107,7 @@
result
}
for (i in 0 until toRun.size) {
- // This callback can't throw, see AndroidUiCompositionFrameClock
+ // This callback can't throw, see AndroidUiFrameClock
toRun[i].doFrame(frameTimeNanos)
}
toRun.clear()
@@ -149,33 +151,37 @@
companion object {
/**
- * The [AndroidUiDispatcher] for the process's main thread.
+ * The [CoroutineContext] containing the [AndroidUiDispatcher] and its [frameClock] for the
+ * process's main thread.
*/
- val Main by lazy {
- AndroidUiDispatcher(
+ val Main: CoroutineContext by lazy {
+ val dispatcher = AndroidUiDispatcher(
if (isMainThread()) Choreographer.getInstance()
else runBlocking(Dispatchers.Main) { Choreographer.getInstance() },
HandlerCompat.createAsync(Looper.getMainLooper())
)
+
+ dispatcher + dispatcher.frameClock
}
- private val currentThread: ThreadLocal<AndroidUiDispatcher> =
- object : ThreadLocal<AndroidUiDispatcher>() {
- override fun initialValue(): AndroidUiDispatcher = AndroidUiDispatcher(
+ private val currentThread: ThreadLocal<CoroutineContext> =
+ object : ThreadLocal<CoroutineContext>() {
+ override fun initialValue(): CoroutineContext = AndroidUiDispatcher(
Choreographer.getInstance(),
HandlerCompat.createAsync(Looper.myLooper()
?: error("no Looper on this thread"))
- )
+ ).let { it + it.frameClock }
}
/**
- * The canonical [AndroidUiDispatcher] for the calling thread. Returns [Main] if accessed
- * from the process's main thread.
+ * The canonical [CoroutineContext] containing the [AndroidUiDispatcher] and its
+ * [frameClock] for the calling thread. Returns [Main] if accessed from the process's
+ * main thread.
*
* Throws [IllegalArgumentException] if the calling thread does not have
* both a [Choreographer] and an active [Looper].
*/
- val CurrentThread: AndroidUiDispatcher get() = if (isMainThread()) Main else {
+ val CurrentThread: CoroutineContext get() = if (isMainThread()) Main else {
currentThread.get() ?: error("no AndroidUiDispatcher for this thread")
}
}
diff --git a/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/Expect.kt b/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/Expect.kt
new file mode 100644
index 0000000..60b9777
--- /dev/null
+++ b/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/Expect.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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 androidx.compose.dispatch
+
+/**
+ * The [MonotonicFrameClock] used by [withFrameNanos] and [withFrameMillis] if one is not present
+ * in the calling [kotlin.coroutines.CoroutineContext].
+ */
+// Implementor's note:
+// This frame clock implementation should try to synchronize with the vsync rate of the device's
+// default display. Without this synchronization, any usage of this default clock will result
+// in inconsistent animation frame timing and associated visual artifacts.
+expect val DefaultMonotonicFrameClock: MonotonicFrameClock
diff --git a/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/MonotonicFrameClock.kt b/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/MonotonicFrameClock.kt
index 2561001..055d94b 100644
--- a/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/MonotonicFrameClock.kt
+++ b/compose/compose-dispatch/src/commonMain/kotlin/androidx/compose/dispatch/MonotonicFrameClock.kt
@@ -16,12 +16,15 @@
package androidx.compose.dispatch
+import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.coroutineContext
+
/**
* Provides a time source for display frames and the ability to perform an action on the next frame.
* This may be used for matching timing with the refresh rate of a display or otherwise
* synchronizing work with a desired frame rate.
*/
-interface MonotonicFrameClock {
+interface MonotonicFrameClock : CoroutineContext.Element {
/**
* Suspends until a new frame is requested, immediately invokes [onFrame] with the frame time
* in nanoseconds in the calling context of frame dispatch, then resumes with the result from
@@ -36,6 +39,10 @@
* completes it must not provide the same value again for a subsequent call.
*/
suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R
+
+ override val key: CoroutineContext.Key<*> get() = Key
+
+ companion object Key : CoroutineContext.Key<MonotonicFrameClock>
}
/**
@@ -56,3 +63,44 @@
suspend inline fun <R> MonotonicFrameClock.withFrameMillis(
crossinline onFrame: (frameTimeMillis: Long) -> R
): R = withFrameNanos { onFrame(it / 1_000_000L) }
+
+/**
+ * Suspends until a new frame is requested, immediately invokes [onFrame] with the frame time
+ * in nanoseconds in the calling context of frame dispatch, then resumes with the result from
+ * [onFrame].
+ *
+ * `frameTimeNanos` should be used when calculating animation time deltas from frame to frame
+ * as it may be normalized to the target time for the frame, not necessarily a direct,
+ * "now" value.
+ *
+ * The time base of the value provided by [withFrameNanos] is implementation defined.
+ * Time values provided are monotonically increasing; after a call to [withFrameNanos]
+ * completes it must not provide the same value again for a subsequent call.
+ *
+ * This function will invoke [MonotonicFrameClock.withFrameNanos] using the calling
+ * [CoroutineContext]'s [MonotonicFrameClock] or a default frame clock if one is not present
+ * in the [CoroutineContext].
+ */
+suspend fun <R> withFrameNanos(onFrame: (frameTimeMillis: Long) -> R): R =
+ (coroutineContext[MonotonicFrameClock] ?: DefaultMonotonicFrameClock).withFrameNanos(onFrame)
+
+/**
+ * Suspends until a new frame is requested, immediately invokes [onFrame] with the frame time
+ * in nanoseconds in the calling context of frame dispatch, then resumes with the result from
+ * [onFrame].
+ *
+ * `frameTimeNanos` should be used when calculating animation time deltas from frame to frame
+ * as it may be normalized to the target time for the frame, not necessarily a direct,
+ * "now" value.
+ *
+ * The time base of the value provided by [MonotonicFrameClock.withFrameMillis] is
+ * implementation defined. Time values provided are monotonically increasing; after a call to
+ * [MonotonicFrameClock.withFrameMillis] completes it must not provide the same value again for
+ * a subsequent call.
+ *
+ * This function will invoke [MonotonicFrameClock.withFrameNanos] using the calling
+ * [CoroutineContext]'s [MonotonicFrameClock] or a default frame clock if one is not present
+ * in the [CoroutineContext].
+ */
+suspend fun <R> withFrameMillis(onFrame: (frameTimeMillis: Long) -> R): R =
+ (coroutineContext[MonotonicFrameClock] ?: DefaultMonotonicFrameClock).withFrameMillis(onFrame)
diff --git a/compose/compose-dispatch/src/desktopMain/kotlin/androidx/compose/dispatch/ActualDesktop.kt b/compose/compose-dispatch/src/desktopMain/kotlin/androidx/compose/dispatch/ActualDesktop.kt
new file mode 100644
index 0000000..c5ec776
--- /dev/null
+++ b/compose/compose-dispatch/src/desktopMain/kotlin/androidx/compose/dispatch/ActualDesktop.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 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 androidx.compose.dispatch
+
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.withContext
+
+/**
+ * TODO: a more appropriate implementation that matches the vsync rate of the default display.
+ * The current implementation will result in clock skew over time as resuming from delay() is not
+ * guaranteed to be precise or frame-accurate.
+ */
+private object MainDispatcherFrameClock : MonotonicFrameClock {
+ private const val DefaultFrameDelay = 16L // milliseconds
+
+ override suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R =
+ withContext(Dispatchers.Main) {
+ delay(DefaultFrameDelay)
+ onFrame(System.nanoTime())
+ }
+}
+
+actual val DefaultMonotonicFrameClock: MonotonicFrameClock
+ get() = MainDispatcherFrameClock
diff --git a/compose/compose-runtime/api/0.1.0-dev04.txt b/compose/compose-runtime/api/0.1.0-dev04.txt
index b2df2c4..04122f2 100644
--- a/compose/compose-runtime/api/0.1.0-dev04.txt
+++ b/compose/compose-runtime/api/0.1.0-dev04.txt
@@ -14,7 +14,7 @@
public final class Ambient<T> {
method @androidx.compose.Composable public void Provider(T? value, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- field public static final androidx.compose.Ambient.Companion! Companion;
+ field public static final androidx.compose.Ambient.Companion Companion;
}
public static final class Ambient.Companion {
@@ -52,7 +52,7 @@
method public void postFrameCallback(android.view.Choreographer.FrameCallback callback);
method public void postFrameCallbackDelayed(long delayMillis, android.view.Choreographer.FrameCallback callback);
method public void removeFrameCallback(android.view.Choreographer.FrameCallback callback);
- field public static final androidx.compose.Choreographer! INSTANCE;
+ field public static final androidx.compose.Choreographer INSTANCE;
}
public interface CommitScope {
@@ -68,7 +68,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -192,7 +192,7 @@
method public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
public final class Handler {
@@ -231,7 +231,7 @@
public final class LooperWrapper {
method public android.os.Looper getMainLooper();
- field public static final androidx.compose.LooperWrapper! INSTANCE;
+ field public static final androidx.compose.LooperWrapper INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Model {
@@ -259,7 +259,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -361,7 +361,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
@@ -410,7 +410,7 @@
public final class Trace {
method public void beginSection(String name);
method public void endSection();
- field public static final androidx.compose.Trace! INSTANCE;
+ field public static final androidx.compose.Trace INSTANCE;
}
public final class TraceKt {
diff --git a/compose/compose-runtime/api/0.1.0-dev06.txt b/compose/compose-runtime/api/0.1.0-dev06.txt
index e5d8f3c..80cc76e 100644
--- a/compose/compose-runtime/api/0.1.0-dev06.txt
+++ b/compose/compose-runtime/api/0.1.0-dev06.txt
@@ -66,7 +66,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -198,7 +198,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -253,7 +253,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -294,7 +294,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -372,7 +372,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev07.txt b/compose/compose-runtime/api/0.1.0-dev07.txt
index 3a35e96..996370f 100644
--- a/compose/compose-runtime/api/0.1.0-dev07.txt
+++ b/compose/compose-runtime/api/0.1.0-dev07.txt
@@ -183,7 +183,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -238,7 +238,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -279,7 +279,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -358,7 +358,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev08.txt b/compose/compose-runtime/api/0.1.0-dev08.txt
index e021728..247f2f1 100644
--- a/compose/compose-runtime/api/0.1.0-dev08.txt
+++ b/compose/compose-runtime/api/0.1.0-dev08.txt
@@ -180,7 +180,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -236,7 +236,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -277,7 +277,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -351,7 +351,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev09.txt b/compose/compose-runtime/api/0.1.0-dev09.txt
index 7f20b56..75d397d 100644
--- a/compose/compose-runtime/api/0.1.0-dev09.txt
+++ b/compose/compose-runtime/api/0.1.0-dev09.txt
@@ -180,7 +180,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -236,7 +236,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -277,7 +277,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -351,7 +351,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev10.txt b/compose/compose-runtime/api/0.1.0-dev10.txt
index a912d13..7aca2bf 100644
--- a/compose/compose-runtime/api/0.1.0-dev10.txt
+++ b/compose/compose-runtime/api/0.1.0-dev10.txt
@@ -189,7 +189,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -245,7 +245,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -287,7 +287,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -369,7 +369,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev11.txt b/compose/compose-runtime/api/0.1.0-dev11.txt
index 0d2efa2..fd94620 100644
--- a/compose/compose-runtime/api/0.1.0-dev11.txt
+++ b/compose/compose-runtime/api/0.1.0-dev11.txt
@@ -197,7 +197,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -248,7 +248,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -290,7 +290,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -376,7 +376,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev12.txt b/compose/compose-runtime/api/0.1.0-dev12.txt
index bf64a96..3e19bc1 100644
--- a/compose/compose-runtime/api/0.1.0-dev12.txt
+++ b/compose/compose-runtime/api/0.1.0-dev12.txt
@@ -225,7 +225,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -278,7 +278,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -324,7 +324,7 @@
method protected abstract void scheduleChangesDispatch();
property public abstract androidx.compose.CompositionFrameClock compositionFrameClock;
property public abstract kotlinx.coroutines.CoroutineScope effectCoroutineScope;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -413,7 +413,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev14.txt b/compose/compose-runtime/api/0.1.0-dev14.txt
index ea8ec62b..408c044 100644
--- a/compose/compose-runtime/api/0.1.0-dev14.txt
+++ b/compose/compose-runtime/api/0.1.0-dev14.txt
@@ -36,7 +36,7 @@
method public android.view.Choreographer getChoreographer();
method public androidx.compose.CompositionFrameClock getCompositionFrameClock();
property public final androidx.compose.CompositionFrameClock compositionFrameClock;
- field public static final androidx.compose.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
@@ -241,7 +241,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -268,11 +268,6 @@
method @androidx.compose.Composable public static inline <T> T! key(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> block);
}
- public final class KeySourceInfoKt {
- method @androidx.compose.InternalComposeApi public static String? keySourceInfoOf(Object key);
- method @androidx.compose.InternalComposeApi public static void resetSourceInfo();
- }
-
@androidx.compose.Stable public interface MutableState<T> extends androidx.compose.State<T> {
method public operator T! component1();
method public operator kotlin.jvm.functions.Function1<T,kotlin.Unit> component2();
@@ -296,7 +291,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -337,7 +332,7 @@
method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.CompositionFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.CompositionFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.CompositionFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -430,7 +425,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/0.1.0-dev15.txt b/compose/compose-runtime/api/0.1.0-dev15.txt
index 668b060..0cff070 100644
--- a/compose/compose-runtime/api/0.1.0-dev15.txt
+++ b/compose/compose-runtime/api/0.1.0-dev15.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -167,7 +169,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -179,9 +180,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -210,17 +208,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -260,26 +257,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -304,28 +306,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -409,7 +406,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -474,12 +471,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -501,7 +509,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -519,12 +527,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -536,99 +544,99 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -636,13 +644,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -696,6 +704,128 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/api/api_lint.ignore b/compose/compose-runtime/api/api_lint.ignore
index 215da53..4c30fa1 100644
--- a/compose/compose-runtime/api/api_lint.ignore
+++ b/compose/compose-runtime/api/api_lint.ignore
@@ -25,26 +25,16 @@
CallbackName: androidx.compose.CompositionLifecycleObserver:
Class should be named CompositionLifecycleCallback
+CallbackName: androidx.compose.snapshots.SnapshotStateObserver:
+ Class should be named SnapshotStateCallback
DocumentExceptions: androidx.compose.ComposerKt#getCurrentComposer():
Method ComposerKt.getCurrentComposer appears to be throwing kotlin.NotImplementedError; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.compose.frames.FramesKt#commit(androidx.compose.frames.Frame):
- Method FramesKt.commit appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.compose.frames.FramesKt#currentFrame():
- Method FramesKt.currentFrame appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.compose.frames.FramesKt#writable(T, androidx.compose.frames.Framed, androidx.compose.frames.Frame):
- Method FramesKt.writable appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
+DocumentExceptions: androidx.compose.snapshots.SnapshotApplyResult.Failure#check():
+ Method Failure.check appears to be throwing androidx.compose.snapshots.SnapshotApplyConflictException; this should be recorded with a @Throws annotation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-ExceptionName: androidx.compose.frames.FrameAborted:
- Exceptions must be named `FooException`, was `FrameAborted`
-
-
-KotlinOperator: androidx.compose.ComposerUpdater#set(V, kotlin.jvm.functions.Function2<? super T,? super V,? extends kotlin.Unit>):
- Note that adding the `operator` keyword would allow calling this method using operator syntax
-KotlinOperator: androidx.compose.ComposerUpdater#set(int, kotlin.jvm.functions.Function2<? super T,? super java.lang.Integer,kotlin.Unit>):
- Note that adding the `operator` keyword would allow calling this method using operator syntax
KotlinOperator: androidx.compose.SlotReader#get(androidx.compose.Anchor):
Note that adding the `operator` keyword would allow calling this method using operator syntax
KotlinOperator: androidx.compose.SlotReader#get(int):
@@ -53,6 +43,10 @@
Note that adding the `operator` keyword would allow calling this method using operator syntax
KotlinOperator: androidx.compose.SlotWriter#get(int):
Note that adding the `operator` keyword would allow calling this method using operator syntax
+KotlinOperator: androidx.compose.Updater#set(V, kotlin.jvm.functions.Function2<? super T,? super V,? extends kotlin.Unit>):
+ Note that adding the `operator` keyword would allow calling this method using operator syntax
+KotlinOperator: androidx.compose.Updater#set(int, kotlin.jvm.functions.Function2<? super T,? super java.lang.Integer,kotlin.Unit>):
+ Note that adding the `operator` keyword would allow calling this method using operator syntax
MissingNullability: androidx.compose.BuildableMap#containsKey(Object) parameter #0:
@@ -69,6 +63,8 @@
Missing nullability on method `getGroupDataKey` return
MissingNullability: androidx.compose.SlotReader#getGroupNode():
Missing nullability on method `getGroupNode` return
+MissingNullability: androidx.compose.snapshots.Snapshot.Companion#getCurrent():
+ Missing nullability on method `getCurrent` return
NoByteOrShort: androidx.compose.Composer#changed(byte) parameter #0:
@@ -76,6 +72,7 @@
NoByteOrShort: androidx.compose.Composer#changed(short) parameter #0:
Should avoid odd sized primitives; use `int` instead of `short` in parameter value in androidx.compose.Composer.changed(short value)
+
NotCloseable: androidx.compose.SlotReader:
Classes that release resources (close()) should implement AutoClosable and CloseGuard: class androidx.compose.SlotReader
NotCloseable: androidx.compose.SlotWriter:
diff --git a/compose/compose-runtime/api/current.txt b/compose/compose-runtime/api/current.txt
index 668b060..0cff070 100644
--- a/compose/compose-runtime/api/current.txt
+++ b/compose/compose-runtime/api/current.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -167,7 +169,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -179,9 +180,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -210,17 +208,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -260,26 +257,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -304,28 +306,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -409,7 +406,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -474,12 +471,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -501,7 +509,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -519,12 +527,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -536,99 +544,99 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -636,13 +644,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -696,6 +704,128 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev04.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev04.txt
index b2df2c4..04122f2 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev04.txt
@@ -14,7 +14,7 @@
public final class Ambient<T> {
method @androidx.compose.Composable public void Provider(T? value, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- field public static final androidx.compose.Ambient.Companion! Companion;
+ field public static final androidx.compose.Ambient.Companion Companion;
}
public static final class Ambient.Companion {
@@ -52,7 +52,7 @@
method public void postFrameCallback(android.view.Choreographer.FrameCallback callback);
method public void postFrameCallbackDelayed(long delayMillis, android.view.Choreographer.FrameCallback callback);
method public void removeFrameCallback(android.view.Choreographer.FrameCallback callback);
- field public static final androidx.compose.Choreographer! INSTANCE;
+ field public static final androidx.compose.Choreographer INSTANCE;
}
public interface CommitScope {
@@ -68,7 +68,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -192,7 +192,7 @@
method public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
public final class Handler {
@@ -231,7 +231,7 @@
public final class LooperWrapper {
method public android.os.Looper getMainLooper();
- field public static final androidx.compose.LooperWrapper! INSTANCE;
+ field public static final androidx.compose.LooperWrapper INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Model {
@@ -259,7 +259,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -361,7 +361,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
@@ -410,7 +410,7 @@
public final class Trace {
method public void beginSection(String name);
method public void endSection();
- field public static final androidx.compose.Trace! INSTANCE;
+ field public static final androidx.compose.Trace INSTANCE;
}
public final class TraceKt {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev06.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev06.txt
index e5d8f3c..80cc76e 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev06.txt
@@ -66,7 +66,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -198,7 +198,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -253,7 +253,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -294,7 +294,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -372,7 +372,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev07.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev07.txt
index 3a35e96..996370f 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev07.txt
@@ -183,7 +183,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -238,7 +238,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -279,7 +279,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -358,7 +358,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev08.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev08.txt
index e021728..247f2f1 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev08.txt
@@ -180,7 +180,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -236,7 +236,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -277,7 +277,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -351,7 +351,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev09.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev09.txt
index 7f20b56..75d397d 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev09.txt
@@ -180,7 +180,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -236,7 +236,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -277,7 +277,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -351,7 +351,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev10.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev10.txt
index a912d13..7aca2bf 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev10.txt
@@ -189,7 +189,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -245,7 +245,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -287,7 +287,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -369,7 +369,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev11.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev11.txt
index 0d2efa2..fd94620 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev11.txt
@@ -197,7 +197,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -248,7 +248,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -290,7 +290,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -376,7 +376,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev12.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev12.txt
index bf64a96..3e19bc1 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev12.txt
@@ -225,7 +225,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -278,7 +278,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -324,7 +324,7 @@
method protected abstract void scheduleChangesDispatch();
property public abstract androidx.compose.CompositionFrameClock compositionFrameClock;
property public abstract kotlinx.coroutines.CoroutineScope effectCoroutineScope;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -413,7 +413,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev14.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev14.txt
index ea8ec62b..408c044 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev14.txt
@@ -36,7 +36,7 @@
method public android.view.Choreographer getChoreographer();
method public androidx.compose.CompositionFrameClock getCompositionFrameClock();
property public final androidx.compose.CompositionFrameClock compositionFrameClock;
- field public static final androidx.compose.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
@@ -241,7 +241,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -268,11 +268,6 @@
method @androidx.compose.Composable public static inline <T> T! key(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> block);
}
- public final class KeySourceInfoKt {
- method @androidx.compose.InternalComposeApi public static String? keySourceInfoOf(Object key);
- method @androidx.compose.InternalComposeApi public static void resetSourceInfo();
- }
-
@androidx.compose.Stable public interface MutableState<T> extends androidx.compose.State<T> {
method public operator T! component1();
method public operator kotlin.jvm.functions.Function1<T,kotlin.Unit> component2();
@@ -296,7 +291,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -337,7 +332,7 @@
method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.CompositionFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.CompositionFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.CompositionFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -430,7 +425,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev15.txt b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev15.txt
index 668b060..0cff070 100644
--- a/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_0.1.0-dev15.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -167,7 +169,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -179,9 +180,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -210,17 +208,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -260,26 +257,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -304,28 +306,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -409,7 +406,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -474,12 +471,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -501,7 +509,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -519,12 +527,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -536,99 +544,99 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -636,13 +644,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -696,6 +704,128 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/api/public_plus_experimental_current.txt b/compose/compose-runtime/api/public_plus_experimental_current.txt
index 668b060..0cff070 100644
--- a/compose/compose-runtime/api/public_plus_experimental_current.txt
+++ b/compose/compose-runtime/api/public_plus_experimental_current.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -167,7 +169,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -179,9 +180,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -210,17 +208,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -260,26 +257,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -304,28 +306,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -409,7 +406,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -474,12 +471,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -501,7 +509,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -519,12 +527,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -536,99 +544,99 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -636,13 +644,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -696,6 +704,128 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev04.txt b/compose/compose-runtime/api/restricted_0.1.0-dev04.txt
index 5d18ae5..13d6814 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev04.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev04.txt
@@ -14,7 +14,7 @@
public final class Ambient<T> {
method @androidx.compose.Composable public void Provider(T? value, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- field public static final androidx.compose.Ambient.Companion! Companion;
+ field public static final androidx.compose.Ambient.Companion Companion;
}
public static final class Ambient.Companion {
@@ -52,7 +52,7 @@
method public void postFrameCallback(android.view.Choreographer.FrameCallback callback);
method public void postFrameCallbackDelayed(long delayMillis, android.view.Choreographer.FrameCallback callback);
method public void removeFrameCallback(android.view.Choreographer.FrameCallback callback);
- field public static final androidx.compose.Choreographer! INSTANCE;
+ field public static final androidx.compose.Choreographer INSTANCE;
}
public interface CommitScope {
@@ -68,7 +68,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -192,7 +192,7 @@
method public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
public final class Handler {
@@ -231,7 +231,7 @@
public final class LooperWrapper {
method public android.os.Looper getMainLooper();
- field public static final androidx.compose.LooperWrapper! INSTANCE;
+ field public static final androidx.compose.LooperWrapper INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Model {
@@ -259,7 +259,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -376,7 +376,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
@@ -425,7 +425,7 @@
public final class Trace {
method public void beginSection(String name);
method public void endSection();
- field public static final androidx.compose.Trace! INSTANCE;
+ field public static final androidx.compose.Trace INSTANCE;
}
public final class TraceKt {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev06.txt b/compose/compose-runtime/api/restricted_0.1.0-dev06.txt
index 8dbb3d7..533bfb3 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev06.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev06.txt
@@ -66,7 +66,7 @@
method @MainThread public void disposeComposition(android.view.ViewGroup container, androidx.compose.CompositionReference? parent = null);
method @MainThread public void disposeComposition(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null);
method @MainThread public androidx.compose.Composition subcomposeInto(androidx.compose.Emittable container, android.content.Context context, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
- field public static final androidx.compose.Compose! INSTANCE;
+ field public static final androidx.compose.Compose INSTANCE;
}
public final class ComposeAndroidKt {
@@ -199,7 +199,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -254,7 +254,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -310,7 +310,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -388,7 +388,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev07.txt b/compose/compose-runtime/api/restricted_0.1.0-dev07.txt
index 779d132..4cbef81b 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev07.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev07.txt
@@ -190,7 +190,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -245,7 +245,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -301,7 +301,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -380,7 +380,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev08.txt b/compose/compose-runtime/api/restricted_0.1.0-dev08.txt
index bfcc70b..99b7d54 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev08.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev08.txt
@@ -187,7 +187,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -243,7 +243,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -299,7 +299,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -373,7 +373,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev09.txt b/compose/compose-runtime/api/restricted_0.1.0-dev09.txt
index dfb07b5..a2055bb 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev09.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev09.txt
@@ -187,7 +187,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -243,7 +243,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -299,7 +299,7 @@
method protected final void dispatchRecomposes();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -373,7 +373,7 @@
method public <T> T! read(kotlin.jvm.functions.Function1<? super androidx.compose.SlotReader,? extends T> block);
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev10.txt b/compose/compose-runtime/api/restricted_0.1.0-dev10.txt
index ef62c58..35f38f2 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev10.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev10.txt
@@ -196,7 +196,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -252,7 +252,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -309,7 +309,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -391,7 +391,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev11.txt b/compose/compose-runtime/api/restricted_0.1.0-dev11.txt
index 86a1be5..08c525a 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev11.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev11.txt
@@ -205,7 +205,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -256,7 +256,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -313,7 +313,7 @@
method public abstract boolean hasPendingChanges();
method @org.jetbrains.annotations.TestOnly public abstract void recomposeSync();
method protected abstract void scheduleChangesDispatch();
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -399,7 +399,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev12.txt b/compose/compose-runtime/api/restricted_0.1.0-dev12.txt
index dd68229..113d387 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev12.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev12.txt
@@ -238,7 +238,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -291,7 +291,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -352,7 +352,7 @@
method protected abstract void scheduleChangesDispatch();
property public abstract androidx.compose.CompositionFrameClock compositionFrameClock;
property public abstract kotlinx.coroutines.CoroutineScope effectCoroutineScope;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -441,7 +441,7 @@
method @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev14.txt b/compose/compose-runtime/api/restricted_0.1.0-dev14.txt
index b097892..991c1b55 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev14.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev14.txt
@@ -36,7 +36,7 @@
method public android.view.Choreographer getChoreographer();
method public androidx.compose.CompositionFrameClock getCompositionFrameClock();
property public final androidx.compose.CompositionFrameClock compositionFrameClock;
- field public static final androidx.compose.AndroidUiDispatcher.Companion! Companion;
+ field public static final androidx.compose.AndroidUiDispatcher.Companion Companion;
}
public static final class AndroidUiDispatcher.Companion {
@@ -256,7 +256,7 @@
method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
method public void nextFrame();
method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -283,11 +283,6 @@
method @androidx.compose.Composable public static inline <T> T! key(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> block);
}
- public final class KeySourceInfoKt {
- method @androidx.compose.InternalComposeApi public static String? keySourceInfoOf(Object key);
- method @androidx.compose.InternalComposeApi public static void resetSourceInfo();
- }
-
@androidx.compose.Stable public interface MutableState<T> extends androidx.compose.State<T> {
method public operator T! component1();
method public operator kotlin.jvm.functions.Function1<T,kotlin.Unit> component2();
@@ -311,7 +306,7 @@
public final class NullCompilationScope {
method public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field public static final androidx.compose.NullCompilationScope! INSTANCE;
+ field public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserveKt {
@@ -367,7 +362,7 @@
method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.CompositionFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.CompositionFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.CompositionFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
@@ -460,7 +455,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
diff --git a/compose/compose-runtime/api/restricted_0.1.0-dev15.txt b/compose/compose-runtime/api/restricted_0.1.0-dev15.txt
index 49f5841..4b5094e 100644
--- a/compose/compose-runtime/api/restricted_0.1.0-dev15.txt
+++ b/compose/compose-runtime/api/restricted_0.1.0-dev15.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -182,7 +184,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -194,9 +195,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -225,17 +223,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -275,26 +272,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -334,28 +336,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -439,7 +436,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -505,12 +502,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -532,7 +540,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -550,12 +558,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -567,100 +575,100 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
method @kotlin.PublishedApi internal static <T extends androidx.compose.frames.Record> T current(T r, androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -668,13 +676,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -728,6 +736,137 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method @kotlin.PublishedApi internal androidx.compose.snapshots.Snapshot? makeCurrent();
+ method @kotlin.PublishedApi internal void restoreCurrent(androidx.compose.snapshots.Snapshot? snapshot);
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @kotlin.PublishedApi internal androidx.compose.snapshots.Snapshot? removeCurrent();
+ method @kotlin.PublishedApi internal void restoreCurrent(androidx.compose.snapshots.Snapshot? previous);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method @kotlin.PublishedApi internal static <T extends androidx.compose.snapshots.StateRecord> T current(T r, androidx.compose.snapshots.Snapshot snapshot);
+ method @kotlin.PublishedApi internal static void notifyWrite(androidx.compose.snapshots.Snapshot snapshot, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @kotlin.PublishedApi internal static inline <T> T! sync(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method @kotlin.PublishedApi internal static <T extends androidx.compose.snapshots.StateRecord> T writableRecord(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ field @kotlin.PublishedApi internal static final Object lock;
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/api/restricted_current.txt b/compose/compose-runtime/api/restricted_current.txt
index 49f5841..4b5094e 100644
--- a/compose/compose-runtime/api/restricted_current.txt
+++ b/compose/compose-runtime/api/restricted_current.txt
@@ -27,7 +27,7 @@
public final class AmbientKt {
method @androidx.compose.Composable public static void Providers(androidx.compose.ProvidedValue<?>![] values, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
+ method public static <T> androidx.compose.ProvidableAmbient<T> ambientOf(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
method public static <T> androidx.compose.ProvidableAmbient<T> staticAmbientOf(kotlin.jvm.functions.Function0<? extends T>? defaultFactory = null);
}
@@ -74,9 +74,11 @@
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.PROPERTY}) public @interface Composable {
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface ComposableContract {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE}) public @interface ComposableContract {
+ method public abstract boolean preventCapture() default false;
method public abstract boolean readonly() default false;
method public abstract boolean restartable() default true;
+ method public abstract boolean tracked() default true;
}
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.WARNING, message="This API is intended to be targeted by the Compose Compiler Plugin and not called " + "directly.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.TYPEALIAS}) public @interface ComposeCompilerApi {
@@ -182,7 +184,6 @@
public final class CompositionKt {
method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
- method @Deprecated public static androidx.compose.Composition compositionFor(Object container, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function2<? super androidx.compose.SlotTable,? super androidx.compose.Recomposer,? extends androidx.compose.Composer<?>> composerFactory);
method @androidx.compose.ExperimentalComposeApi public static androidx.compose.Composition compositionFor(Object key, androidx.compose.Applier<?> applier, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> onCreated = {});
}
@@ -194,9 +195,6 @@
public abstract class CompositionReference {
}
- @Deprecated @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Direct {
- }
-
public final class EffectsKt {
method @androidx.compose.Composable public static androidx.compose.CompositionReference compositionReference();
method public static kotlin.jvm.functions.Function0<kotlin.Unit> getInvalidate();
@@ -225,17 +223,16 @@
public final class FlowAdapterKt {
method @androidx.compose.Composable @kotlinx.coroutines.ExperimentalCoroutinesApi public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.StateFlow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
- method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
method @androidx.compose.Composable public static <T extends R, R> androidx.compose.State<R> collectAsState(kotlinx.coroutines.flow.Flow<? extends T>, R? initial, kotlin.coroutines.CoroutineContext context = Dispatchers.Main);
}
public final class FrameManager {
method public void ensureStarted();
- method public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
- method @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
- method public void nextFrame();
- method @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
- field public static final androidx.compose.FrameManager! INSTANCE;
+ method @Deprecated public <T> T! framed(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! isolated(kotlin.jvm.functions.Function0<? extends T> block);
+ method @Deprecated public void nextFrame();
+ method @Deprecated @org.jetbrains.annotations.TestOnly public <T> T! unframed(kotlin.jvm.functions.Function0<? extends T> block);
+ field public static final androidx.compose.FrameManager INSTANCE;
}
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.CLASS) public @interface Immutable {
@@ -275,26 +272,31 @@
}
public final class MutableStateKt {
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
- method public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getNeverEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getReferentiallyEqual();
+ method @Deprecated public static kotlin.jvm.functions.Function2<java.lang.Object,java.lang.Object,java.lang.Boolean> getStructurallyEqual();
method public static inline operator <T> T! getValue(androidx.compose.State<T>, Object? thisObj, kotlin.reflect.KProperty<?> property);
- method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual);
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf();
+ method public static <T> androidx.compose.StableMutableList<T> mutableStateListOf(T?... elements);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf();
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> mutableStateMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method public static <T> androidx.compose.MutableState<T> mutableStateOf(T? value, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy());
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> neverEqualPolicy();
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> referentialEqualityPolicy();
method public static inline operator <T> void setValue(androidx.compose.MutableState<T>, Object? thisObj, kotlin.reflect.KProperty<?> property, T? value);
- method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> state(androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, V1> androidx.compose.MutableState<T> stateFor(V1? v1, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T> androidx.compose.MutableState<T> stateFor(Object![]? inputs, kotlin.jvm.functions.Function0<? extends T> init);
method @androidx.compose.Composable public static inline <T, reified V1, reified V2> androidx.compose.MutableState<T>! stateFor(V1? v1, V2? v2, kotlin.jvm.functions.Function0<? extends T> init);
+ method public static <T> androidx.compose.SnapshotMutationPolicy<T> structuralEqualityPolicy();
+ method public static <T> androidx.compose.StableMutableList<T> toMutableStateList(java.util.Collection<? extends T>);
+ method public static <K, V> androidx.compose.StableMutableMap<K,V> toMutableStateMap(Iterable<? extends kotlin.Pair<? extends K,? extends V>>);
}
@Deprecated public final class NullCompilationScope {
method @Deprecated public kotlin.Unit getComposer();
property public final kotlin.Unit composer;
- field @Deprecated public static final androidx.compose.NullCompilationScope! INSTANCE;
- }
-
- public final class ObserveKt {
- method @Deprecated @androidx.compose.Composable public static void Observe(kotlin.jvm.functions.Function0<kotlin.Unit> body);
+ field @Deprecated public static final androidx.compose.NullCompilationScope INSTANCE;
}
public final class ObserverMap<K, V> {
@@ -334,28 +336,23 @@
method public T! getValue();
}
- public final class RecomposeKt {
- method @Deprecated @androidx.compose.Composable public static void Recompose(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> body);
- }
-
public final class Recomposer {
ctor public Recomposer();
method public suspend Object? awaitIdle(kotlin.coroutines.Continuation<? super kotlin.Unit> p);
method public androidx.compose.dispatch.MonotonicFrameClock getFrameClock();
method public boolean hasPendingChanges();
- method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, androidx.compose.dispatch.MonotonicFrameClock frameClock, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
- method public suspend Object? runRecomposeAndApplyChanges(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.coroutines.Continuation<?> p);
+ method public suspend Object? recomposeAndApplyChanges(kotlinx.coroutines.CoroutineScope applyCoroutineScope, long frameCount, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? runRecomposeAndApplyChanges(kotlin.coroutines.Continuation<?> p);
property public final androidx.compose.dispatch.MonotonicFrameClock frameClock;
- field public static final androidx.compose.Recomposer.Companion! Companion;
+ field public static final androidx.compose.Recomposer.Companion Companion;
}
public static final class Recomposer.Companion {
method @org.jetbrains.annotations.TestOnly public androidx.compose.Recomposer current();
- method @Deprecated public boolean hasPendingChanges();
}
public final class RecomposerKt {
- method public static suspend Object? withRunningRecomposer(androidx.compose.dispatch.MonotonicFrameClock frameClock, kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public static suspend Object? withRunningRecomposer(kotlin.jvm.functions.Function3<? super kotlinx.coroutines.CoroutineScope,? super androidx.compose.Recomposer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
}
public final class RememberKt {
@@ -439,7 +436,7 @@
method @androidx.compose.InternalComposeApi @org.jetbrains.annotations.TestOnly public void verifyWellFormed();
method @androidx.compose.InternalComposeApi public <T> T! write(kotlin.jvm.functions.Function1<? super androidx.compose.SlotWriter,? extends T> block);
property public final int size;
- field public static final androidx.compose.SlotTable.Companion! Companion;
+ field public static final androidx.compose.SlotTable.Companion Companion;
}
@androidx.compose.InternalComposeApi public static final class SlotTable.Companion {
@@ -505,12 +502,23 @@
property public final int parentNodes;
}
+ public interface SnapshotMutationPolicy<T> {
+ method public boolean equivalent(T? a, T? b);
+ method @androidx.compose.ExperimentalComposeApi public default T? merge(T? previous, T? current, T? applied);
+ }
+
@androidx.compose.StableMarker @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY}) public @interface Stable {
}
@kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS}) public @interface StableMarker {
}
+ @androidx.compose.Stable public interface StableMutableList<T> extends java.util.List<T> kotlin.jvm.internal.markers.KMutableList {
+ }
+
+ @androidx.compose.Stable public interface StableMutableMap<K, V> extends java.util.Map<K,V> kotlin.jvm.internal.markers.KMutableMap {
+ }
+
@androidx.compose.Stable public interface State<T> {
method public T! getValue();
property public abstract T! value;
@@ -532,7 +540,7 @@
method public abstract Class<?>[] types();
}
- @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
+ @Deprecated @androidx.compose.ExperimentalComposeApi @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Untracked {
}
public final class Updater<T> {
@@ -550,12 +558,12 @@
package androidx.compose.frames {
- public abstract class AbstractRecord implements androidx.compose.frames.Record {
- ctor public AbstractRecord();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public abstract class AbstractRecord implements androidx.compose.frames.Record {
+ ctor @Deprecated public AbstractRecord();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public int frameId;
property public androidx.compose.frames.Record? next;
}
@@ -567,100 +575,100 @@
property public final boolean readonly;
}
- public final class FrameAborted extends java.lang.RuntimeException {
- ctor public FrameAborted(androidx.compose.frames.Frame frame);
- method public androidx.compose.frames.Frame getFrame();
+ @Deprecated public final class FrameAborted extends java.lang.RuntimeException {
+ ctor @Deprecated public FrameAborted(androidx.compose.frames.Frame frame);
+ method @Deprecated public androidx.compose.frames.Frame getFrame();
}
public final class FrameContainersKt {
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf();
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
- method public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
- method public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf();
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T? element);
+ method @Deprecated public static <T> androidx.compose.frames.ModelList<T> modelListOf(T?... elements);
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf();
+ method @Deprecated public static <K, V> androidx.compose.frames.ModelMap<K,V> modelMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
}
public final class FrameIdSetKt {
}
- public interface Framed {
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
+ @Deprecated public interface Framed {
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
property public abstract androidx.compose.frames.Record firstFrameRecord;
}
public final class FramesKt {
- method public static kotlin.Unit? _created(androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
- method public static void abort();
- method public static void abort(androidx.compose.frames.Frame frame);
- method public static void abortHandler();
- method public static void abortHandler(androidx.compose.frames.Frame frame);
- method public static void commit();
- method public static void commit(androidx.compose.frames.Frame frame);
- method public static kotlin.Unit? commitHandler();
+ method @Deprecated public static void _created(androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _readable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static androidx.compose.frames.Record _writable(androidx.compose.frames.Record r, androidx.compose.frames.Framed framed);
+ method @Deprecated public static void abort();
+ method @Deprecated public static void abort(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void abortHandler();
+ method @Deprecated public static void abortHandler(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commit();
+ method @Deprecated public static void commit(androidx.compose.frames.Frame frame);
+ method @Deprecated public static void commitHandler();
method @kotlin.PublishedApi internal static <T extends androidx.compose.frames.Record> T current(T r, androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame currentFrame();
- method public static boolean getInFrame();
- method public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public static androidx.compose.frames.Frame open(boolean readOnly = false);
- method public static androidx.compose.frames.Frame open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
- method public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
- method public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
- method public static void restore(androidx.compose.frames.Frame frame);
- method public static androidx.compose.frames.Frame suspend();
- method public static boolean wasModified(Object value);
- method public static inline <T extends androidx.compose.frames.Record> void withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
- method public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame currentFrame();
+ method @Deprecated public static boolean getInFrame();
+ method @Deprecated public static void observeAllReads(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> readObserver, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public static void open(boolean readOnly = false);
+ method @Deprecated public static void open(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function2<java.lang.Object,? super java.lang.Boolean,kotlin.Unit>? writeObserver = null);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T readable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static kotlin.jvm.functions.Function0<kotlin.Unit> registerCommitObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.frames.Frame,kotlin.Unit> observer);
+ method @Deprecated public static void restore(androidx.compose.frames.Frame frame);
+ method @Deprecated public static androidx.compose.frames.Frame suspend();
+ method @Deprecated public static boolean wasModified(Object value);
+ method @Deprecated public static inline <T extends androidx.compose.frames.Record> T withCurrent(T, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> block);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed);
+ method @Deprecated public static <T extends androidx.compose.frames.Record> T writable(T, androidx.compose.frames.Framed framed, androidx.compose.frames.Frame frame);
}
- public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
- ctor public ModelList();
- method public boolean add(T? element);
- method public void add(int index, T? element);
- method public boolean addAll(int index, java.util.Collection<? extends T> elements);
- method public boolean addAll(java.util.Collection<? extends T> elements);
- method public void clear();
- method public boolean contains(Object? element);
- method public boolean containsAll(java.util.Collection<?> elements);
- method public T! get(int index);
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public int getSize();
- method public int indexOf(Object? element);
- method public boolean isEmpty();
- method public java.util.Iterator<T> iterator();
- method public int lastIndexOf(Object? element);
- method public java.util.ListIterator<T> listIterator();
- method public java.util.ListIterator<T> listIterator(int index);
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public boolean remove(Object? element);
- method public boolean removeAll(java.util.Collection<?> elements);
- method public T! removeAt(int index);
- method public boolean retainAll(java.util.Collection<?> elements);
- method public T! set(int index, T? element);
- method public java.util.List<T> subList(int fromIndex, int toIndex);
+ @Deprecated public final class ModelList<T> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableList java.util.List<T> {
+ ctor @Deprecated public ModelList();
+ method @Deprecated public boolean add(T? element);
+ method @Deprecated public void add(int index, T? element);
+ method @Deprecated public boolean addAll(int index, java.util.Collection<? extends T> elements);
+ method @Deprecated public boolean addAll(java.util.Collection<? extends T> elements);
+ method @Deprecated public void clear();
+ method @Deprecated public boolean contains(Object? element);
+ method @Deprecated public boolean containsAll(java.util.Collection<?> elements);
+ method @Deprecated public T! get(int index);
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public int getSize();
+ method @Deprecated public int indexOf(Object? element);
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public java.util.Iterator<T> iterator();
+ method @Deprecated public int lastIndexOf(Object? element);
+ method @Deprecated public java.util.ListIterator<T> listIterator();
+ method @Deprecated public java.util.ListIterator<T> listIterator(int index);
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public boolean remove(Object? element);
+ method @Deprecated public boolean removeAll(java.util.Collection<?> elements);
+ method @Deprecated public T! removeAt(int index);
+ method @Deprecated public boolean retainAll(java.util.Collection<?> elements);
+ method @Deprecated public T! set(int index, T? element);
+ method @Deprecated public java.util.List<T> subList(int fromIndex, int toIndex);
property public androidx.compose.frames.Record firstFrameRecord;
property public int size;
}
- public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
- ctor public ModelMap();
- method public void clear();
- method public boolean containsKey(Object? key);
- method public boolean containsValue(Object? value);
- method public V? get(Object? key);
- method public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
- method public androidx.compose.frames.Record getFirstFrameRecord();
- method public java.util.Set<K> getKeys();
- method public int getSize();
- method public java.util.Collection<V> getValues();
- method public boolean isEmpty();
- method public void prependFrameRecord(androidx.compose.frames.Record value);
- method public V? put(K? key, V? value);
- method public void putAll(java.util.Map<? extends K,? extends V> from);
- method public V? remove(Object? key);
+ @Deprecated public final class ModelMap<K, V> implements androidx.compose.frames.Framed kotlin.jvm.internal.markers.KMutableMap java.util.Map<K,V> {
+ ctor @Deprecated public ModelMap();
+ method @Deprecated public void clear();
+ method @Deprecated public boolean containsKey(Object? key);
+ method @Deprecated public boolean containsValue(Object? value);
+ method @Deprecated public V? get(Object? key);
+ method @Deprecated public java.util.Set<java.util.Map.Entry<K,V>> getEntries();
+ method @Deprecated public androidx.compose.frames.Record getFirstFrameRecord();
+ method @Deprecated public java.util.Set<K> getKeys();
+ method @Deprecated public int getSize();
+ method @Deprecated public java.util.Collection<V> getValues();
+ method @Deprecated public boolean isEmpty();
+ method @Deprecated public void prependFrameRecord(androidx.compose.frames.Record value);
+ method @Deprecated public V? put(K? key, V? value);
+ method @Deprecated public void putAll(java.util.Map<? extends K,? extends V> from);
+ method @Deprecated public V? remove(Object? key);
property public java.util.Set<java.util.Map.Entry<K,V>> entries;
property public androidx.compose.frames.Record firstFrameRecord;
property public java.util.Set<K> keys;
@@ -668,13 +676,13 @@
property public java.util.Collection<V> values;
}
- public interface Record {
- method public void assign(androidx.compose.frames.Record value);
- method public androidx.compose.frames.Record create();
- method public int getFrameId();
- method public androidx.compose.frames.Record? getNext();
- method public void setFrameId(int p);
- method public void setNext(androidx.compose.frames.Record? p);
+ @Deprecated public interface Record {
+ method @Deprecated public void assign(androidx.compose.frames.Record value);
+ method @Deprecated public androidx.compose.frames.Record create();
+ method @Deprecated public int getFrameId();
+ method @Deprecated public androidx.compose.frames.Record? getNext();
+ method @Deprecated public void setFrameId(int p);
+ method @Deprecated public void setNext(androidx.compose.frames.Record? p);
property public abstract int frameId;
property public abstract androidx.compose.frames.Record? next;
}
@@ -728,6 +736,137 @@
}
+package androidx.compose.snapshots {
+
+ public final class ListUtilsKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public class MutableSnapshot extends androidx.compose.snapshots.Snapshot {
+ method public androidx.compose.snapshots.SnapshotApplyResult apply();
+ method public void close$lintWithKotlin();
+ method public java.util.Set<androidx.compose.snapshots.StateObject>? getModified$lintWithKotlin();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getReadObserver$lintWithKotlin();
+ method public boolean getReadonly();
+ method public androidx.compose.snapshots.Snapshot getRoot();
+ method public kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? getWriteObserver$lintWithKotlin();
+ method public boolean hasPendingChanges();
+ method public void nestedActivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void nestedDeactivated$lintWithKotlin(androidx.compose.snapshots.Snapshot snapshot);
+ method public void notifyObjectsInitialized$lintWithKotlin();
+ method public void recordModified$lintWithKotlin(androidx.compose.snapshots.StateObject state);
+ method public void setModified(java.util.Set<androidx.compose.snapshots.StateObject>? p);
+ method public androidx.compose.snapshots.MutableSnapshot takeNestedMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver);
+ property public java.util.Set<androidx.compose.snapshots.StateObject>? modified;
+ property public boolean readonly;
+ property public androidx.compose.snapshots.Snapshot root;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract sealed class Snapshot {
+ method public void dispose();
+ method public final inline <T> T! enter(kotlin.jvm.functions.Function0<? extends T> block);
+ method public int getId();
+ method public abstract boolean getReadonly();
+ method public abstract androidx.compose.snapshots.Snapshot getRoot();
+ method public abstract boolean hasPendingChanges();
+ method @kotlin.PublishedApi internal androidx.compose.snapshots.Snapshot? makeCurrent();
+ method @kotlin.PublishedApi internal void restoreCurrent(androidx.compose.snapshots.Snapshot? snapshot);
+ method public void setId$lintWithKotlin(int p);
+ method public abstract androidx.compose.snapshots.Snapshot takeNestedSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ property public int id;
+ property public abstract boolean readonly;
+ property public abstract androidx.compose.snapshots.Snapshot root;
+ field public static final androidx.compose.snapshots.Snapshot.Companion Companion;
+ }
+
+ public static final class Snapshot.Companion {
+ method public androidx.compose.snapshots.Snapshot! getCurrent();
+ method public inline <T> T! global(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public void notifyObjectsInitialized();
+ method public <T> T! observe(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null, kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.InternalComposeApi public int openSnapshotCount();
+ method public kotlin.jvm.functions.Function0<kotlin.Unit> registerApplyObserver(kotlin.jvm.functions.Function2<? super java.util.Set<?>,? super androidx.compose.snapshots.Snapshot,kotlin.Unit> observer);
+ method @androidx.compose.ExperimentalComposeApi public kotlin.jvm.functions.Function0<kotlin.Unit> registerGlobalWriteObserver(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit> observer);
+ method @kotlin.PublishedApi internal androidx.compose.snapshots.Snapshot? removeCurrent();
+ method @kotlin.PublishedApi internal void restoreCurrent(androidx.compose.snapshots.Snapshot? previous);
+ method @androidx.compose.ExperimentalComposeApi public void sendApplyNotifications();
+ property public final androidx.compose.snapshots.Snapshot! current;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotApplyConflictException extends java.lang.Exception {
+ ctor public SnapshotApplyConflictException(androidx.compose.snapshots.Snapshot snapshot);
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ }
+
+ public abstract sealed class SnapshotApplyResult {
+ method public abstract void check();
+ method public abstract boolean getSucceeded();
+ property public abstract boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Failure extends androidx.compose.snapshots.SnapshotApplyResult {
+ ctor public SnapshotApplyResult.Failure(androidx.compose.snapshots.Snapshot snapshot);
+ method public void check();
+ method public androidx.compose.snapshots.Snapshot getSnapshot();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ }
+
+ public static final class SnapshotApplyResult.Success extends androidx.compose.snapshots.SnapshotApplyResult {
+ method public void check();
+ method public boolean getSucceeded();
+ property public boolean succeeded;
+ field public static final androidx.compose.snapshots.SnapshotApplyResult.Success INSTANCE;
+ }
+
+ public final class SnapshotIdSetKt {
+ }
+
+ public final class SnapshotKt {
+ method @kotlin.PublishedApi internal static <T extends androidx.compose.snapshots.StateRecord> T current(T r, androidx.compose.snapshots.Snapshot snapshot);
+ method @kotlin.PublishedApi internal static void notifyWrite(androidx.compose.snapshots.Snapshot snapshot, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state);
+ method public static <T extends androidx.compose.snapshots.StateRecord> T readable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ method @kotlin.PublishedApi internal static inline <T> T! sync(kotlin.jvm.functions.Function0<? extends T> block);
+ method @androidx.compose.ExperimentalComposeApi public static androidx.compose.snapshots.MutableSnapshot takeMutableSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null, kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? writeObserver = null);
+ method public static androidx.compose.snapshots.Snapshot takeSnapshot(kotlin.jvm.functions.Function1<java.lang.Object,kotlin.Unit>? readObserver = null);
+ method @androidx.compose.ExperimentalComposeApi public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! withCurrent(T, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method public static inline <T extends androidx.compose.snapshots.StateRecord, R> R! writable(T, androidx.compose.snapshots.StateObject state, kotlin.jvm.functions.Function1<? super T,? extends R> block);
+ method @kotlin.PublishedApi internal static <T extends androidx.compose.snapshots.StateRecord> T writableRecord(T, androidx.compose.snapshots.StateObject state, androidx.compose.snapshots.Snapshot snapshot);
+ field @kotlin.PublishedApi internal static final Object lock;
+ }
+
+ public final class SnapshotStateListKt {
+ }
+
+ public final class SnapshotStateMapKt {
+ }
+
+ @androidx.compose.ExperimentalComposeApi public final class SnapshotStateObserver {
+ ctor public SnapshotStateObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> onChangedExecutor);
+ method public void clear(Object target);
+ method public void dispose();
+ method public void enableStateUpdatesObserving(boolean enabled);
+ method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ }
+
+ @androidx.compose.ExperimentalComposeApi public interface StateObject {
+ method public androidx.compose.snapshots.StateRecord getFirstStateRecord();
+ method public default androidx.compose.snapshots.StateRecord? mergeRecords(androidx.compose.snapshots.StateRecord previous, androidx.compose.snapshots.StateRecord current, androidx.compose.snapshots.StateRecord applied);
+ method public void prependStateRecord(androidx.compose.snapshots.StateRecord value);
+ property public abstract androidx.compose.snapshots.StateRecord firstStateRecord;
+ }
+
+ @androidx.compose.ExperimentalComposeApi public abstract class StateRecord {
+ ctor public StateRecord();
+ method public abstract void assign(androidx.compose.snapshots.StateRecord value);
+ method public abstract androidx.compose.snapshots.StateRecord create();
+ }
+
+}
+
package androidx.compose.tooling {
public final class InspectionTablesKt {
diff --git a/compose/compose-runtime/build.gradle b/compose/compose-runtime/build.gradle
index 3b3989b..d2007d0 100644
--- a/compose/compose-runtime/build.gradle
+++ b/compose/compose-runtime/build.gradle
@@ -97,5 +97,6 @@
tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
useIR = true
+ incremental = false
}
}
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/AndroidManifest.xml b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/AndroidManifest.xml
index e48051b..2759840 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/AndroidManifest.xml
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/AndroidManifest.xml
@@ -26,7 +26,11 @@
android:requestLegacyExternalStorage="true"
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+
<activity
android:name=".ComposeActivity"/>
</application>
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmarkBase.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmarkBase.kt
index 81f4e07..13e4d85 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmarkBase.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmarkBase.kt
@@ -25,15 +25,17 @@
import androidx.compose.Composable
import androidx.compose.Composer
import androidx.compose.Composition
-import androidx.compose.FrameManager
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.InternalComposeApi
import androidx.compose.Recomposer
import androidx.compose.currentComposer
+import androidx.compose.snapshots.Snapshot
import androidx.ui.core.AndroidOwner
import androidx.ui.core.setContent
import org.junit.Assert.assertTrue
import org.junit.Rule
+@OptIn(ExperimentalComposeApi::class)
abstract class ComposeBenchmarkBase {
@get:Rule
val benchmarkRule = BenchmarkRule()
@@ -80,7 +82,7 @@
benchmarkRule.measureRepeated {
runWithTimingDisabled {
receiver.updateModelCb()
- FrameManager.nextFrame()
+ Snapshot.sendApplyNotifications()
}
val didSomething = activeComposer?.let { composer ->
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/SnapshotStateObserverBenchmark.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/SnapshotStateObserverBenchmark.kt
new file mode 100644
index 0000000..ae40a4a
--- /dev/null
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/SnapshotStateObserverBenchmark.kt
@@ -0,0 +1,134 @@
+/*
+ * Copyright 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 androidx.compose.benchmark
+
+import android.os.Handler
+import android.os.Looper
+import androidx.benchmark.junit4.measureRepeated
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.mutableStateOf
+import androidx.compose.snapshots.Snapshot
+import androidx.compose.snapshots.SnapshotStateObserver
+import androidx.test.filters.LargeTest
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import kotlin.random.Random
+
+@LargeTest
+@RunWith(Parameterized::class)
+@OptIn(ExperimentalComposeApi::class)
+class SnapshotStateObserverBenchmark(
+ private val numberOfModels: Int,
+ private val numberOfNodes: Int
+) : ComposeBenchmarkBase() {
+ companion object {
+ @JvmStatic
+ @Parameterized.Parameters(name = "states = {0}, nodes = {1}")
+ fun initParameters(): Array<Any> = arrayOf(
+ arrayOf(1000, 1000),
+ arrayOf(10000, 100),
+ arrayOf(100000, 10),
+ arrayOf(100, 1000)
+ )
+ }
+
+ private val doNothing: (Int) -> Unit = { _ -> }
+
+ private lateinit var stateObserver: SnapshotStateObserver
+ private val models = List(numberOfModels) { mutableStateOf(0) }
+ private val nodes = List(numberOfNodes) { it }
+ private lateinit var random: Random
+ private val numObservations = numberOfModels / 10
+
+ @Before
+ fun setup() {
+ random = Random(0)
+ runOnUiThread {
+ val handler = Handler(Looper.getMainLooper())
+ stateObserver = SnapshotStateObserver { command ->
+ if (Looper.myLooper() !== handler.looper) {
+ handler.post(command)
+ } else {
+ command()
+ }
+ }
+ }
+ stateObserver.enableStateUpdatesObserving(true)
+ setupObservations()
+ Snapshot.sendApplyNotifications()
+ }
+
+ @After
+ fun teardown() {
+ runOnUiThread {
+ stateObserver.enableStateUpdatesObserving(false)
+ }
+ }
+
+ @Test
+ fun modelObservation() {
+ runOnUiThread {
+ benchmarkRule.measureRepeated {
+ random = Random(0)
+ val node = nodes[random.nextInt(numberOfNodes)]
+ observeForNode(node)
+ }
+ }
+ }
+
+ @Test
+ fun nestedModelObservation() {
+ runOnUiThread {
+ stateObserver.observeReads(nodes[0], doNothing) {
+ benchmarkRule.measureRepeated {
+ random = Random(0)
+ val node = nodes[random.nextInt(numberOfNodes)]
+ observeForNode(node)
+ }
+ }
+ }
+ }
+
+ @Test
+ fun modelClear() {
+ runOnUiThread {
+ benchmarkRule.measureRepeated {
+ random = Random(0)
+ val node = nodes[random.nextInt(numberOfNodes)]
+ stateObserver.clear(node)
+ runWithTimingDisabled {
+ observeForNode(node)
+ }
+ }
+ }
+ }
+
+ private fun runOnUiThread(block: () -> Unit) = activityRule.runOnUiThread(block)
+ private fun setupObservations() = nodes.forEach { observeForNode(it) }
+
+ private fun observeForNode(node: Int) {
+ stateObserver.observeReads(node, doNothing) {
+ repeat(numObservations) {
+ // just access the value
+ models[random.nextInt(numberOfModels)].value
+ }
+ }
+ }
+}
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt
new file mode 100644
index 0000000..2067a8b
--- /dev/null
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright 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 androidx.compose.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.Composable
+import androidx.compose.getValue
+import androidx.compose.setValue
+import androidx.compose.mutableStateListOf
+import androidx.compose.state
+import androidx.ui.foundation.Text
+import androidx.ui.foundation.TextField
+import androidx.ui.input.TextFieldValue
+import androidx.ui.layout.Column
+import androidx.ui.layout.Row
+import androidx.ui.material.Button
+
+@Composable
+@Sampled
+fun stateListSample() {
+ @Composable
+ fun Names() {
+ var name by state { TextFieldValue("user") }
+ val names = mutableStateListOf<String>()
+
+ Column {
+ Row {
+ TextField(
+ value = name,
+ onValueChange = { name = it }
+ )
+ Button(onClick = { names.add(name.text) }) {
+ Text("Add")
+ }
+ }
+ Text("Added names:")
+ Column {
+ for (addedName in names) {
+ Text(addedName)
+ }
+ }
+ }
+ }
+}
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt
new file mode 100644
index 0000000..7767044
--- /dev/null
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt
@@ -0,0 +1,70 @@
+/*
+ * Copyright 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 androidx.compose.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.Composable
+import androidx.compose.getValue
+import androidx.compose.setValue
+import androidx.compose.mutableStateMapOf
+import androidx.compose.state
+import androidx.ui.foundation.Text
+import androidx.ui.foundation.TextField
+import androidx.ui.input.TextFieldValue
+import androidx.ui.layout.Column
+import androidx.ui.layout.Row
+import androidx.ui.material.Button
+
+@Composable
+@Sampled
+fun stateMapSample() {
+ @Composable
+ fun NamesAndAges() {
+ var name by state { TextFieldValue("name") }
+ var saying by state { TextFieldValue("saying") }
+ val sayings = mutableStateMapOf(
+ "Caesar" to "Et tu, Brute?",
+ "Hamlet" to "To be or not to be",
+ "Richard III" to "My kingdom for a horse"
+ )
+
+ Column {
+ Row {
+ TextField(
+ value = name,
+ onValueChange = { name = it }
+ )
+ TextField(
+ value = saying,
+ onValueChange = { saying = it }
+ )
+ Button(onClick = { sayings[name.text] = saying.text }) {
+ Text("Add")
+ }
+ Button(onClick = { sayings.remove(name.text) }) {
+ Text("Remove")
+ }
+ }
+ Text("Sayings:")
+ Column {
+ for (entry in sayings) {
+ Text("${entry.key} says '${entry.value}'")
+ }
+ }
+ }
+ }
+}
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/SnapshotMutationPolicySamples.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/SnapshotMutationPolicySamples.kt
new file mode 100644
index 0000000..79a6ff7
--- /dev/null
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/SnapshotMutationPolicySamples.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright 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 androidx.compose.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.MutableState
+import androidx.compose.SnapshotMutationPolicy
+import androidx.compose.mutableStateOf
+import androidx.compose.snapshots.takeMutableSnapshot
+
+@Sampled
+@OptIn(ExperimentalComposeApi::class)
+fun counterSample() {
+ /**
+ * A policy that treats an `MutableState<Int>` as a counter. Changing the value to the same
+ * integer value will not be considered a change. When snapshots are applied the changes made by
+ * the applying snapshot are added together with changes of other snapshots. Changes to a
+ * [MutableState] with a counterPolicy will never cause an apply conflict.
+ *
+ * As the name implies, this is useful when counting things, such as tracking the amount of
+ * a resource consumed or produced while in a snapshot. For example, if snapshot A produces 10
+ * things and snapshot B produces 20 things, the result of applying both A and B should be that
+ * 30 things were produced.
+ */
+ fun counterPolicy(): SnapshotMutationPolicy<Int> = object : SnapshotMutationPolicy<Int> {
+ override fun equivalent(a: Int, b: Int): Boolean = a == b
+ override fun merge(previous: Int, current: Int, applied: Int) =
+ current + (applied - previous)
+ }
+
+ val state = mutableStateOf(0, counterPolicy())
+ val snapshot1 = takeMutableSnapshot()
+ val snapshot2 = takeMutableSnapshot()
+ try {
+ snapshot1.enter { state.value += 10 }
+ snapshot2.enter { state.value += 20 }
+ snapshot1.apply().check()
+ snapshot2.apply().check()
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+
+ // State is now equals 30 as the changes made in the snapshots are added together.
+}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/AmbientTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/AmbientTests.kt
index 831a82f..ecff31e 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/AmbientTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/AmbientTests.kt
@@ -14,22 +14,23 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalComposeApi::class)
package androidx.compose.test
import android.widget.TextView
import androidx.compose.Ambient
import androidx.compose.Composable
+import androidx.compose.ComposableContract
import androidx.compose.CompositionReference
import androidx.compose.ExperimentalComposeApi
import androidx.compose.Providers
import androidx.compose.Recomposer
-import androidx.compose.StructurallyEqual
-import androidx.compose.Untracked
import androidx.compose.ambientOf
import androidx.compose.compositionReference
import androidx.compose.invalidate
import androidx.compose.remember
import androidx.compose.staticAmbientOf
+import androidx.compose.structuralEqualityPolicy
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.MediumTest
import androidx.ui.core.LayoutNode
@@ -462,8 +463,7 @@
fun providingANewDataClassValueShouldNotRecompose() {
val invalidates = mutableListOf<() -> Unit>()
fun doInvalidate() = invalidates.forEach { it() }.also { invalidates.clear() }
- val someDataAmbient =
- ambientOf(StructurallyEqual) { SomeData() }
+ val someDataAmbient = ambientOf(structuralEqualityPolicy()) { SomeData() }
var composed = false
@Composable
@@ -513,12 +513,12 @@
narrowInvalidateForReference(ref = ref)
return {
@OptIn(ExperimentalComposeApi::class)
- // TODO(b/150390669): Review use of @Untracked
+ // TODO(b/150390669): Review use of @ComposableContract(tracked = false)
subcomposeInto(
container,
Recomposer.current(),
ref.value
- ) @Untracked {
+ ) @ComposableContract(tracked = false) {
block()
}
}
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/BaseComposeTest.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/BaseComposeTest.kt
index e6180ea..a17902a 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/BaseComposeTest.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/BaseComposeTest.kt
@@ -27,15 +27,15 @@
import androidx.compose.Choreographer
import androidx.compose.ChoreographerFrameCallback
import androidx.compose.Composable
+import androidx.compose.ComposableContract
import androidx.compose.Composition
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.FrameManager
import androidx.compose.Looper
import androidx.compose.Providers
import androidx.compose.Recomposer
-import androidx.compose.Untracked
import androidx.compose.compositionReference
import androidx.compose.remember
+import androidx.compose.snapshots.Snapshot
import androidx.ui.core.ContextAmbient
import androidx.ui.core.LayoutNode
import androidx.ui.core.setViewContent
@@ -88,7 +88,8 @@
internal fun Activity.show(block: @Composable () -> Unit): Composition {
var composition: Composition? = null
uiThread {
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
composition = setViewContent(block)
}
return composition!!
@@ -105,7 +106,7 @@
override fun doFrame(frameTimeNanos: Long) = latch.countDown()
})
}
- assertTrue(latch.await(1, TimeUnit.MINUTES), "Time-out waiting for choreographer frame")
+ assertTrue(latch.await(1, TimeUnit.HOURS), "Time-out waiting for choreographer frame")
}
abstract class BaseComposeTest {
@@ -126,13 +127,13 @@
fun subCompose(block: @Composable () -> Unit) {
val container = remember { LayoutNode() }
val reference = compositionReference()
- // TODO(b/150390669): Review use of @Untracked
+ // TODO(b/150390669): Review use of @ComposableContract(tracked = false)
@OptIn(ExperimentalComposeApi::class)
subcomposeInto(
container,
Recomposer.current(),
reference
- ) @Untracked {
+ ) @ComposableContract(tracked = false) {
block()
}
}
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeIntoTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeIntoTests.kt
index cffb6c9..8e3f47c 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeIntoTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeIntoTests.kt
@@ -18,11 +18,14 @@
import android.os.HandlerThread
import androidx.compose.Composable
+import androidx.compose.ComposableContract
+import androidx.compose.Composer
+import androidx.compose.Composition
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.FrameManager
import androidx.compose.Handler
-import androidx.compose.Untracked
import androidx.compose.clearRoots
+import androidx.compose.currentComposer
+import androidx.compose.invalidate
import androidx.compose.mutableStateOf
import androidx.compose.onActive
import androidx.compose.onCommit
@@ -33,8 +36,12 @@
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
+import java.lang.ref.PhantomReference
+import java.lang.ref.ReferenceQueue
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
+import kotlin.test.assertNotNull
+import kotlin.test.assertNull
import kotlin.test.assertTrue
@RunWith(AndroidJUnit4::class)
@@ -55,7 +62,7 @@
var initializationCount = 0
var commitCount = 0
@OptIn(ExperimentalComposeApi::class)
- val composable = @Composable @Untracked {
+ val composable = @Composable @ComposableContract(tracked = false) {
onActive { initializationCount++ }
onCommit { commitCount++ }
}
@@ -91,9 +98,7 @@
val thread = HandlerThread("")
thread.start()
Handler(thread.looper).post {
- FrameManager.framed {
- model.value = 1
- }
+ model.value = 1
threadLatch.countDown()
}
compositionLatch = CountDownLatch(1)
@@ -104,6 +109,49 @@
activity.runOnUiThread { composition.dispose() }
}
}
+
+ @Test
+ @MediumTest
+ fun testCompositionCanBeCollectedWithPendingInvalidate() {
+ val referenceQueue = ReferenceQueue<Composer<*>>()
+ var invalidateMethod: () -> Unit = {}
+ var composition: Composition? = null
+ var composer: Composer<*>? = null
+ var phantomReference: PhantomReference<Composer<*>>? = null
+ fun doShow() {
+ val threadLatch = CountDownLatch(1)
+ composition = activity.show {
+ composer = currentComposer
+ invalidateMethod = invalidate
+ threadLatch.countDown()
+ }
+ threadLatch.wait()
+ phantomReference = PhantomReference<Composer<*>>(composer, referenceQueue)
+ }
+
+ doShow()
+ assertNotNull(invalidateMethod)
+
+ val threadLatch = CountDownLatch(1)
+ activity.runOnUiThread {
+ composition?.dispose()
+ composition = null
+ composer = null
+ threadLatch.countDown()
+ }
+ threadLatch.wait()
+ assertNull(composition)
+ assertNull(composer)
+ assertNotNull(phantomReference)
+
+ // Make sure that the composer was collected.
+ repeat(100) {
+ Runtime.getRuntime().gc()
+ val value = referenceQueue.poll()
+ if (value != null) return
+ }
+ error("Failed - composer leaked")
+ }
}
fun CountDownLatch.wait() = assertTrue(await(1, TimeUnit.SECONDS))
\ No newline at end of file
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeModelTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeModelTests.kt
index c346cf9..dafa81c 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeModelTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/ComposeModelTests.kt
@@ -18,17 +18,13 @@
import android.widget.TextView
import androidx.compose.Composable
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.clearRoots
-import androidx.compose.frames.AbstractRecord
-import androidx.compose.frames.Framed
-import androidx.compose.frames.Record
-import androidx.compose.frames._created
-import androidx.compose.frames._readable
-import androidx.compose.frames._writable
-import androidx.compose.frames.commit
-import androidx.compose.frames.currentFrame
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
+import androidx.compose.mutableStateOf
+import androidx.compose.snapshots.StateObject
+import androidx.compose.snapshots.StateRecord
+import androidx.compose.snapshots.readable
+import androidx.compose.snapshots.writable
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.MediumTest
import junit.framework.TestCase.assertEquals
@@ -38,45 +34,41 @@
import org.junit.Test
import org.junit.runner.RunWith
-val PRESIDENT_NAME_1 = "George Washington"
-val PRESIDENT_AGE_1 = 57
-val PRESIDENT_NAME_16 = "Abraham Lincoln"
-val PRESIDENT_AGE_16 = 52
+const val PRESIDENT_NAME_1 = "George Washington"
+const val PRESIDENT_AGE_1 = 57
+const val PRESIDENT_NAME_16 = "Abraham Lincoln"
+const val PRESIDENT_AGE_16 = 52
-class Person(name: String, age: Int) : Framed {
+@OptIn(ExperimentalComposeApi::class)
+class Person(name: String, age: Int) : StateObject {
var name
- get() = (_readable(_first, this) as CustomerRecord).name
+ get() = first.readable(this).name
set(value) {
- (_writable(_first, this) as CustomerRecord).name = value
+ first.writable(this) { name = value }
}
var age
- get() = (_readable(_first, this) as CustomerRecord).age
+ get() = first.readable(this).age
set(value) {
- (_writable(_first, this) as CustomerRecord).age = value
+ first.writable(this) { age = value }
}
- private var _first: Record = CustomerRecord().apply {
+ private var first: CustomerRecord = CustomerRecord().apply {
this.name = name
this.age = age
- this.frameId = currentFrame().id
- _created(this@Person)
}
- override val firstFrameRecord: Record get() = _first
+ override val firstStateRecord: StateRecord get() = first
- override fun prependFrameRecord(value: Record) {
- value.next = _first
- _first = value
+ override fun prependStateRecord(value: StateRecord) {
+ first = value as CustomerRecord
}
- class CustomerRecord : AbstractRecord() {
- @JvmField
+ class CustomerRecord : StateRecord() {
var name: String = ""
- @JvmField
var age: Int = 0
- override fun assign(value: Record) {
+ override fun assign(value: StateRecord) {
(value as? CustomerRecord)?.let {
this.name = it.name
this.age = it.age
@@ -89,40 +81,6 @@
@Composable fun Observe(body: @Composable () -> Unit) = body()
-class TestState<T>(value: T) : Framed {
- @Suppress("UNCHECKED_CAST")
- var value: T
- get() = (_readable(myFirst, this) as StateRecord<T>).value
- set(value) {
- (_writable(myFirst, this) as StateRecord<T>).value = value
- }
-
- private var myFirst: Record
-
- init {
- myFirst = StateRecord(value)
- }
-
- override val firstFrameRecord: Record
- get() = myFirst
-
- override fun prependFrameRecord(value: Record) {
- value.next = myFirst
- myFirst = value
- }
-
- private class StateRecord<T>(myValue: T) : AbstractRecord() {
- override fun assign(value: Record) {
- @Suppress("UNCHECKED_CAST")
- this.value = (value as StateRecord<T>).value
- }
-
- override fun create(): Record = StateRecord(value)
-
- var value: T = myValue
- }
-}
-
@MediumTest
@RunWith(AndroidJUnit4::class)
class ModelViewTests : BaseComposeTest() {
@@ -164,12 +122,10 @@
fun testModelView_PersonModel() {
val tvIdName = 90
val tvIdAge = 91
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
compose {
TextView(id = tvIdName, text = president.name)
@@ -192,19 +148,16 @@
@Test
fun testModelView_RecomposeScopeCleanup() {
- val washington = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
- val lincoln = frame {
- Person(
- PRESIDENT_NAME_16,
- PRESIDENT_AGE_16
- )
- }
- val displayLincoln = frame { TestState(true) }
+ val washington = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
+ val lincoln = Person(
+ PRESIDENT_NAME_16,
+ PRESIDENT_AGE_16
+ )
+
+ val displayLincoln = mutableStateOf(true)
@Composable fun display(person: Person) {
TextView(text = person.name)
@@ -229,12 +182,10 @@
// b/122548164
@Test
fun testObserverEntering() {
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
val tvName = 204
@Composable fun display(person: Person) {
@@ -258,12 +209,10 @@
@Test
fun testModelUpdatesNextFrameVisibility() {
- val president = frame {
- Person(
+ val president = Person(
PRESIDENT_NAME_1,
PRESIDENT_AGE_1
)
- }
val tvName = 204
@Composable fun display(person: Person) {
@@ -288,9 +237,3 @@
}
}
}
-
-fun <T> frame(block: () -> T): T {
- val wasInFrame = inFrame
- if (!wasInFrame) open()
- return block().also { if (!wasInFrame) commit() }
-}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/DisposeTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/DisposeTests.kt
index a802b64..aad6292 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/DisposeTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/DisposeTests.kt
@@ -17,9 +17,9 @@
package androidx.compose.test
import androidx.compose.Composable
+import androidx.compose.ComposableContract
import androidx.compose.Composition
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.Untracked
import androidx.compose.clearRoots
import androidx.compose.onActive
import androidx.compose.onPreCommit
@@ -47,7 +47,7 @@
val log = mutableListOf<String>()
@OptIn(ExperimentalComposeApi::class)
- val composable = @Composable @Untracked {
+ val composable = @Composable @ComposableContract(tracked = false) {
onPreCommit {
log.add("onPreCommit")
onDispose {
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/EffectsTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/EffectsTests.kt
index 841cc15..37b5b38 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/EffectsTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/EffectsTests.kt
@@ -181,13 +181,11 @@
val reader by readonly
var writer by myState
- frame {
- writer = expected
+ writer = expected
- assertEquals("state object after write", expected, myState.value)
- assertEquals("reader after write", expected, reader)
- assertEquals("writer after write", expected, writer)
- }
+ assertEquals("state object after write", expected, myState.value)
+ assertEquals("reader after write", expected, reader)
+ assertEquals("writer after write", expected, writer)
}
@Test
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/FlowAdapterTest.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/FlowAdapterTest.kt
index 9e28a46..e3af9de 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/FlowAdapterTest.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/FlowAdapterTest.kt
@@ -53,20 +53,6 @@
val rule = createComposeRule()
@Test
- fun whenValueIsNotSetWeGotNull() {
- val stream = FlowChannel<String>()
- var realValue: String? = "to-be-updated"
- rule.setContent {
- @Suppress("DEPRECATION")
- realValue = stream.flow.collectAsState().value
- }
-
- runOnIdleCompose {
- assertThat(realValue).isNull()
- }
- }
-
- @Test
fun weReceiveSubmittedValue() {
val stream = FlowChannel<String>()
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
index b7a3fe0..3bb43f3 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
@@ -21,14 +21,15 @@
import android.widget.LinearLayout
import android.widget.TextView
import androidx.compose.Composable
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.clearRoots
-import androidx.compose.frames.currentFrame
import androidx.compose.getValue
import androidx.compose.invalidate
import androidx.compose.key
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.snapshots.currentSnapshot
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.MediumTest
import junit.framework.TestCase.assertEquals
@@ -422,12 +423,13 @@
}
@Test
+ @OptIn(ExperimentalComposeApi::class)
fun testFrameTransition() {
- var frameId: Int? = null
+ var snapshotId: Int? = null
compose {
- frameId = currentFrame().id
+ snapshotId = currentSnapshot().id
}.then {
- assertNotSame(frameId, currentFrame().id)
+ assertNotSame(snapshotId, currentSnapshot().id)
}
}
}
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RestartTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RestartTests.kt
index 3e0a8eb..a6d6d60 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RestartTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RestartTests.kt
@@ -49,12 +49,10 @@
fun restart_PersonModel_lambda() {
val tvIdName = 90
val tvIdAge = 91
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
compose {
RestartGroup {
@@ -81,12 +79,10 @@
fun restart_PersonModel_lambda_parameters() {
val tvIdNameBase = 90
val tvIdAgeBase = 100
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
compose {
Repeat(5) { index ->
@@ -117,12 +113,10 @@
fun restart_PersonModel_function() {
val tvIdName = 90
val tvIdAge = 91
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
@Composable fun PersonView() {
TextView(id = tvIdName, text = president.name)
@@ -167,9 +161,7 @@
@Test
fun restart_State_delete() {
val tvStateId = 101
- val state = frame {
- mutableStateOf(true)
- }
+ val state = mutableStateOf(true)
@Composable fun ShowSomething() {
TextView(id = tvStateId, text = "State = ${state.value}")
@@ -206,12 +198,10 @@
fun restart_PersonModel_function_parameters() {
val tvIdNameBase = 90
val tvIdAgeBase = 100
- val president = frame {
- Person(
- PRESIDENT_NAME_1,
- PRESIDENT_AGE_1
- )
- }
+ val president = Person(
+ PRESIDENT_NAME_1,
+ PRESIDENT_AGE_1
+ )
@Composable fun PersonView(index: Int) {
TextView(id = tvIdNameBase + index, text = president.name)
diff --git a/compose/compose-runtime/src/androidMain/kotlin/androidx/compose/ActualAndroid.kt b/compose/compose-runtime/src/androidMain/kotlin/androidx/compose/ActualAndroid.kt
index 0de8c00..29ddfb8 100644
--- a/compose/compose-runtime/src/androidMain/kotlin/androidx/compose/ActualAndroid.kt
+++ b/compose/compose-runtime/src/androidMain/kotlin/androidx/compose/ActualAndroid.kt
@@ -17,11 +17,9 @@
package androidx.compose
import androidx.compose.dispatch.AndroidUiDispatcher
-import androidx.compose.dispatch.MonotonicFrameClock
import androidx.core.os.HandlerCompat
-import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
+import kotlin.coroutines.CoroutineContext
internal actual typealias EmbeddingUIContext = android.content.Context
@@ -66,26 +64,12 @@
// TODO: Our host-side tests still grab the Android actuals based on SDK stubs that return null.
// Satisfy their dependencies.
-private val MainAndroidUiDispatcher by lazy {
- if (Looper.getMainLooper() != null) androidx.compose.dispatch.AndroidUiDispatcher.Main
+private val MainAndroidUiContext: CoroutineContext by lazy {
+ if (Looper.getMainLooper() != null) AndroidUiDispatcher.Main
else Dispatchers.Main
}
-private object MainDispatcherFrameClock : MonotonicFrameClock {
- override suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R =
- withContext(Dispatchers.Main) {
- onFrame(System.nanoTime())
- }
-}
-
-private val MainAndroidFrameClock by lazy {
- if (Looper.getMainLooper() != null) AndroidUiDispatcher.Main.frameClock
- else MainDispatcherFrameClock
-}
-
-internal actual fun mainThreadCompositionDispatcher(): CoroutineDispatcher = MainAndroidUiDispatcher
-
-internal actual fun mainThreadFrameClock(): MonotonicFrameClock = MainAndroidFrameClock
+internal actual fun mainThreadCompositionContext(): CoroutineContext = MainAndroidUiContext
internal actual object Trace {
actual fun beginSection(name: String) = android.os.Trace.beginSection(name)
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Ambient.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Ambient.kt
index 2dc5cf2..b42dc04 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Ambient.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Ambient.kt
@@ -104,12 +104,12 @@
* @see ambientOf
*/
internal class DynamicProvidableAmbient<T> constructor(
- private val areEquivalent: (old: T, new: T) -> Boolean,
+ private val policy: SnapshotMutationPolicy<T>,
defaultFactory: (() -> T)?
) : ProvidableAmbient<T>(defaultFactory) {
@Composable
- override fun provided(value: T): State<T> = state(areEquivalent) { value }.apply {
+ override fun provided(value: T): State<T> = state(policy) { value }.apply {
this.value = value
}
}
@@ -131,13 +131,19 @@
* during recomposition will invalidate the children of [Providers] that read the value using
* [Ambient.current].
*
+ * @param policy a policy to determine when an ambient is considered changed. See
+ * [SnapshotMutationPolicy] for details.
+ *
* @see Ambient
* @see staticAmbientOf
+ * @see mutableStateOf
*/
fun <T> ambientOf(
- areEquivalent: (old: T, new: T) -> Boolean = ReferentiallyEqual,
+ policy: SnapshotMutationPolicy<T> =
+ @OptIn(ExperimentalComposeApi::class)
+ referentialEqualityPolicy(),
defaultFactory: (() -> T)? = null
-): ProvidableAmbient<T> = DynamicProvidableAmbient(areEquivalent, defaultFactory)
+): ProvidableAmbient<T> = DynamicProvidableAmbient(policy, defaultFactory)
/**
* Create an ambient key that can be provided using [Providers]. Changing the value provided
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/ComposableContract.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/ComposableContract.kt
index 91aec87..aa7a93a 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/ComposableContract.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/ComposableContract.kt
@@ -24,22 +24,33 @@
* Caution: Use of this annotation means that the annotated declaration *MUST* comply with those
* contracts, or else the resulting code's behavior will be undefined.
*
- * @param restartable When false,this will prevent code from being generated which
+ * @param restartable if false, this will prevent code from being generated which
* allow this function's execution to be skipped or restarted. This may be desirable for small
* functions which just directly call another composable function and have very little machinery
* in them directly.
*
- * @param readonly if false, no group will be generated around the body of the function it annotates
+ * @param readonly if true, no group will be generated around the body of the function it annotates
* . This is not safe unless the body of the function only executes "read" operations on the
* passed in composer..
+ *
+ * @param tracked if false, this will disable lambda optimizations such as tracking execution of
+ * composable function expressions or remembering a function expression value based on its
+ * capture variables. This flag is only meaningful when applied to @Composable lambda expressions
+ *
+ * @param preventCapture if true, this will prevent composable calls from happening inside of the
+ * function that it applies to. This is usually applied to lambda parameters of inline functions
+ * that ought to be safely inlined but cannot safely have composable calls in them
*/
@MustBeDocumented
@Retention(AnnotationRetention.BINARY)
@Target(
AnnotationTarget.FUNCTION,
- AnnotationTarget.PROPERTY
+ AnnotationTarget.PROPERTY,
+ AnnotationTarget.TYPE
)
annotation class ComposableContract(
val restartable: Boolean = true,
- val readonly: Boolean = false
+ val readonly: Boolean = false,
+ val tracked: Boolean = true,
+ val preventCapture: Boolean = false
)
\ No newline at end of file
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composer.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composer.kt
index 23d3903..5e53d8c 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composer.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composer.kt
@@ -233,7 +233,7 @@
* stored in [anchor] and call [block] when recomposition is requested. It is created by
* [Composer.startRestartGroup] and is used to track how to restart the group.
*/
-internal class RecomposeScope(var composer: Composer<*>, val key: Int) : ScopeUpdateScope {
+internal class RecomposeScope(var composer: Composer<*>?, val key: Int) : ScopeUpdateScope {
/**
* An anchor to the location in the slot table that start the group associated with this
* recompose scope. This value is set by [composer] when the scope is committed to the slot
@@ -246,7 +246,7 @@
* removed from the slot table. For example, if the scope is in the then clause of an if
* statement that later becomes false.
*/
- val valid: Boolean get() = inTable && anchor?.valid ?: false
+ val valid: Boolean get() = composer != null && anchor?.valid ?: false
/**
* Used is set when the [RecomposeScope] is used by, for example, [invalidate]. This is used
@@ -258,11 +258,6 @@
var defaultsInScope = false
var defaultsInvalid = false
- /**
- * True when the recompose scope is in an slot in the slot table
- */
- var inTable = true
-
var requiresRecompose = false
/**
@@ -283,7 +278,7 @@
/**
* Invalidate the group which will cause [composer] to request this scope be recomposed.
*/
- fun invalidate(): InvalidationResult = composer.invalidate(this)
+ fun invalidate(): InvalidationResult = composer?.invalidate(this) ?: InvalidationResult.IGNORED
/**
* Update [block]. The scope is returned by [Composer.endRestartGroup] when [used] is true
@@ -959,7 +954,7 @@
is CompositionLifecycleObserver ->
lifecycleManager.leaving(previous)
is RecomposeScope ->
- previous.inTable = false
+ previous.composer = null
}
}
// Advance the writers reader location to account for the update above.
@@ -2316,8 +2311,9 @@
groupEndStack.push(groupEnd)
groupEnd = index + slot.slots
}
- is RecomposeScope ->
- slot.inTable = false
+ is RecomposeScope -> {
+ slot.composer = null
+ }
}
index++
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composition.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composition.kt
index 3469410..47097ba 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composition.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Composition.kt
@@ -67,33 +67,6 @@
/**
* This method is the way to initiate a composition. Optionally, a [parent]
* [CompositionReference] can be provided to make the composition behave as a sub-composition of
- * the parent. The children of [container] will be updated and maintained by the time this
- * method returns.
- *
- * It is important to call [Composition.dispose] whenever this [container] is no longer needed in
- * order to release resources.
- *
- * @param container The container whose content is being composed.
- * @param parent The parent composition reference, if applicable. Default is null.
- * @param composerFactory The factory used to created a [Composer] to be used by the composition.
- */
-@Suppress("DEPRECATION")
-@Deprecated(
- "Specify the Recomposer explicitly",
- ReplaceWith(
- "compositionFor(container, Recomposer.current(), parent, composerFactory)",
- "androidx.compose.Recomposer"
- )
-)
-fun compositionFor(
- container: Any,
- parent: CompositionReference? = null,
- composerFactory: (SlotTable, Recomposer) -> Composer<*>
-): Composition = compositionFor(container, Recomposer.current(), parent, composerFactory)
-
-/**
- * This method is the way to initiate a composition. Optionally, a [parent]
- * [CompositionReference] can be provided to make the composition behave as a sub-composition of
* the parent.
*
* It is important to call [Composition.dispose] whenever this [key] is no longer needed in
@@ -170,7 +143,7 @@
for (index in 0 until slotTable.size) {
val value = reader.get(index)
if (value is RecomposeScope) {
- value.inTable = false
+ value.composer = null
}
}
}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Direct.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Direct.kt
deleted file mode 100644
index c047f6b..0000000
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Direct.kt
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 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 androidx.compose
-
-/**
- * When applied to a composable function [Direct] will prevent code from being generated which
- * allow this function's execution to be skipped or restarted. This may be desirable for small
- * functions which just directly call another composable function and have very little machinery
- * in them directly.
- */
-@MustBeDocumented
-@Retention(AnnotationRetention.BINARY)
-@Target(
- AnnotationTarget.FUNCTION
-)
-@Deprecated(
- "Use ComposableContract instead",
- replaceWith = ReplaceWith(
- "ComposableContract(restartable = false)",
- "androidx.compose.ComposableContract"
- ),
- level = DeprecationLevel.ERROR
-)
-annotation class Direct
\ No newline at end of file
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Expect.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Expect.kt
index af83486..66f5fd7 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Expect.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Expect.kt
@@ -16,8 +16,7 @@
package androidx.compose
-import androidx.compose.dispatch.MonotonicFrameClock
-import kotlinx.coroutines.CoroutineDispatcher
+import kotlin.coroutines.CoroutineContext
// TODO(aelias): Mark the typealiases internal when https://youtrack.jetbrains.com/issue/KT-36695 is fixed.
// Currently, they behave as internal because the actual is internal, even though the expect is public.
@@ -93,14 +92,36 @@
internal expect fun <K, V> buildableMapOf(): BuildableMap<K, V>
+internal expect class BuildableListBuilder<T> : MutableList<T> {
+ fun build(): BuildableList<T>
+}
+
+internal expect class BuildableList<T> : List<T> {
+ internal fun builder(): BuildableListBuilder<T>
+ internal fun add(element: T): BuildableList<T>
+ internal fun add(index: Int, element: T): BuildableList<T>
+ internal fun addAll(elements: Collection<T>): BuildableList<T>
+ internal fun remove(element: T): BuildableList<T>
+ internal fun removeAll(elements: Collection<T>): BuildableList<T>
+ internal fun removeAt(index: Int): BuildableList<T>
+ internal fun set(index: Int, element: T): BuildableList<T>
+}
+
+internal expect fun <T> buildableListOf(): BuildableList<T>
+
+internal inline fun <T> BuildableList<T>.mutate(
+ mutator: (MutableList<T>) -> Unit
+): BuildableList<T> = builder().apply(mutator).build()
+
internal expect object Choreographer {
fun postFrameCallback(callback: ChoreographerFrameCallback)
fun postFrameCallbackDelayed(delayMillis: Long, callback: ChoreographerFrameCallback)
fun removeFrameCallback(callback: ChoreographerFrameCallback)
}
-internal expect fun mainThreadCompositionDispatcher(): CoroutineDispatcher
-internal expect fun mainThreadFrameClock(): MonotonicFrameClock
+internal expect fun mainThreadCompositionContext(): CoroutineContext
+
+expect class UnsupportedOperationException
@MustBeDocumented
@Retention(AnnotationRetention.BINARY)
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/FrameManager.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/FrameManager.kt
index 0f88642..659e226 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/FrameManager.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/FrameManager.kt
@@ -14,32 +14,30 @@
* limitations under the License.
*/
-@file:OptIn(InternalComposeApi::class)
+@file:OptIn(
+ ExperimentalComposeApi::class,
+ InternalComposeApi::class
+)
+
package androidx.compose
-import androidx.compose.frames.Frame
-import androidx.compose.frames.abortHandler
-import androidx.compose.frames.commit
-import androidx.compose.frames.commitHandler
-import androidx.compose.frames.currentFrame
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
-import androidx.compose.frames.registerCommitObserver
-import androidx.compose.frames.restore
-import androidx.compose.frames.suspend
+import androidx.compose.snapshots.MutableSnapshot
+import androidx.compose.snapshots.Snapshot
+import androidx.compose.snapshots.SnapshotApplyResult
+import androidx.compose.snapshots.SnapshotWriteObserver
+import androidx.compose.snapshots.currentSnapshot
+import androidx.compose.snapshots.takeMutableSnapshot
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
/**
- * The frame manager manages the priority frame in the main thread.
+ * The frame manager manages how changes to state objects are observed.
*
- * Once the FrameManager has started there is always an open frame in the main thread. If a model
- * object is committed in any frame then the frame manager schedules the current frame to commit
- * with the Choreographer and a new frame is open. Any model objects read during composition are
- * recorded in an invalidations map. If they are mutated during a frame the recompose scope that
- * was active during the read is invalidated.
+ * The [FrameManager] observers state reads during composition and records where in the
+ * composition the state read occur. If any of the state objects are modified it will
+ * invalidate the composition causing the associated [Recomposer] to schedule a recomposition.
*/
object FrameManager {
private var started = false
@@ -47,21 +45,22 @@
private var reclaimPending = false
internal var composing = false
private var invalidations = ObserverMap<Any, RecomposeScope>()
- private var removeCommitObserver: (() -> Unit)? = null
- private var immediateMap = ObserverMap<Frame, Any>()
- private var deferredMap = ObserverMap<Frame, Any>()
+ private var removeApplyObserver: (() -> Unit)? = null
+ private var removeWriteObserver: (() -> Unit)? = null
+ private var alreadyProcessed = ObserverMap<Snapshot, Any>()
+ private var needsInvalidate = ObserverMap<Snapshot, Any>()
private val lock = Any()
/**
* TODO: This will be merged later with the scopes used by [Recomposer]
*/
- private val scheduleScope = CoroutineScope(mainThreadCompositionDispatcher() + SupervisorJob())
+ private val scheduleScope = CoroutineScope(mainThreadCompositionContext() + SupervisorJob())
fun ensureStarted() {
if (!started) {
started = true
- removeCommitObserver = registerCommitObserver(commitObserver)
- open()
+ removeApplyObserver = Snapshot.registerApplyObserver(applyObserver)
+ removeWriteObserver = Snapshot.registerGlobalWriteObserver(globalWriteObserver)
}
}
@@ -69,8 +68,8 @@
synchronized(lock) {
invalidations.clear()
}
- if (inFrame) commit()
- removeCommitObserver?.let { it() }
+ removeApplyObserver?.invoke()
+ removeWriteObserver?.invoke()
started = false
invalidations = ObserverMap()
}
@@ -78,14 +77,28 @@
internal inline fun <T> composing(block: () -> T): T {
val wasComposing = composing
composing = true
+ val snapshot = takeMutableSnapshot(readObserver, writeObserver)
try {
- return block()
+ return snapshot.enter(block)
} finally {
composing = wasComposing
+ applyAndCheck(snapshot)
+ }
+ }
+
+ internal fun applyAndCheck(snapshot: MutableSnapshot) {
+ val applyResult = snapshot.apply()
+ if (applyResult is SnapshotApplyResult.Failure) {
+ error("Unsupported concurrent change during composition. A state object was " +
+ "modified by composition as well as being modified outside composition.")
+ // TODO(chuckj): Consider lifting this restriction by forcing a recompose
}
}
@TestOnly
+ @Deprecated(
+ "This is no longer needed. The frame manager no longer maintains a 'frame' in the main " +
+ "thread", replaceWith = ReplaceWith("block()"))
fun <T> isolated(block: () -> T): T {
ensureStarted()
try {
@@ -96,44 +109,28 @@
}
@TestOnly
- fun <T> unframed(block: () -> T): T {
- if (inFrame) {
- val frame = suspend()
- try {
- val result = block()
- if (inFrame) error("An unframed block left a frame uncommitted or aborted")
- return result
- } finally {
- restore(frame)
- }
- } else return block()
- }
+ @Deprecated(
+ "This is no longer needed. The frame manager no longer maintains a 'frame' in the main " +
+ "thread", replaceWith = ReplaceWith("block()"))
+ fun <T> unframed(block: () -> T): T = block()
/**
* Ensure that [block] is executed in a frame. If the code is not in a frame create one for the
* code to run in that is committed when [block] commits.
*/
- fun <T> framed(block: () -> T): T {
- return if (inFrame) {
- block()
- } else {
- open(false)
- try {
- block()
- } catch (e: Throwable) {
- abortHandler()
- throw e
- } finally {
- commitHandler()
- }
- }
- }
+ @Deprecated(
+ "This is no longer needed. The frame manager no longer maintains a 'frame' in the main " +
+ "thread", replaceWith = ReplaceWith("block()"))
+ fun <T> framed(block: () -> T): T = block()
+ @Deprecated(
+ "The frame manager no longer manages a 'frame' in the main thread but global state does " +
+ "not send change notifications until Snapshot.applyGlobalSnapshot() is called. " +
+ "Consider calling Snapshot.sendApplyNotifications() instead.",
+ ReplaceWith("Snapshot.applyGlobalSnapshot()", "androidx.compose.snapshots.Snapshot")
+ )
fun nextFrame() {
- if (inFrame) {
- commit()
- open()
- }
+ Snapshot.sendApplyNotifications()
}
internal fun scheduleCleanup() {
@@ -165,17 +162,18 @@
*/
internal fun recordRead(value: Any) = readObserver(value)
- private val writeObserver: (write: Any, isNew: Boolean) -> Unit = { value, isNew ->
+ private val globalWriteObserver: SnapshotWriteObserver = {
if (!commitPending) {
commitPending = true
schedule {
commitPending = false
- nextFrame()
+ Snapshot.sendApplyNotifications()
}
}
- recordWrite(value, isNew)
}
+ private val writeObserver: SnapshotWriteObserver = ::recordWrite
+
/**
* Records that [value], or one of its fields, was changed and the reads recorded by
* [recordRead] might have changed value.
@@ -183,54 +181,65 @@
* Calling this method outside of composition is ignored. This is only intended for
* invaliding composable lambdas while composing.
*/
- internal fun recordWrite(value: Any, isNew: Boolean) {
- if (!isNew && composing) {
+ internal fun recordWrite(value: Any) {
+ if (composing) {
val currentInvalidations = synchronized(lock) {
invalidations.getValueOf(value)
}
if (currentInvalidations.isNotEmpty()) {
- var hasDeferred = false
- var hasImminent = false
+ var invalidateNeeeded = false
+ var processed = false
for (index in 0 until currentInvalidations.size) {
val scope = currentInvalidations[index]
when (scope.invalidate()) {
- InvalidationResult.DEFERRED -> hasDeferred = true
- InvalidationResult.IMMINENT -> hasImminent = true
+ InvalidationResult.DEFERRED ->
+ // Even if we already processed elsewhere we need to invalidate this
+ // object because of a write after read.
+ invalidateNeeeded = true
+ InvalidationResult.IGNORED,
+ InvalidationResult.IMMINENT ->
+ // Either the write happened before the composition landed or no
+ // reads of the state occurred during composition before the write.
+ // In either case a valid composition was will be generated that
+ // incorporates the change.
+ processed = true
else -> { } // Nothing to do
}
}
- if (hasDeferred || hasImminent) {
- val frame = currentFrame()
- if (hasDeferred)
- deferredMap.add(frame, value)
- if (hasImminent)
- immediateMap.add(frame, value)
+ if (invalidateNeeeded || processed) {
+ val snapshot = currentSnapshot().root
+ if (invalidateNeeeded)
+ this.needsInvalidate.add(snapshot, value)
+ if (processed)
+ alreadyProcessed.add(snapshot, value)
}
}
}
}
- private val commitObserver: (committed: Set<Any>, frame: Frame) -> Unit = { committed, frame ->
- trace("Model:commitTransaction") {
- val currentInvalidations = synchronized(lock) {
- val deferred = deferredMap.getValueOf(frame)
- val immediate = immediateMap.getValueOf(frame)
- // Ignore the object if its invalidations were all immediate for the frame.
- invalidations[committed.filter {
- !immediate.contains(it) || deferred.contains(it)
- }]
- }
- if (currentInvalidations.isNotEmpty()) {
- if (!isMainThread()) {
- schedule {
+ private val applyObserver: (committed: Set<Any>, snapshot: Snapshot) -> Unit =
+ { committed, snapshot ->
+ trace("Model:appliedSnapshot") {
+ val currentInvalidations = synchronized(lock) {
+ val invalidateNeeded = needsInvalidate.getValueOf(snapshot)
+ val processed = alreadyProcessed.getValueOf(snapshot)
+ // Ignore the object if its invalidations was already processed for this
+ // snapshot and was not marked as needing an invalidate.
+ invalidations[committed.filter {
+ !processed.contains(it) || invalidateNeeded.contains(it)
+ }]
+ }
+ if (currentInvalidations.isNotEmpty()) {
+ if (!isMainThread()) {
+ schedule {
+ currentInvalidations.forEach { scope -> scope.invalidate() }
+ }
+ } else {
currentInvalidations.forEach { scope -> scope.invalidate() }
}
- } else {
- currentInvalidations.forEach { scope -> scope.invalidate() }
}
}
}
- }
/**
* Remove all invalidation scopes not currently part of a composition
@@ -246,13 +255,6 @@
}
}
- private fun open() {
- open(
- readObserver = readObserver,
- writeObserver = writeObserver
- )
- }
-
/**
* List of deferred callbacks to run serially. Guarded by its own monitor lock.
*/
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/MutableState.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/MutableState.kt
index 68e41a1..3f61f04 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/MutableState.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/MutableState.kt
@@ -16,62 +16,69 @@
package androidx.compose
-import androidx.compose.frames.AbstractRecord
-import androidx.compose.frames.Framed
-import androidx.compose.frames.Record
-import androidx.compose.frames._created
-import androidx.compose.frames.readable
-import androidx.compose.frames.withCurrent
-import androidx.compose.frames.writable
+import androidx.compose.snapshots.MutableSnapshot
+import androidx.compose.snapshots.Snapshot
+import androidx.compose.snapshots.SnapshotStateList
+import androidx.compose.snapshots.SnapshotStateMap
+import androidx.compose.snapshots.StateObject
+import androidx.compose.snapshots.StateRecord
+import androidx.compose.snapshots.readable
+import androidx.compose.snapshots.takeSnapshot
+import androidx.compose.snapshots.withCurrent
+import androidx.compose.snapshots.writable
import kotlin.reflect.KProperty
/**
* A composable used to introduce a state value of type [T] into a composition.
*
- * This is useful when you have a value that you would like to locally mutate and use in the context of a composition. Since
- * the returned [MutableState] instance implements [Framed], changes to the [MutableState.value]
- * property will be automatically tracked in composition and schedule a recompose.
+ * This is useful when you have a value that you would like to locally mutate and use in the
+ * context of a composition. Since the returned [MutableState] instance implements snapshot
+ * changes to the [MutableState.value] property will be automatically tracked in composition and
+ * schedule a recompose.
*
- * The [MutableState] class can be used several different ways. For example, the most basic way is to store the returned state
- * value into a local immutable variable, and then set the [MutableState.value] property on it.
+ * The [MutableState] class can be used several different ways. For example, the most basic way
+ * is to store the returned state value into a local immutable variable, and then set the
+ * [MutableState.value] property on it.
*
* @sample androidx.compose.samples.SimpleStateSample
*
* @sample androidx.compose.samples.stateSample
*
- * In this example, `LoginScreen` is recomposed every time the username and password of the
- * model updates, keeping the UI synchronized with the state.
+ * In this example, `LoginScreen` is recomposed every time the username and password of the model
+ * updates, keeping the UI synchronized with the state.
*
* Additionally, you can destructure the [MutableState] object into a value and a "setter" function.
*
* @sample androidx.compose.samples.DestructuredStateSample
*
- * Finally, the [MutableState] instance can be used as a variable delegate to a local mutable variable.
+ * Finally, the [MutableState] instance can be used as a variable delegate to a local mutable
+ * variable.
*
* @sample androidx.compose.samples.DelegatedStateSample
*
- * @param areEquivalent a callback to compare the previous and new instance of [T] when
- * [MutableState.value] is written to. If this returns true, then no recomposition will be
- * scheduled. See [ReferentiallyEqual] and [StructurallyEqual] for simple implementations.
- * @param init A factory function to create the initial value of this state
+ * @param policy a policy to control how changes are handled in mutable snapshots.
+
* @return An instance of [MutableState] that wraps the value.
*
* @see [stateFor]
* @see [remember]
+ * @see [SnapshotMutationPolicy]
*/
@Composable
inline fun <T> state(
- noinline areEquivalent: (old: T, new: T) -> Boolean = ReferentiallyEqual,
- init: () -> T
-) = remember { mutableStateOf(init(), areEquivalent) }
+ policy: SnapshotMutationPolicy<T> = referentialEqualityPolicy(),
+ init: @ComposableContract(preventCapture = true) () -> T
+) = remember { mutableStateOf(init(), policy) }
/**
- * An effect to introduce a state value of type [T] into a composition that will last as long as the input [v1] does not change.
+ * An effect to introduce a state value of type [T] into a composition that will last as long as
+ * the input [v1] does not change.
*
- * This is useful when you have a value that you would like to locally mutate and use in the context of a composition, and its
- * value is scoped to another value and you want it to be reset every time the other value changes.
+ * This is useful when you have a value that you would like to locally mutate and use in the
+ * context of a composition, and its value is scoped to another value and you want it to be reset
+ * every time the other value changes.
*
- * The returned [MutableState] instance implements [Framed] so that changes to the
+ * The returned [MutableState] instance implements snapshot so that changes to the
* [MutableState.value] property will be automatically tracked in composition and schedule a
* recompose.
*
@@ -85,16 +92,20 @@
* @see [remember]
*/
@Composable
-inline fun <T, /*reified*/ V1> stateFor(v1: V1, init: () -> T) =
- remember(v1) { mutableStateOf(init()) }
+inline fun <T, /*reified*/ V1> stateFor(
+ v1: V1,
+ init: @ComposableContract(preventCapture = true) () -> T
+) = remember(v1) { mutableStateOf(init()) }
/**
- * An effect to introduce a state value of type [T] into a composition that will last as long as the inputs [v1] and [v2] do not change.
+ * An effect to introduce a state value of type [T] into a composition that will last as long as
+ * the inputs [v1] and [v2] do not change.
*
- * This is useful when you have a value that you would like to locally mutate and use in the context of a composition, and its
- * value is scoped to another value and you want it to be reset every time the other value changes.
+ * This is useful when you have a value that you would like to locally mutate and use in the
+ * context of a composition, and its value is scoped to another value and you want it to be reset
+ * every time the other value changes.
*
- * The returned [MutableState] instance implements [Framed] such that changes to the
+ * The returned [MutableState] instance implements snapshots such that changes to the
* [MutableState.value] property will be automatically tracked in composition and schedule a
* recompose.
*
@@ -110,20 +121,23 @@
inline fun <T, reified V1, reified V2> stateFor(
v1: V1,
v2: V2,
- init: () -> T
+ init: @ComposableContract(preventCapture = true) () -> T
) = remember(v1, v2) { mutableStateOf(init()) }
/**
- * An effect to introduce a state value of type [T] into a composition that will last as long as the inputs [inputs] do not change.
+ * An effect to introduce a state value of type [T] into a composition that will last as long as
+ * the inputs [inputs] do not change.
*
- * This is useful when you have a value that you would like to locally mutate and use in the context of a composition, and its
- * value is scoped to another value and you want it to be reset every time the other value changes.
+ * This is useful when you have a value that you would like to locally mutate and use in the
+ * context of a composition, and its value is scoped to another value and you want it to be reset
+ * every time the other value changes.
*
- * The returned [MutableState] instance implements [Framed] so that changes to the
+ * The returned [MutableState] instance implements snapshots so that changes to the
* [MutableState.value] property will be automatically tracked in composition and schedule a
* recompose.
*
- * @param inputs A set of inputs such that, when any of them have changed, will cause the state to reset and [init] to be rerun
+ * @param inputs A set of inputs such that, when any of them have changed, will cause the state
+ * to reset and [init] to be rerun
* @param init A factory function to create the initial value of this state
* @return An instance of [MutableState] that wraps the value.
*
@@ -131,40 +145,55 @@
* @see [remember]
*/
@Composable
-inline fun <T> stateFor(vararg inputs: Any?, init: () -> T) =
- remember(*inputs) { mutableStateOf(init()) }
+inline fun <T> stateFor(
+ vararg inputs: Any?,
+ init: @ComposableContract(preventCapture = true) () -> T
+) = remember(*inputs) { mutableStateOf(init()) }
/**
* Return a new [MutableState] initialized with the passed in [value]
*
* The MutableState class is a single value holder whose reads and writes are observed by
- * Compose. Additionally, writes to it are transacted as part of the [Framed] transaction system.
- * During composition, you will likely want to use the `state` and `stateFor` composables instead
+ * Compose. Additionally, writes to it are transacted as part of the [Snapshot] system.
+ * During composition, you will likely want to use the [state] and [stateFor] composables instead
* of this factory function.
*
* @param value the initial value for the [MutableState]
- * @param areEquivalent a callback to compare the previous and new instance of [value] when
- * it is written to. If this returns true, then no recomposition will be scheduled. See
- * [ReferentiallyEqual] and [StructurallyEqual] for simple implementations.
+ * @param policy a policy to controls how changes are handled in mutable snapshots.
*
* @see state
* @see stateFor
* @see State
* @see MutableState
+ * @see SnapshotMutationPolicy
*/
fun <T> mutableStateOf(
value: T,
- areEquivalent: (old: T, new: T) -> Boolean = ReferentiallyEqual
-): MutableState<T> = FramedMutableState(value, areEquivalent)
+ policy: SnapshotMutationPolicy<T> = referentialEqualityPolicy()
+): MutableState<T> = SnapshotMutableState(value, policy)
/**
* Simple comparison callback using referential `===` equality
*/
+@Deprecated(
+ "areEquivalent callbacks have been replaced by MutableStateSnapshotPolicy",
+ ReplaceWith(
+ "referenceEqualityPolicy()",
+ "androidx.compose.referenceEqualityPolicy"
+ )
+)
val ReferentiallyEqual = fun(old: Any?, new: Any?) = old === new
/**
* Simple comparison callback using structural [Any.equals] equality
*/
+@Deprecated(
+ "areEquivalent callbacks have been replaced by MutableStateSnapshotPolicy",
+ ReplaceWith(
+ "structuralEqualityPolicy()",
+ "androidx.compose.structuralEqualityPolicy"
+ )
+)
val StructurallyEqual = fun(old: Any?, new: Any?) = old == new
/**
@@ -174,6 +203,13 @@
* In this case we cannot correctly compare for equality, and so we trust that something else
* correctly triggered a recomposition.
*/
+@Deprecated(
+ "areEquivalent callbacks have been replaced by MutableStateSnapshotPolicy",
+ ReplaceWith(
+ "neverEqualPolicy()",
+ "androidx.compose.neverEqualPolicy"
+ )
+)
val NeverEqual = fun(_: Any?, _: Any?) = false
/**
@@ -228,61 +264,83 @@
/**
* The ModelMutableState class is a single value holder whose reads and writes are observed by
* Compose.
- * Additionally, writes to it are transacted as part of the [Framed] transaction system.
+ *
+ * Additionally, writes to it are transacted as part of the [Snapshot] system.
* `state` and `stateFor` composables.
*
* @property value the wrapped value
- * @property areEquivalent function used for comparing old and new [value]s to determine whether
- * to trigger a recomposition or not.
+ * @property policy a policy to control how changes are handled in a mutable snapshot.
*
- * @see [state]
- * @see [stateFor]
- * @see [mutableStateOf]
+ * @see state
+ * @see stateFor
+ * @see mutableStateOf
+ * @see SnapshotMutationPolicy
*/
-private class FramedMutableState<T>(
+@OptIn(androidx.compose.ExperimentalComposeApi::class)
+private class SnapshotMutableState<T>(
value: T,
- val areEquivalent: (old: T, new: T) -> Boolean
-) : Framed, MutableState<T> {
- /* NOTE(lmr): When this module is compiled with IR, we will need to remove the below Framed implementation */
-
+ val policy: SnapshotMutationPolicy<T>
+) : StateObject, MutableState<T> {
@Suppress("UNCHECKED_CAST")
override var value: T
get() = next.readable(this).value
set(value) = next.withCurrent {
- if (!areEquivalent(it.value, value)) {
- next.writable(this).value = value
+ if (!policy.equivalent(it.value, value)) {
+ next.writable(this) { this.value = value }
}
}
- private var next: StateRecord<T> = StateRecord(value)
+ private var next: StateStateRecord<T> = StateStateRecord(value)
- init {
- _created(this)
- }
-
- override val firstFrameRecord: Record
+ override val firstStateRecord: StateRecord
get() = next
- override fun prependFrameRecord(value: Record) {
- value.next = next
+ override fun prependStateRecord(value: StateRecord) {
@Suppress("UNCHECKED_CAST")
- next = value as StateRecord<T>
+ next = value as StateStateRecord<T>
}
- private class StateRecord<T>(myValue: T) : AbstractRecord() {
- override fun assign(value: Record) {
+ @Suppress("UNCHECKED_CAST")
+ override fun mergeRecords(
+ previous: StateRecord,
+ current: StateRecord,
+ applied: StateRecord
+ ): StateRecord? {
+ val previousRecord = previous as StateStateRecord<T>
+ val currentRecord = current as StateStateRecord<T>
+ val appliedRecord = applied as StateStateRecord<T>
+ return if (policy.equivalent(currentRecord.value, appliedRecord.value))
+ current
+ else {
+ val merged = policy.merge(
+ previousRecord.value,
+ currentRecord.value,
+ appliedRecord.value
+ )
+ if (merged != null) {
+ appliedRecord.create().also {
+ (it as StateStateRecord<T>).value = merged
+ }
+ } else {
+ null
+ }
+ }
+ }
+
+ private class StateStateRecord<T>(myValue: T) : StateRecord() {
+ override fun assign(value: StateRecord) {
@Suppress("UNCHECKED_CAST")
- this.value = (value as StateRecord<T>).value
+ this.value = (value as StateStateRecord<T>).value
}
- override fun create(): Record =
- StateRecord(value)
+ override fun create(): StateRecord = StateStateRecord(value)
var value: T = myValue
}
/**
- * The componentN() operators allow state objects to be used with the property destructuring syntax
+ * The componentN() operators allow state objects to be used with the property destructuring
+ * syntax
*
* var (foo, setFoo) = state { 0 }
* setFoo(123) // set
@@ -292,3 +350,163 @@
override operator fun component2(): (T) -> Unit = { value = it }
}
+
+/**
+ * A policy to control how the result of [mutableStateOf] and [state] report and merge changes to
+ * the state object.
+ *
+ * A mutation policy can be passed as an parameter to [state], [mutableStateOf], and [ambientOf].
+ *
+ * Typically, one of the stock policies should be used such as [referentialEqualityPolicy],
+ * [structuralEqualityPolicy], or [neverEqualPolicy]. However, a custom mutation policy can be
+ * created by implementing this interface, such as a counter policy,
+ *
+ * @sample androidx.compose.samples.counterSample
+ */
+interface SnapshotMutationPolicy<T> {
+ /**
+ * Determine if setting a state value's are equivalent and should be treated as equal. If
+ * [equivalent] returns `true` the new value is not considered a change.
+ */
+ fun equivalent(a: T, b: T): Boolean
+
+ /**
+ * Merge conflicting changes in snapshots. This is only called if [current] and [applied] are
+ * not [equivalent]. If a valid merged value can be calculated then it should be returned.
+ *
+ * For example, if the state object holds an immutable data class with multiple fields,
+ * and [applied] has changed fields that are unmodified by [current] it might be valid to return
+ * a new copy of the data class that combines that changes from both [current] and [applied]
+ * allowing a snapshot to apply that would have otherwise failed.
+ */
+ @ExperimentalComposeApi
+ fun merge(previous: T, current: T, applied: T): T? = null
+}
+
+/**
+ * A policy to treat values of a [MutableState] as equivalent if they are referentially (===) equal.
+ *
+ * Setting [MutableState.value] to its current referentially (===) equal value is not considered
+ * a change. When applying a [MutableSnapshot], if the snapshot changes the value to the
+ * equivalent value the parent snapshot has is not considered a conflict.
+ */
+@Suppress("UNCHECKED_CAST")
+fun <T> referentialEqualityPolicy(): SnapshotMutationPolicy<T> =
+ ReferentialEqualityPolicy as SnapshotMutationPolicy<T>
+
+private object ReferentialEqualityPolicy : SnapshotMutationPolicy<Any?> {
+ override fun equivalent(a: Any?, b: Any?) = a === b
+}
+
+/**
+ * A policy to treat values of a [MutableState] as equivalent if they are structurally (==) equal.
+ *
+ * Setting [MutableState.value] to its current structurally (==) equal value is not considered
+ * a change. When applying a [MutableSnapshot], if the snapshot changes the value to the
+ * equivalent value the parent snapshot has is not considered a conflict.
+ */
+@Suppress("UNCHECKED_CAST")
+fun <T> structuralEqualityPolicy(): SnapshotMutationPolicy<T> =
+ StructuralEqualityPolicy as SnapshotMutationPolicy<T>
+
+private object StructuralEqualityPolicy : SnapshotMutationPolicy<Any?> {
+ override fun equivalent(a: Any?, b: Any?) = a == b
+}
+
+/**
+ * A policy never treat values of a [MutableState] as equivalent.
+ *
+ * Setting [MutableState.value] will always be considered a change. When applying a
+ * [MutableSnapshot] that changes the state will always conflict with other snapshots that change
+ * the same state.
+ */
+@Suppress("UNCHECKED_CAST")
+fun <T> neverEqualPolicy(): SnapshotMutationPolicy<T> =
+ NeverEqualPolicy as SnapshotMutationPolicy<T>
+
+private object NeverEqualPolicy : SnapshotMutationPolicy<Any?> {
+ override fun equivalent(a: Any?, b: Any?) = false
+}
+
+/**
+ * A mutable list that is stable for composition.
+ *
+ * @sample androidx.compose.samples.stateListSample
+ *
+ * @see MutableList
+ * @see Stable
+ * @see Composable
+ */
+@Stable
+interface StableMutableList<T> : MutableList<T>
+
+/**
+ * Create a instance of MutableList<T> that is observable and can be snapshot.
+ *
+ * @sample androidx.compose.samples.stateListSample
+ *
+ * @see mutableStateOf
+ * @see mutableListOf
+ * @see MutableList
+ * @see takeSnapshot
+ */
+fun <T> mutableStateListOf(): StableMutableList<T> = SnapshotStateList<T>()
+
+/**
+ * Create an instance of MutableList<T> that is observable and can be snapshot.
+ *
+ * @see mutableStateOf
+ * @see mutableListOf
+ * @see MutableList
+ * @see takeSnapshot
+ */
+fun <T> mutableStateListOf(vararg elements: T): StableMutableList<T> =
+ SnapshotStateList<T>().also { it.addAll(elements) }
+
+/**
+ * Create an instance of MutableList<T> from a collection that is observerable and can be snapshot.
+ */
+fun <T> Collection<T>.toMutableStateList(): StableMutableList<T> =
+ SnapshotStateList<T>().also { it.addAll(this) }
+
+/**
+ * A mutable map that is stable for composition.
+ *
+ * @sample androidx.compose.samples.stateMapSample
+ *
+ * @see MutableMap
+ * @see Stable
+ * @see Composable
+ */
+@Stable
+interface StableMutableMap<K, V> : MutableMap<K, V>
+
+/**
+ * Create a instance of MutableSet<K, V> that is observable and can be snapshot.
+ *
+ * @sample androidx.compose.samples.stateMapSample
+ *
+ * @see mutableStateOf
+ * @see mutableMapOf
+ * @see MutableMap
+ * @see takeSnapshot
+ */
+fun <K, V> mutableStateMapOf(): StableMutableMap<K, V> = SnapshotStateMap()
+
+/**
+ * Create a instance of MutableMap<K, V> that is observable and can be snapshot.
+ *
+ * @see mutableStateOf
+ * @see mutableMapOf
+ * @see MutableMap
+ * @see takeSnapshot
+ */
+fun <K, V> mutableStateMapOf(vararg pairs: Pair<K, V>): StableMutableMap<K, V> =
+ SnapshotStateMap<K, V>().apply { putAll(pairs) }
+
+/**
+ * Create an instance of MutableMap<K, V> from a collection of pairs that is observable and can be
+ * snapshot.
+ */
+fun <K, V> Iterable<Pair<K, V>>.toMutableStateMap(): StableMutableMap<K, V> =
+ SnapshotStateMap<K, V>().also { it.putAll(this) }
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Observe.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Observe.kt
deleted file mode 100644
index 33131a7..0000000
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Observe.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose
-
-/**
- * This component creates a scope which will be the root of recomposition for any reads or writes to
- * state instances that happen inside of it. This can be used to improve performance in situations
- * where you know that a specific state object will need to change at high frequencies, and you
- * want to reduce the burden of recomposition. It is recommended that you not introduce [Observe]
- * into the composition until it is clear that is necessary to improve performance.
- *
- * @param body The composable content to observe
- *
- * @see state
- * @see invalidate
- * @see Recompose
- */
-@Suppress("DeprecatedCallableAddReplaceWith")
-@Composable
-@Deprecated(
- "Observe is no longer a useful abstraction. If you need to replicate it, its implementation " +
- "can be replicated by just creating a composable function which executes a composable" +
- " lambda parameter. For example, " +
- "`@Composable fun Observe(body: @Composable () -> Unit) = body()"
-)
-fun Observe(body: @Composable () -> Unit) = body()
\ No newline at end of file
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recompose.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recompose.kt
deleted file mode 100644
index cd32a49..0000000
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recompose.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose
-
-/**
- * [Recompose] is a component which passes a "recompose" function to its children which, when
- * invoked, will cause its children to recompose. This is useful if you are updating local state
- * and need to cause a recomposition manually.
- *
- * In most cases we recommend using [state] with immutable types in order to
- * maintain local state inside of composables. For cases where this is impractical, Recompose can
- * help you.
- *
- * @see state
- * @see Observe
- * @see invalidate
- */
-@Composable
-@Deprecated(
- "The Recompose composable is no longer a useful abstraction. Most recomposition should happen" +
- " as a result of MutableState assignments. For anything beyond that, it is " +
- "recommended that you use the `invalidate` function to trigger a recomposition of the" +
- " current scope.",
- replaceWith = ReplaceWith("val recompose = invalidate")
-)
-fun Recompose(body: @Composable (recompose: () -> Unit) -> Unit) = body(invalidate)
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
index 62260a5..e87bdf73 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
@@ -14,10 +14,15 @@
* limitations under the License.
*/
-@file:OptIn(InternalComposeApi::class)
+@file:OptIn(
+ ExperimentalComposeApi::class,
+ InternalComposeApi::class
+)
package androidx.compose
+import androidx.compose.dispatch.DefaultMonotonicFrameClock
import androidx.compose.dispatch.MonotonicFrameClock
+import androidx.compose.snapshots.Snapshot
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -28,18 +33,17 @@
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlin.coroutines.Continuation
import kotlin.coroutines.CoroutineContext
+import kotlin.coroutines.coroutineContext
import kotlin.coroutines.resume
/**
* Runs [block] with a new, active [Recomposer] applying changes in the calling [CoroutineContext].
- * [frameClock] is used to align changes with display frames.
*/
suspend fun withRunningRecomposer(
- frameClock: MonotonicFrameClock,
block: suspend CoroutineScope.(recomposer: Recomposer) -> Unit
): Unit = coroutineScope {
val recomposer = Recomposer()
- val recompositionJob = launch { recomposer.runRecomposeAndApplyChanges(frameClock) }
+ val recompositionJob = launch { recomposer.runRecomposeAndApplyChanges() }
block(recomposer)
recompositionJob.cancel()
}
@@ -94,11 +98,9 @@
*
* This method never returns. Cancel the calling [CoroutineScope] to stop.
*/
- suspend fun runRecomposeAndApplyChanges(
- frameClock: MonotonicFrameClock
- ): Nothing {
+ suspend fun runRecomposeAndApplyChanges(): Nothing {
coroutineScope {
- recomposeAndApplyChanges(this, frameClock, Long.MAX_VALUE)
+ recomposeAndApplyChanges(this, Long.MAX_VALUE)
}
error("this function never returns")
}
@@ -115,7 +117,6 @@
*/
suspend fun recomposeAndApplyChanges(
applyCoroutineScope: CoroutineScope,
- frameClock: MonotonicFrameClock,
frameCount: Long
) {
var framesRemaining = frameCount
@@ -125,6 +126,9 @@
error("already recomposing and applying changes")
}
+ // Cache this so we don't go looking for it each time through the loop.
+ val frameClock = coroutineContext[MonotonicFrameClock] ?: DefaultMonotonicFrameClock
+
try {
idlingLatch.closeLatch()
while (frameCount == Long.MAX_VALUE || framesRemaining-- > 0L) {
@@ -165,15 +169,15 @@
// recomposer clock.
broadcastFrameClock.sendFrame(frameTime)
- // Ensure any committed frames in other threads are visible
- FrameManager.nextFrame()
+ // Ensure any global changes are observed
+ Snapshot.sendApplyNotifications()
// ...and make sure we know about any pending invalidations the commit
// may have caused before recomposing - Handler messages can't run between
// input processing and the frame clock pulse!
FrameManager.synchronize()
- // ...and pick up any stragglers as a result of the above frame sync
+ // ...and pick up any stragglers as a result of the above snapshot sync
synchronized(invalidComposers) {
toRecompose.addAll(invalidComposers)
invalidComposers.clear()
@@ -185,10 +189,6 @@
}
toRecompose.clear()
}
-
- // Ensure any changes made during composition are now visible to other
- // threads.
- FrameManager.nextFrame()
}
}
}
@@ -248,11 +248,14 @@
}
// TODO(b/143755743)
if (!composerWasComposing) {
- FrameManager.nextFrame()
+ Snapshot.notifyObjectsInitialized()
}
composer.applyChanges()
+
if (!composerWasComposing) {
- FrameManager.nextFrame()
+ // Ensure that any state objects created during applyChanges are seen as changed
+ // if modified after this call.
+ Snapshot.notifyObjectsInitialized()
}
} finally {
currentComposerInternal = prevComposer
@@ -302,21 +305,6 @@
suspend fun awaitIdle(): Unit = idlingLatch.await()
companion object {
-
- /**
- * Check if there's pending changes to be recomposed in this thread
- *
- * @return true if there're pending changes in this thread, false otherwise
- */
- @Deprecated(
- "Use the Recomposer instance fun instead",
- ReplaceWith(
- "Recomposer.current().hasPendingChanges()",
- "androidx.compose.Recomposer"
- )
- )
- fun hasPendingChanges() = current().hasPendingChanges()
-
/**
* Retrieves [Recomposer] for the current thread. Needs to be the main thread.
*/
@@ -325,13 +313,13 @@
require(isMainThread()) { "No Recomposer for this Thread" }
return mainRecomposer ?: run {
- val mainScope = CoroutineScope(NonCancellable + mainThreadCompositionDispatcher())
+ val mainScope = CoroutineScope(NonCancellable + mainThreadCompositionContext())
Recomposer().also {
mainRecomposer = it
@OptIn(ExperimentalCoroutinesApi::class)
mainScope.launch(start = CoroutineStart.UNDISPATCHED) {
- it.runRecomposeAndApplyChanges(mainThreadFrameClock())
+ it.runRecomposeAndApplyChanges()
}
}
}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Remember.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Remember.kt
index 87d7621e..029ad96 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Remember.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Remember.kt
@@ -21,7 +21,7 @@
* Recomposition will always return the value produced by composition.
*/
@Composable
-inline fun <T> remember(calculation: () -> T): T =
+inline fun <T> remember(calculation: @ComposableContract(preventCapture = true) () -> T): T =
currentComposer.cache(true, calculation)
/**
@@ -30,7 +30,10 @@
*/
@OptIn(ComposeCompilerApi::class)
@Composable
-inline fun <T, /*reified*/ V1> remember(v1: V1, calculation: () -> T): T {
+inline fun <T, /*reified*/ V1> remember(
+ v1: V1,
+ calculation: @ComposableContract(preventCapture = true) () -> T
+): T {
return currentComposer.cache(!currentComposer.changed(v1), calculation)
}
@@ -43,7 +46,7 @@
inline fun <T, /*reified*/ V1, /*reified*/ V2> remember(
v1: V1,
v2: V2,
- calculation: () -> T
+ calculation: @ComposableContract(preventCapture = true) () -> T
): T {
var valid = !currentComposer.changed(v1)
valid = !currentComposer.changed(v2) && valid
@@ -60,7 +63,7 @@
v1: V1,
v2: V2,
v3: V3,
- calculation: () -> T
+ calculation: @ComposableContract(preventCapture = true) () -> T
): T {
var valid = !currentComposer.changed(v1)
valid = !currentComposer.changed(v2) && valid
@@ -74,7 +77,10 @@
*/
@OptIn(ComposeCompilerApi::class)
@Composable
-inline fun <V> remember(vararg inputs: Any?, block: () -> V): V {
+inline fun <V> remember(
+ vararg inputs: Any?,
+ block: @ComposableContract(preventCapture = true) () -> V
+): V {
var valid = true
for (input in inputs) valid = !currentComposer.changed(input) && valid
return currentComposer.cache(valid, block)
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Untracked.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Untracked.kt
index 9fe14cf..f77a3fd 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Untracked.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Untracked.kt
@@ -27,4 +27,9 @@
AnnotationTarget.FUNCTION
)
@ExperimentalComposeApi
+@Deprecated(
+ "This is now implemented as a composable contract",
+ ReplaceWith("@ComposableContract(tracked=false)", "androidx.compose.ComposableContract"),
+ DeprecationLevel.ERROR
+)
annotation class Untracked
\ No newline at end of file
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/FrameContainers.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/FrameContainers.kt
index bb96b6e..d310838 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/FrameContainers.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/FrameContainers.kt
@@ -14,11 +14,28 @@
* limitations under the License.
*/
+@file:Suppress("DEPRECATION", "UNUSED_PARAMETER")
+
package androidx.compose.frames
import kotlin.jvm.JvmField
-class ModelList<T> : MutableList<T>, Framed {
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "StableMutableList<T>",
+ "androidx.compose.StableMutableList"
+ )
+)
+class ModelList<T>
+ @Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateListOf()",
+ "androidx.compose.mutableStateListOf"
+ )
+ )
+ constructor() : MutableList<T>, Framed {
private var myFirst: Record =
ArrayContainer<T>()
override val firstFrameRecord: Record get() = myFirst
@@ -29,17 +46,9 @@
}
@Suppress("UNCHECKED_CAST") private val readable: ArrayContainer<T>
- get() =
- _readable(
- myFirst,
- this
- ) as ArrayContainer<T>
+ get() = deprecated()
@Suppress("UNCHECKED_CAST") private val writable: ArrayContainer<T>
- get() =
- _writable(
- myFirst,
- this
- ) as ArrayContainer<T>
+ get() = deprecated()
override val size: Int get() = readable.list.size
override fun add(element: T): Boolean = writable.list.add(element)
@@ -84,26 +93,10 @@
MutableListIterator<T> {
private var nextCount = 0
- private var readId = currentFrame().id
+ private var readId: Int = deprecated()
private var currentIterator = modelList.readable.list.listIterator(index)
- private fun ensureMutable(): ModelListIterator<T> {
- val currentId = currentFrame().id
- when (readId) {
- currentId -> {
- // Convert list to being writable
- currentIterator = modelList.writable.list.listIterator(index)
- repeat(-nextCount) { currentIterator.previous() }
- repeat(nextCount) { currentIterator.next() }
- readId = -1
- }
- -1 -> {
- // Nothing to do as the currentIterator is mutable
- }
- else -> error("Cannot mutate a list using an iterator created in a different frame")
- }
- return this
- }
+ private fun ensureMutable(): ModelListIterator<T> = deprecated()
override fun hasNext(): Boolean = currentIterator.hasNext()
override fun next(): T = currentIterator.next().also { nextCount++ }
@@ -117,11 +110,52 @@
}
}
-fun <T> modelListOf() = ModelList<T>()
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateListOf()",
+ "androidx.compose.mutableStateListOf"
+ ),
+ DeprecationLevel.ERROR
+)
+fun <T> modelListOf(): ModelList<T> = deprecated()
+
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateListOf(element)",
+ "androidx.compose.mutableStateListOf"
+ ),
+ DeprecationLevel.ERROR
+)
fun <T> modelListOf(element: T) = ModelList<T>().apply { add(element) }
+
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateListOf(*elements)",
+ "androidx.compose.mutableStateListOf"
+ ),
+ DeprecationLevel.ERROR
+)
fun <T> modelListOf(vararg elements: T) = ModelList<T>().apply { addAll(elements) }
-class ModelMap<K, V> : MutableMap<K, V>, Framed {
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "StableMutableMap<K, V>",
+ "androidx.compose.StableMutableMap"
+ )
+)
+class ModelMap<K, V>
+ @Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateMapOf()",
+ "androidx.compose.StableMutableMap"
+ )
+ )
+ constructor() : MutableMap<K, V>, Framed {
private var myFirst: Record =
MapContainer<K, V>()
override val firstFrameRecord: Record get() = myFirst
@@ -133,16 +167,10 @@
@Suppress("UNCHECKED_CAST")
private val readable: MapContainer<K, V>
- get() = _readable(
- myFirst,
- this
- ) as MapContainer<K, V>
+ get() = deprecated()
@Suppress("UNCHECKED_CAST")
private val writable: MapContainer<K, V>
- get() = _writable(
- myFirst,
- this
- ) as MapContainer<K, V>
+ get() = deprecated()
override val size: Int get() = readable.map.size
override fun containsKey(key: K): Boolean = readable.map.containsKey(key)
@@ -177,8 +205,25 @@
}
}
-fun <K, V> modelMapOf() = ModelMap<K, V>()
-fun <K, V> modelMapOf(vararg pairs: Pair<K, V>) = ModelMap<K, V>().apply { putAll(pairs) }
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateMapOf()",
+ "androidx.compose.mutableStateMapOf"
+ ),
+ DeprecationLevel.ERROR
+)
+fun <K, V> modelMapOf(): ModelMap<K, V> = deprecated()
+
+@Deprecated(
+ "Frames have been replaced by snapshots",
+ ReplaceWith(
+ "mutableStateMapOf(*pairs)",
+ "androidx.compose.mutableStateMapOf"
+ ),
+ DeprecationLevel.ERROR
+)
+fun <K, V> modelMapOf(vararg pairs: Pair<K, V>): ModelMap<K, V> = deprecated()
private fun error(): Nothing =
error("Model sub-collection, iterators, lists and sets are immutable, use asMutable() first")
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/Frames.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/Frames.kt
index a82e04c..3fe6d6742 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/Frames.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/frames/Frames.kt
@@ -14,45 +14,42 @@
* limitations under the License.
*/
+@file:Suppress("DEPRECATION", "UNUSED_PARAMETER")
+
package androidx.compose.frames
-import androidx.compose.ThreadLocal
-import androidx.compose.synchronized
-
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "SnapshotApplyConflictException",
+ "androidx.compose.snapshots.SnapshotApplyConflictException"
+ ),
+ DeprecationLevel.ERROR
+)
class FrameAborted(val frame: Frame) : RuntimeException("Frame aborted")
/**
- * Frame id of 0 is reserved as invalid and no state record with frame 0 is considered valid.
- *
- * The value 0 was chosen as it is the default value of the Int frame id type and records initially
- * created will naturally have a frame id of 0. If this wasn't considered invalid adding such a
- * record to a framed object will make the state record immediately visible to all frames instead of
- * being born invalid. Using 0 ensures all state records are created invalid and must be explicitly
- * marked as valid in for a frame.
- */
-private const val INVALID_FRAME = 0
-
-/**
- * The frame records are created with frame ID CREATION_FRAME when not in a frame.
- * This allows framed object to be created in the in static initializers when a
- * frame could not have been created yet.
- *
- * The value 1 was chosen because it must be greater than 0, as 0 is reserved to
- * indicated an invalid frame therefore 1 is the lowest valid frame.
- */
-private const val CREATION_FRAME = 1
-
-/**
* Base implementation of a frame record
*/
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "StateRecord",
+ "androidx.compose.snapshots.StateRecord"
+ )
+)
abstract class AbstractRecord : Record {
- override var frameId: Int = threadFrame.get()?.id ?: CREATION_FRAME
+ override var frameId: Int = deprecated()
override var next: Record? = null
}
/**
* Frame local values of a framed object.
*/
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "StateRecord",
+ "androidx.compose.snapshots.StateRecord"
+ )
+)
interface Record {
/**
* The frame id of the frame in which the record was created.
@@ -79,6 +76,12 @@
* Interface implemented by all model objects. Used by this module to maintain the state records
* of a model object.
*/
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "StateObject",
+ "androidx.compose.snapshots.StateObject"
+ )
+)
interface Framed {
/**
* The first state record in a linked list of state records.
@@ -96,8 +99,6 @@
typealias FrameWriteObserver = (write: Any, isNew: Boolean) -> Unit
typealias FrameCommitObserver = (committed: Set<Any>, frame: Frame) -> Unit
-private val threadFrame = ThreadLocal<Frame>()
-
/**
* Information about a frame including the frame id and whether or not it is read only.
*/
@@ -126,14 +127,7 @@
/**
* Observe a frame write
*/
- internal val writeObserver: FrameWriteObserver?,
-
- /**
- * The reference to the thread local list of observers from [threadReadObservers].
- * We store it here to save on an additional ThreadLocal.get() call during
- * the every model read.
- */
- internal var threadReadObservers: MutableList<FrameReadObserver>
+ internal val writeObserver: FrameWriteObserver?
) {
internal val modified = if (readOnly) null else HashSet<Framed>()
@@ -150,73 +144,34 @@
}
/**
- * Holds the thread local list of [FrameReadObserver]s not associated with any specific [Frame].
- * They survives [Frame]s switch.
- */
-private val threadReadObservers = ThreadLocal { mutableListOf<FrameReadObserver>() }
-
-/**
* [FrameReadObserver] will be called for every frame read happened on the current
* thread during execution of the [block].
*/
-fun observeAllReads(readObserver: FrameReadObserver, block: () -> Unit) {
- val observers = threadReadObservers.get()
- try {
- observers.add(readObserver)
- block()
- } finally {
- observers.remove(readObserver)
- }
-}
-
-private fun validateNotInFrame() {
- if (threadFrame.get() != null) throw IllegalStateException("In an existing frame")
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "Snapshot.observe(readObserver, null, block)",
+ "androidx.compose.snapshots.Snapshot"
+ )
+)
+fun observeAllReads(readObserver: FrameReadObserver, block: () -> Unit): Unit = deprecated()
/**
* Return the thread's active frame. This will throw if no frame is active for the thread.
*/
-fun currentFrame(): Frame {
- return threadFrame.get() ?: throw IllegalStateException("Not in a frame")
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "Snapshot.current",
+ "androidx.compose.snapshots.Snapshot"
+ ),
+ DeprecationLevel.ERROR
+)
+fun currentFrame(): Frame = deprecated()
-val inFrame: Boolean get() = threadFrame.get() != null
-
-// A global synchronization object. This synchronization object should be taken before modifying any
-// of the fields below.
-private val sync = Any()
-
-// The following variables should only be written when sync is taken
-private var openFrames = FrameIdSet.EMPTY
-
-// The first frame created must be at least on more than the CREATION_FRAME so objects
-// created ouside a frame (that use the CREATION_FRAME as there id) and modified in the first
-// frame will be seen as modified.
-private var maxFrameId = CREATION_FRAME + 1
-
-private fun open(
- readOnly: Boolean,
- readObserver: FrameReadObserver?,
- writeObserver: FrameWriteObserver?
-): Frame {
- validateNotInFrame()
- val threadReadObservers = threadReadObservers.get()
- synchronized(sync) {
- val id = maxFrameId++
- val invalid = openFrames
- val frame = Frame(
- id = id,
- invalid = invalid,
- readOnly = readOnly,
- readObserver = readObserver,
- writeObserver = writeObserver,
- threadReadObservers = threadReadObservers
- )
- openFrames = openFrames.set(id)
- threadFrame.set(frame)
- return frame
- }
-}
+@Deprecated("Frames has been replaced by snapshots. There is no equivalent with snapshots, it is" +
+ " always valid to read and write to a state object.",
+ level = DeprecationLevel.ERROR
+)
+val inFrame: Boolean get(): Boolean = deprecated()
/**
* Open a frame
@@ -224,275 +179,171 @@
* @param readOnly true if the frame can only be read from
* @return the newly created frame's data
*/
-fun open(readOnly: Boolean = false) =
- open(readOnly, null, null)
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "takeMutableSnapshot()",
+ "androidx.compose.snapshots.takeMutableSnapshot"
+ ),
+ DeprecationLevel.ERROR
+)
+fun open(readOnly: Boolean = false): Unit = deprecated()
/**
* Open a frame with observers
*/
-fun open(readObserver: FrameReadObserver? = null, writeObserver: FrameWriteObserver? = null) =
- open(false, readObserver, writeObserver)
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "takeMutableSnapshot(readObserver, writeObserver)",
+ "androidx.compose.snapshots.takeMutableSnapshot"
+ ),
+ DeprecationLevel.ERROR
+)
+fun open(readObserver: FrameReadObserver? = null, writeObserver: FrameWriteObserver? = null) {
+ deprecated()
+}
/*
* Commits the pending frame if there one is open. Intended to be used in a `finally` clause
*/
-fun commitHandler() = threadFrame.get()?.let {
- commit(it)
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("snapshot.apply()"),
+ DeprecationLevel.ERROR
+)
+fun commitHandler(): Unit = deprecated()
/**
* Commit the current pending frame. Throws FrameAborted if changes in the frame collides with the
* current committed frame. Throws IllegalStateException no frame is open (use `commitHandler()` to
* commit a frame if one is open).
*/
-fun commit() = commit(currentFrame())
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("snapshot.apply()"),
+ DeprecationLevel.ERROR
+)
+fun commit(): Unit = deprecated()
/**
* Returns true if the given object framed object mutated in the the frame
*/
-fun wasModified(value: Any) = currentFrame().modified?.contains(value) ?: false
+@Deprecated("Frames has been replaced by snapshots",
+ level = DeprecationLevel.ERROR
+)
+fun wasModified(value: Any): Boolean = error("deprecated")
-private var commitListeners = mutableListOf<FrameCommitObserver>()
-
-fun registerCommitObserver(observer: FrameCommitObserver): () -> Unit {
- synchronized(sync) {
- commitListeners.add(observer)
- }
- return {
- synchronized(sync) {
- commitListeners.remove(observer)
- }
- }
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith(
+ "Snapshot.registerApplyObserver",
+ "androidx.compose.snapshots.Snapshot"
+ ),
+ DeprecationLevel.ERROR
+)
+fun registerCommitObserver(observer: FrameCommitObserver): () -> Unit = deprecated()
/**
* Commit the given frame. Throws FrameAborted if changes in the frame collides with the current
* committed frame.
*/
-fun commit(frame: Frame) {
- // NOTE: the this algorithm is currently does not guarantee a serializable frame operation as it
- // doesn't prevent crossing writes as described here https://arxiv.org/pdf/1412.2324.pdf
-
- // Just removing the frame from the open frame set is enough to make it visible, however, this
- // should only be done after first determining that there are no colliding writes in the commit.
-
- // A write is considered colliding if any write occurred on the object in a frame committed
- // since the frame was last opened. There is a trivial cases that can be dismissed immediately,
- // no writes occurred.
- val modified = frame.modified
- val id = frame.id
- val listeners = synchronized(sync) {
- if (!openFrames.get(id)) throw IllegalStateException("Frame not open")
- if (modified == null || modified.size == 0) {
- closeFrame(frame)
- emptyList()
- } else {
- // If there are modifications we need to ensure none of the modifications have
- // collisions.
-
- // A record is guaranteed not collide if no other write was performed to the record by a
- // committed frame since this frame was opened. No writes to a framed object occurred
- // if, ignoring this frame, the readable records for the framed object are the same. If
- // they are different, and the records could be merged, (such as considering writes to
- // different fields as not colliding) could be allowed here but, for now, the all writes
- // to a record are considered atomic. Additionally, if the field values can be merged
- // (e.g. using a conflict-free data type) this could also be allowed here.
-
- val current = openFrames
- val nextFrame = maxFrameId
- val start = frame.invalid.set(id)
- for (framed in frame.modified) {
- val first = framed.firstFrameRecord
- if (readable(
- first,
- nextFrame,
- current
- ) != readable(first, id, start)
- ) {
- abort(frame)
- }
- }
- closeFrame(frame)
- commitListeners.toList()
- }
- }
- if (modified != null)
- for (commitListener in listeners) {
- commitListener(modified, frame)
- }
-}
-
-/**
- * Throw an exception if a frame is not open
- */
-private fun validateOpen(frame: Frame) {
- if (!openFrames.get(frame.id)) throw IllegalStateException("Frame not open")
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("frame.apply().check()"),
+ DeprecationLevel.ERROR
+)
+fun commit(frame: Frame): Unit = error("deprecated")
/**
* Abort the current frame. Throws FrameAborted if a frame is open. Throws IllegalStateException if
* no frame is open (use `abortHandler` to abort a frame without throwing an exception or to abort a
* frame if one is open).
*/
-fun abort() {
- abort(currentFrame())
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("snapshot.dispose()"),
+ DeprecationLevel.ERROR
+)
+fun abort(): Unit = deprecated()
/**
* Abort the given frame and throw a FrameAborted exception.
*/
-fun abort(frame: Frame) {
- abortHandler(frame)
- throw FrameAborted(frame)
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("frame.dispose()"),
+ DeprecationLevel.ERROR
+)
+fun abort(frame: Frame): Unit = deprecated()
/**
* Abort the current frame if one is open. This is intended to be used in a catch handler to abort
* the frame and then rethrow the exception.
*/
-fun abortHandler() {
- threadFrame.get()?.let { abortHandler(it) }
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("snapshot.dispose()"),
+ DeprecationLevel.ERROR
+)
+fun abortHandler(): Unit = deprecated()
/**
* Abort the given frame.
*/
-fun abortHandler(frame: Frame) {
- validateOpen(frame)
-
- // Mark all state records created in this frame as invalid
- frame.modified?.let { modified ->
- val id = frame.id
- for (framed in modified) {
- var current: Record? = framed.firstFrameRecord
- while (current != null) {
- if (current.frameId == id) {
- current.frameId = INVALID_FRAME
- break
- }
- current = current.next
- }
- }
- }
-
- // The frame can now be closed.
- closeFrame(frame)
-}
+@Deprecated("Frames has been replaced by snapshots",
+ ReplaceWith("frame.dispose()"),
+ DeprecationLevel.ERROR
+)
+fun abortHandler(frame: Frame): Unit = deprecated()
/**
* Suspend the given frame. After calling suspend() the thread's no longer has an open frame. Call
* `restore()` to restore a suspended thread.
*/
-fun suspend(): Frame {
- val frame = currentFrame()
- threadFrame.set(null)
- return frame
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith(
+ "Snapshot.global",
+ "androidx.compose.snapshots.Snapshot"
+ ),
+ level = DeprecationLevel.ERROR
+)
+fun suspend(): Frame = error("deprecated")
/**
* Restore the given frame to the thread.
*/
-fun restore(frame: Frame) {
- validateNotInFrame()
- validateOpen(frame)
- frame.threadReadObservers = threadReadObservers.get()
- threadFrame.set(frame)
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith(
+ "Snapshot.global",
+ "androidx.compose.snapshots.Snapshot"
+ ),
+ level = DeprecationLevel.ERROR
+)
+fun restore(frame: Frame): Unit = deprecated()
-private fun closeFrame(frame: Frame) {
- synchronized(sync) {
- openFrames = openFrames.clear(frame.id)
- }
- threadFrame.set(null)
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith("readable"),
+ level = DeprecationLevel.ERROR
+)
+fun <T : Record> T.readable(framed: Framed): T = error("deprecated")
-private fun valid(currentFrame: Int, candidateFrame: Int, invalid: FrameIdSet): Boolean {
- // A candidate frame is valid if the it is less than or equal to the current frame
- // and it wasn't specifically marked as invalid when the frame started.
- //
- // All frames open at the start of the current frame are considered invalid for a frame (they
- // have not been committed and therefore are considered invalid).
- //
- // All frames born after the current frame are considered invalid since they occur after the
- // current frame was open.
- //
- // INVALID_FRAME is reserved as an invalid frame.
- return candidateFrame != INVALID_FRAME && candidateFrame <= currentFrame &&
- !invalid.get(candidateFrame)
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ level = DeprecationLevel.ERROR
+)
+fun _readable(r: Record, framed: Framed): Record = error("deprecated")
-// Determine if the given data is valid for the frame.
-private fun valid(data: Record, frame: Int, invalid: FrameIdSet): Boolean {
- return valid(frame, data.frameId, invalid)
-}
+@Deprecated("Frames has been replaced by snapshots.",
+ level = DeprecationLevel.ERROR
+)
+fun _writable(r: Record, framed: Framed): Record = error("deprecated")
-private fun <T : Record> readable(r: T, id: Int, invalid: FrameIdSet): T {
- // The readable record is the valid record with the highest frameId
- var current: Record? = r
- var candidate: Record? = null
- while (current != null) {
- if (valid(current, id, invalid)) {
- candidate = if (candidate == null) current
- else if (candidate.frameId < current.frameId) current else candidate
- }
- current = current.next
- }
- if (candidate != null) {
- @Suppress("UNCHECKED_CAST")
- return candidate as T
- }
- throw IllegalStateException("Could not find a current")
-}
+@Deprecated("Frames has been replaced by snapshots.",
+ level = DeprecationLevel.ERROR
+)
+fun _created(framed: Framed): Unit = error("deprecated")
-fun <T : Record> T.readable(framed: Framed): T {
- val frame = currentFrame()
- // invoke the observer associated with the current frame.
- frame.readObserver?.invoke(framed)
- // invoke the thread local observers.
- val observers = frame.threadReadObservers
- if (observers.isNotEmpty()) {
- for (observer in observers) {
- observer(framed)
- }
- }
- return readable(this, frame.id, frame.invalid)
-}
-
-fun _readable(r: Record, framed: Framed): Record = r.readable(framed)
-fun _writable(r: Record, framed: Framed): Record = r.writable(framed)
-fun _created(framed: Framed) = threadFrame.get()?.writeObserver?.let { it(framed, true) }
-
-fun <T : Record> T.writable(framed: Framed): T {
- return this.writable(framed, currentFrame())
-}
-
-/**
- * A record can be reused if no other frame will see it as valid. This is always true for a record
- * created in an aborted frame. It is also true if the record is valid in the previous frame and is
- * obscured by another record also valid in the previous frame record.
- */
-private fun used(framed: Framed, id: Int, invalid: FrameIdSet): Record? {
- var current: Record? = framed.firstFrameRecord
- var validRecord: Record? = null
- while (current != null) {
- val currentId = current.frameId
- if (currentId == INVALID_FRAME) {
- // Any frames that were marked invalid by an aborted frame can be used immediately.
- return current
- }
- if (valid(current, id - 1, invalid)) {
- if (validRecord == null) {
- validRecord = current
- } else {
- // If we have two valid records one must obscure the other. Return the
- // record with the lowest id
- return if (current.frameId < validRecord.frameId) current else validRecord
- }
- }
- current = current.next
- }
- return null
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith("writable"),
+ level = DeprecationLevel.ERROR
+)
+fun <T : Record> T.writable(framed: Framed): T = deprecated()
/**
* Return a writable frame record for the given record. It is assumed that this is called for the
@@ -505,54 +356,29 @@
* record is applied to it. Once the values are correct the record is made live by giving it the
* current frame id.
*/
-fun <T : Record> T.writable(framed: Framed, frame: Frame): T {
- if (frame.readonly) throw IllegalStateException("In a readonly frame")
- val id = frame.id
- val readData = readable<T>(this, id, frame.invalid)
-
- // If the readable data was born in this frame, it is writable.
- if (readData.frameId == frame.id) return readData
-
- // The first write to an framed in frame
- frame.writeObserver?.let { it(framed, false) }
-
- // Otherwise, make a copy of the readable data and mark it as born in this frame, making it
- // writable.
- val newData = synchronized(framed) {
- // Calling used() on a framed object might return the same record for each thread calling
- // used() therefore selecting the record to reuse should be guarded.
-
- // Note: setting the frameId to Int.MAX_VALUE will make it invalid for all frames. This
- // means we can release the lock on the object as used() will no longer select it. Using id
- // could also be used but it puts the object into a state where the reused value appears to
- // be the current valid value for the the frame. This is not an issue if the frame is only
- // being read from a single thread but using Int.MAX_VALUE allows multiple readers, single
- // writer, of a frame. Note that threads reading a mutating frame should not cache the
- // result of readable() as the mutating thread calls to writable() can change the result of
- // readable().
- @Suppress("UNCHECKED_CAST")
- (used(framed, id, frame.invalid) as T?)?.apply { frameId = Int.MAX_VALUE }
- ?: readData.create().apply {
- frameId = Int.MAX_VALUE; framed.prependFrameRecord(this as T)
- } as T
- }
- newData.assign(readData)
- newData.frameId = id
-
- frame.modified?.add(framed)
-
- return newData
-}
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith("writable"),
+ level = DeprecationLevel.ERROR
+)
+fun <T : Record> T.writable(framed: Framed, frame: Frame): T = deprecated()
/**
* Returns the current record without notifying any [Frame.readObserver]s.
*/
@PublishedApi
-internal fun <T : Record> current(r: T, frame: Frame) = readable(r, frame.id, frame.invalid)
+internal fun <T : Record> current(r: T, frame: Frame): T = deprecated()
/**
* Provides a [block] with the current record, without notifying any [Frame.readObserver]s.
*
* @see [Record.readable]
*/
-inline fun <T : Record> T.withCurrent(block: (r: T) -> Unit) = block(current(this, currentFrame()))
+@Deprecated(
+ "Frames has been replaced by snapshots.",
+ ReplaceWith("withCurrent"),
+ level = DeprecationLevel.ERROR
+)
+inline fun <T : Record> T.withCurrent(block: (r: T) -> Unit): T = error("deprecated")
+
+internal fun deprecated(): Nothing = error("deprecated")
\ No newline at end of file
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/ListUtils.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/ListUtils.kt
new file mode 100644
index 0000000..70e07a0
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/ListUtils.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 androidx.compose.snapshots
+
+internal inline fun <T> List<T>.fastForEach(block: (element: T) -> Unit) {
+ for (index in indices) {
+ block(this[index])
+ }
+}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt
new file mode 100644
index 0000000..31dcdd1
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt
@@ -0,0 +1,1662 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(InternalComposeApi::class, ExperimentalComposeApi::class)
+
+package androidx.compose.snapshots
+
+import androidx.compose.Composable
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.InternalComposeApi
+import androidx.compose.ThreadLocal
+
+/**
+ * Take a snapshot of the current value of all state objects. The values are preserved until
+ * [Snapshot.dispose] is called on the result.
+ *
+ * The [readObserver] parameter can be used to track when all state objects are read when in
+ * [Snapshot.enter]. A [SnapshotApplyObserver] can be registered using
+ * [Snapshot.registerApplyObserver] to observe modification of state objects.
+ *
+ * An active snapshot (after it is created but before [Snapshot.dispose] is called) requires
+ * resources to track the values in the snapshot. Once a snapshot is no longer needed it should
+ * disposed by calling [Snapshot.dispose].
+ *
+ * Leaving a snapshot active could cause hard to diagnose memory leaks values as are maintained
+ * by state objects for these unneeded snapshots. Take care to always call [Snapshot.dispose] on all
+ * snapshots when they are no longer needed.
+ *
+ * Composition uses both of these to implicitly subscribe to changes to state object and
+ * automatically update the composition when state objects read during composition change.
+ *
+ * A nested snapshot can be taken of a snapshot which is an independent read-only copy of the
+ * snapshot and can be disposed independently. This is used by [takeSnapshot] when in a read-only
+ * snapshot for API consistency allowing the result of [takeSnapshot] to be disposed leaving the
+ * parent snapshot active.
+ *
+ * @param readObserver called when any state object is read in the lambda passed to
+ * [Snapshot.enter] or in the [Snapshot.enter] of any nested snapshot.
+ *
+ * @see Snapshot
+ * @see Snapshot.registerApplyObserver
+ * @see SnapshotApplyObserver
+ */
+fun takeSnapshot(
+ readObserver: SnapshotReadObserver? = null
+): Snapshot = currentSnapshot().takeNestedSnapshot(readObserver)
+
+/**
+ * Take a snapshot of the current value of all state objects that also allows the state to be
+ * changed and later atomically applied when [MutableSnapshot.apply] is called. The values are
+ * preserved until [Snapshot.dispose] is called on the result. The global state will either see
+ * all the changes made as one atomic change, when [MutableSnapshot.apply] is called, or none of
+ * the changes if the mutable state object is disposed before being applied.
+ *
+ * The values in a snapshot can be modified by calling [Snapshot.enter] and then, in its lambda,
+ * modify any state object. The new values of the state objects will only become visible to the
+ * global state when [MutableSnapshot.apply] is called.
+ *
+ * An active snapshot (after it is created but before [Snapshot.dispose] is called) requires
+ * resources to track the values in the snapshot. Once a snapshot is no longer needed it should
+ * disposed by calling [Snapshot.dispose].
+ *
+ * Leaving a snapshot active could cause hard to diagnose memory leaks as values are maintained
+ * by state objects for these unneeded snapshots. Take care to always call [Snapshot.dispose] on all
+ * snapshots when they are no longer needed.
+ *
+ * A nested snapshot can be taken by calling [Snapshot.takeNestedSnapshot], for a read-only
+ * snapshot, or [MutableSnapshot.takeNestedMutableSnapshot] for a snapshot that can be changed.
+ * Nested mutable snapshots are applied to the this, the parent snapshot, when their
+ * [MutableSnapshot.apply] is called. Their applied changes will be visible to in this snapshot
+ * but will not be visible other snapshots (including other nested snapshots) or the global state
+ * until this snapshot is applied by calling [MutableSnapshot.apply].
+ *
+ * Once [MutableSnapshot.apply] is called on this, the parent snapshot, all calls to
+ * [MutableSnapshot.apply] on an active nested snapshot will fail.
+ *
+ * Changes to a mutable snapshot are isolated, using snapshot isolation, from all other snapshots.
+ * Their changes are only visible as global state or to new snapshots once [MutableSnapshot.apply]
+ * is called.
+ *
+ * Applying a snapshot can fail if currently visible changes to the state object conflicts with a
+ * change made in the snapshot.
+ *
+ * When in a mutable snapshot, [takeMutableSnapshot] creates a nested snapshot of the current mutable
+ * snapshot. If the current snapshot is read-only, an exception is thrown. The current snapshot
+ * is the result of calling [currentSnapshot] which is updated by calling [Snapshot.enter] which
+ * makes the [Snapshot] the current snapshot while in its lambda.
+ *
+ * Composition uses mutable snapshots to allow changes made in a [Composable] functions to be
+ * temporarily isolated from the global state and is later applied to the global state when the
+ * composition is applied. If [MutableSnapshot.apply] fails applying this snapshot, the snapshot
+ * and the changes calculated during composition are disposed and a new composition is scheduled
+ * to be calculated again.
+ *
+ * @param readObserver called when any state object is read in the lambda passed to
+ * [Snapshot.enter] or in the [Snapshot.enter] of any nested snapshots.
+ *
+ * Composition, layout and draw use [readObserver] to implicitly subscribe to changes to state
+ * objects to know when to update.
+ *
+ * @param writeObserver called when a state object is created or just before it is written to the
+ * first time in the snapshot or a nested mutable snapshot. This might be called several times
+ * for the same object if nested mutable snapshots are created.
+ *
+ * Composition uses [writeObserver] to track when a state object is modified during composition
+ * in order to invalidate the reads that have not yet occurred. This allows a single pass of
+ * composition for state objects that are written to before they are read (such as modifying the
+ * value of a dynamic ambient provider).
+ *
+ * @see takeSnapshot
+ * @see Snapshot
+ * @see MutableSnapshot
+ */
+@ExperimentalComposeApi
+fun takeMutableSnapshot(
+ readObserver: SnapshotReadObserver? = null,
+ writeObserver: SnapshotWriteObserver? = null
+): MutableSnapshot =
+ (currentSnapshot() as? MutableSnapshot)?.takeNestedMutableSnapshot(readObserver, writeObserver)
+ ?: error("Cannot create a mutable snapshot of an read-only snapshot")
+
+/**
+ * A snapshot of the values return by mutable states and other state objects. All state object
+ * will have the same value in the snapshot as they had when the snapshot was created unless they
+ * are explicitly changed in the snapshot.
+ *
+ * To enter a snapshot call [enter]. The snapshot is the current snapshot as returned by
+ * [currentSnapshot] until the control returns from the lambda (or until a nested [enter] is
+ * called). All state objects will return the values associated with this snapshot, locally in the
+ * thread, until [enter] returns. All other threads are unaffected.
+ *
+ * Snapshots can be nested by calling [takeNestedSnapshot].
+ *
+ * @see takeSnapshot
+ * @see takeMutableSnapshot
+ * @see androidx.compose.mutableStateOf
+ * @see androidx.compose.mutableStateListOf
+ * @see androidx.compose.mutableStateMapOf
+ */
+@ExperimentalComposeApi
+sealed class Snapshot(
+ id: Int,
+ invalid: SnapshotIdSet
+) {
+ /**
+ * The snapshot id of the snapshot. This is a unique number from a monotonically increasing
+ * value for each snapshot taken.
+ */
+ open var id: Int = id
+ internal set
+
+ /**
+ * The root snapshot for this snapshot. For non-nested snapshots this is always `this`. For
+ * nested snapshot it is the parent's [root].
+ */
+ abstract val root: Snapshot
+
+ /**
+ * True if any change to a state object in this snapshot will throw.
+ */
+ abstract val readonly: Boolean
+
+ /**
+ * Dispose the snapshot. Neglecting to dispose a snapshot will result in difficult to
+ * diagnose memory leaks as it indirectly causes all state objects to maintain its value for
+ * the un-disposed snapshot.
+ */
+ open fun dispose() {
+ disposed = true
+ }
+
+ /**
+ * Take a snapshot of the state values in this snapshot. The resulting [Snapshot] is read-only.
+ * All nested snapshots need to be disposed by calling [dispose] before resources associated
+ * with this snapshot can be collected. Nested snapshots are still valid after the parent has
+ * been disposed.
+ */
+ abstract fun takeNestedSnapshot(readObserver: SnapshotReadObserver? = null): Snapshot
+
+ /**
+ * Whether there are any pending changes in this snapshot. These changes are not visible
+ * until the snapshot is applied.
+ */
+ abstract fun hasPendingChanges(): Boolean
+
+ /**
+ * Enter the snapshot. In [block] all state objects have the value associated with this
+ * snapshot. The value of [currentSnapshot] will be this snapshot until this [block] returns
+ * or a nested call to [enter] is called. When [block] returns, the previous current snapshot
+ * is restored if there was one.
+ *
+ * All changes to state object inside [block] are isolated to this snapshot and are not
+ * visible to other snapshot or as global state. If this is a [readonly] snapshot, any
+ * changes to state objects will throw an [IllegalStateException].
+ *
+ * For a [MutableSnapshot], changes made to a snapshot inside [block] can be applied
+ * atomically to the global state (or to its parent snapshot if it is a nested snapshot) by
+ * calling [MutableSnapshot.apply].
+ *
+ * @see androidx.compose.mutableStateOf
+ * @see androidx.compose.mutableStateListOf
+ * @see androidx.compose.mutableStateMapOf
+ */
+ inline fun <T> enter(block: () -> T): T {
+ val previous = makeCurrent()
+ try {
+ return block()
+ } finally {
+ restoreCurrent(previous)
+ }
+ }
+
+ @PublishedApi
+ internal open fun makeCurrent(): Snapshot? {
+ val previous = threadSnapshot.get()
+ threadSnapshot.set(this)
+ return previous
+ }
+
+ @PublishedApi
+ internal open fun restoreCurrent(snapshot: Snapshot?) {
+ threadSnapshot.set(snapshot)
+ }
+
+ internal var disposed = false
+
+ /*
+ * The read observer for the snapshot if there is one.
+ */
+ internal abstract val readObserver: SnapshotReadObserver?
+
+ /**
+ * The write observer for the snapshot if there is one.
+ */
+ internal abstract val writeObserver: SnapshotWriteObserver?
+
+ /**
+ * A set of all the snapshots that should be treated as invalid.
+ */
+ internal open var invalid: SnapshotIdSet = invalid
+ internal set
+
+ /**
+ * Called when a nested snapshot of this snapshot is activated
+ */
+ internal abstract fun nestedActivated(snapshot: Snapshot)
+
+ /**
+ * Called when a nested snapshot of this snapshot is deactivated
+ */
+ internal abstract fun nestedDeactivated(snapshot: Snapshot)
+
+ /**
+ * Record that state was modified in the snapshot.
+ */
+ internal abstract fun recordModified(state: StateObject)
+
+ /**
+ * The set of state objects that have been modified in this snapshot.
+ */
+ internal abstract val modified: MutableSet<StateObject>?
+
+ /**
+ * Notify the snapshot that all objects created in this snapshot to this point should be
+ * considered initialized. If any state object is are modified passed this point it will
+ * appear as modified in the snapshot and any applicable [SnapshotWriteObserver] will be
+ * called for the object and the object will be part of the a set of mutated objects sent to
+ * any applicable [SnapshotApplyObserver].
+ *
+ * Unless [notifyObjectsInitialized] is called, state objects created in a snapshot are not
+ * considered modified by the snapshot even if they are modified after construction.
+ */
+ internal abstract fun notifyObjectsInitialized()
+
+ /**
+ * Closes the snapshot by removing the snapshot id (an any previous id's) from the list of
+ * open snapshots.
+ */
+ internal open fun close() {
+ sync {
+ openSnapshots = openSnapshots.clear(id)
+ }
+ }
+
+ internal fun validateNotDisposed() {
+ require(!disposed) { "Cannot use a disposed snapshot" }
+ }
+
+ companion object {
+ /**
+ * Return the thread's active snapshot. If no thread snapshot is active then the current
+ * global snapshot is used.
+ */
+ val current get() = currentSnapshot()
+
+ /**
+ * Escape the current snapshot, if there is one. All state objects will have the value
+ * associated with the global while the [block] lambda is executing.
+ *
+ * @return the result of [block]
+ */
+ inline fun <T> global(block: () -> T): T {
+ val previous = removeCurrent()
+ return block().also { restoreCurrent(previous) }
+ }
+
+ /**
+ * Observe reads and or write of state objects in the current thread.
+ *
+ * This only affects the current snapshot (if any) and any new snapshots create from
+ * [takeSnapshot] and [takeMutableSnapshot]. It will not affect any snapshots previous
+ * created even if [Snapshot.enter] is called in [block].
+ *
+ * @param readObserver called when any state object is read.
+ * @param writeObserver called when a state object is created or just before it is
+ * written to the first time in the snapshot or a nested mutable snapshot. This might be
+ * called several times for the same object if nested mutable snapshots are created.
+ */
+ fun <T> observe(
+ readObserver: SnapshotReadObserver? = null,
+ writeObserver: SnapshotWriteObserver? = null,
+ block: () -> T
+ ): T {
+ if (readObserver != null || writeObserver != null) {
+ val currentSnapshot = threadSnapshot.get()
+ val snapshot =
+ if (currentSnapshot == null || currentSnapshot is MutableSnapshot)
+ TransparentObserverMutableSnapshot(
+ currentSnapshot as? MutableSnapshot,
+ readObserver,
+ writeObserver
+ )
+ else if (readObserver == null) return block()
+ else currentSnapshot.takeNestedSnapshot(readObserver)
+ try {
+ return snapshot.enter(block)
+ } finally {
+ snapshot.dispose()
+ }
+ } else return block()
+ }
+
+ /**
+ * Register an apply listener that is called back when snapshots are applied to the
+ * global state.
+ *
+ * @return a lambda that, when called, unregisters [observer].
+ */
+ fun registerApplyObserver(observer: SnapshotApplyObserver): () -> Unit {
+ // Ensure observer does not see changes before this call.
+ advanceGlobalSnapshot(emptyLambda)
+
+ sync {
+ applyObservers.add(observer)
+ }
+ return {
+ sync {
+ applyObservers.remove(observer)
+ }
+ }
+ }
+
+ /**
+ * Register an observer of the first write to the global state of a global state object
+ * since the last call to [sendApplyNotifications].
+ *
+ * Composition uses this to schedule a new composition whenever a state object that
+ * was read in composition is modified.
+ *
+ * State objects can be sent to the apply observer that have not been sent to global write
+ * observers. This happens for state objects inside [MutableSnapshot] that is later
+ * applied by calling [MutableSnapshot.apply].
+ *
+ * This should only be used to determine if a call to [sendApplyNotifications] should be
+ * scheduled to be called.
+ *
+ * @return a lambda that, when called, unregisters [observer].
+ */
+ @ExperimentalComposeApi
+ fun registerGlobalWriteObserver(observer: SnapshotWriteObserver): () -> Unit {
+ sync {
+ globalWriteObservers.add(observer)
+ }
+ advanceGlobalSnapshot()
+ return {
+ sync {
+ globalWriteObservers.remove(observer)
+ }
+ advanceGlobalSnapshot()
+ }
+ }
+
+ /**
+ * Notify the snapshot that all objects created in this snapshot to this point should be
+ * considered initialized. If any state object is are modified passed this point it will
+ * appear as modified in the snapshot and any applicable [SnapshotWriteObserver] will be
+ * called for the object and the object will be part of the a set of mutated objects sent to
+ * any applicable [SnapshotApplyObserver].
+ *
+ * Unless [notifyObjectsInitialized] is called, state objects created in a snapshot are not
+ * considered modified by the snapshot even if they are modified after construction.
+ *
+ * Compose uses this between phases of composition to allow observing changes to state
+ * objects create in a previous phase.
+ */
+ @ExperimentalComposeApi
+ fun notifyObjectsInitialized() = currentSnapshot().notifyObjectsInitialized()
+
+ /**
+ * Send any pending apply notifications for state objects changed outside a snapshot.
+ *
+ * Apply notifications for state objects modified outside snapshot are deferred until method
+ * is called. This method is implicitly called whenever a non-nested [MutableSnapshot]
+ * is applied making its changes visible to all new, non-nested snapshots.
+ *
+ * Composition schedules this to be called after changes to state objects are
+ * detected an observer registered with [registerGlobalWriteObserver].
+ */
+ @ExperimentalComposeApi
+ fun sendApplyNotifications() {
+ val changes = sync {
+ currentGlobalSnapshot.modified?.isNotEmpty() == true
+ }
+ if (changes)
+ advanceGlobalSnapshot()
+ }
+
+ @InternalComposeApi
+ fun openSnapshotCount() = openSnapshots.toList().size
+
+ @PublishedApi
+ internal fun removeCurrent(): Snapshot? {
+ val previous = threadSnapshot.get()
+ if (previous != null) threadSnapshot.set(null)
+ return previous
+ }
+
+ @PublishedApi
+ internal fun restoreCurrent(previous: Snapshot?) {
+ if (previous != null) threadSnapshot.set(previous)
+ }
+ }
+}
+
+/**
+ * A snapshot of the values return by mutable states and other state objects. All state object
+ * will have the same value in the snapshot as they had when the snapshot was created unless they
+ * are explicitly changed in the snapshot.
+
+ * To enter a snapshot call [enter]. The snapshot is the current snapshot as returned by
+ * [currentSnapshot] until the control returns from the lambda (or until a nested [enter] is
+ * called. All state objects will return the values associated with this snapshot, locally in the
+ * thread, until [enter] returns. All other threads are unaffected.
+ *
+ * All changes made in a [MutableSnapshot] are snapshot isolated from all other snapshots and
+ * their changes can only be seen globally, or by new shots, after [MutableSnapshot.apply] as been
+ * called.
+ *
+ * Snapshots can be nested by calling [takeNestedSnapshot] or
+ * [MutableSnapshot.takeNestedMutableSnapshot].
+ *
+ * @see takeMutableSnapshot
+ * @see androidx.compose.mutableStateOf
+ * @see androidx.compose.mutableStateListOf
+ * @see androidx.compose.mutableStateMapOf
+ */
+@ExperimentalComposeApi
+open class MutableSnapshot internal constructor(
+ id: Int,
+ invalid: SnapshotIdSet,
+ override val readObserver: SnapshotReadObserver?,
+ override val writeObserver: SnapshotWriteObserver?
+) : Snapshot(id, invalid) {
+ /**
+ * Whether there are any pending changes in this snapshot. These changes are not visible
+ * until the snapshot is applied.
+ */
+ override fun hasPendingChanges(): Boolean = modified?.isNotEmpty() == true
+
+ /**
+ * Take a mutable snapshot of the state values in this snapshot. Entering this snapshot by
+ * calling [enter] allows state objects to be modified that are not visible to the this, the
+ * parent snapshot, until the [apply] is called.
+ *
+ * Applying a nested snapshot, by calling [apply], applies its change to, this, the parent
+ * snapshot. For a change to be visible globally, all the parent snapshots need to be applied
+ * until the root snapshot is applied to the global state.
+ *
+ * All nested snapshots need to be disposed by calling [dispose] before resources associated
+ * with this snapshot can be collected. Nested active snapshots are still valid after the parent
+ * has been disposed but calling [apply] will fail.
+ */
+ open fun takeNestedMutableSnapshot(
+ readObserver: SnapshotReadObserver? = null,
+ writeObserver: SnapshotWriteObserver? = null
+ ): MutableSnapshot {
+ validateNotDisposed()
+ validateNotApplied()
+ return advance {
+ sync {
+ val newId = nextSnapshotId++
+ openSnapshots = openSnapshots.set(newId)
+ val invalid = invalid
+ this.invalid = invalid.set(newId)
+ NestedMutableSnapshot(
+ newId,
+ invalid,
+ mergedReadObserver(readObserver, this.readObserver),
+ mergedWriteObserver(writeObserver, this.writeObserver),
+ this
+ )
+ }
+ }
+ }
+
+ /**
+ * Apply the changes made to state objects in this snapshot to the global state, or to the
+ * parent snapshot if this is a nested mutable snapshot.
+ *
+ * Once this method returns all changes made to this snapshot are atomically visible as the
+ * global state of the state object or to the parent snapshot.
+ *
+ * While a snapshot is active (after it is created but before [apply] or [dispose] is called)
+ * requires resources to track the values in the snapshot. Once a snapshot is no longer
+ * needed it should be either applied by calling [apply] or disposed by calling [dispose]. A
+ * snapshot that has been had is [apply] called can also have [dispose] called on it. However,
+ * calling [apply] after calling [dispose] will throw an exception.
+ *
+ * Leaving a snapshot active could cause hard to diagnose memory leaks values are maintained
+ * by state objects for unneeded snapshots. Take care to always call [dispose] on any snapshot.
+ */
+ open fun apply(): SnapshotApplyResult {
+ // NOTE: the this algorithm is currently does not guarantee serializable snapshots as it
+ // doesn't prevent crossing writes as described here https://arxiv.org/pdf/1412.2324.pdf
+
+ // Just removing the snapshot from the active snapshot set is enough to make it part of the
+ // next snapshot, however, this should only be done after first determining that there are no
+ // colliding writes are being applied.
+
+ // A write is considered colliding if any write occurred in a state object in a snapshot
+ // applied since the snapshot was taken.
+ val modified = modified
+ val optimisticMerges = if (modified != null) optimisticMerges(
+ currentGlobalSnapshot,
+ this,
+ openSnapshots.clear(currentGlobalSnapshot.id)
+ ) else null
+ val (observers, globalModified) = sync {
+ validateOpen(this)
+ if (modified == null || modified.size == 0) {
+ close()
+ val previousGlobalSnapshot = currentGlobalSnapshot
+ takeNewGlobalSnapshot(previousGlobalSnapshot, emptyLambda)
+ val globalModified = previousGlobalSnapshot.modified
+ if (globalModified != null && globalModified.isNotEmpty())
+ applyObservers.toList() to globalModified
+ else
+ emptyList<SnapshotApplyObserver>() to null
+ } else {
+ val previousGlobalSnapshot = currentGlobalSnapshot
+ val result = innerApply(
+ nextSnapshotId,
+ optimisticMerges,
+ openSnapshots.clear(previousGlobalSnapshot.id)
+ )
+ if (result != SnapshotApplyResult.Success) return result
+
+ // Close this snapshot
+ close()
+
+ // Take a new global snapshot that includes this one.
+ takeNewGlobalSnapshot(previousGlobalSnapshot, emptyLambda)
+ val globalModified = previousGlobalSnapshot.modified
+ this.modified = null
+ previousGlobalSnapshot.modified = null
+
+ applyObservers.toList() to globalModified
+ }
+ }
+
+ // Mark as applied
+ applied = true
+
+ // Notify any apply observers that changes applied were seen
+ if (globalModified != null && globalModified.isNotEmpty()) {
+ observers.fastForEach {
+ it(globalModified, this)
+ }
+ }
+
+ if (modified != null && modified.isNotEmpty()) {
+ observers.fastForEach {
+ it(modified, this)
+ }
+ }
+
+ return SnapshotApplyResult.Success
+ }
+
+ override val readonly: Boolean get() = false
+
+ override val root: Snapshot get() = this
+
+ override fun dispose() {
+ if (!disposed) {
+ super.dispose()
+ nestedDeactivated(this)
+ }
+ }
+
+ override fun takeNestedSnapshot(readObserver: SnapshotReadObserver?): Snapshot {
+ validateNotDisposed()
+ validateNotApplied()
+ return advance {
+ sync {
+ val readonlyId = nextSnapshotId++
+ openSnapshots = openSnapshots.set(readonlyId)
+ NestedReadonlySnapshot(
+ readonlyId,
+ invalid,
+ readObserver,
+ this
+ )
+ }
+ }
+ }
+
+ override fun nestedActivated(snapshot: Snapshot) { snapshots++ }
+
+ override fun nestedDeactivated(snapshot: Snapshot) {
+ require(snapshots > 0)
+ if (--snapshots == 0) {
+ if (!applied) {
+ abandon()
+ }
+ }
+ }
+
+ override fun notifyObjectsInitialized() {
+ advance()
+ }
+
+ override fun close() {
+ sync {
+ // Remove itself and previous ids from the open set.
+ openSnapshots = openSnapshots.clear(id).andNot(previousIds)
+ }
+ }
+
+ internal fun validateNotApplied() {
+ require(!applied) {
+ "Unsupported operation on a snapshot that has been applied"
+ }
+ }
+
+ /**
+ * Abandon the snapshot.
+ */
+ internal fun abandon() {
+ val modified = modified
+ if (modified != null) {
+ validateNotApplied()
+
+ // Mark all state records created in this snapshot as invalid. This allows the snapshot
+ // id to be forgotten as no state records will refer to it.
+ this.modified = null
+ val id = id
+ for (state in modified) {
+ var current: StateRecord? = state.firstStateRecord
+ while (current != null) {
+ if (current.snapshotId == id || current.snapshotId in previousIds) {
+ current.snapshotId = INVALID_SNAPSHOT
+ }
+ current = current.next
+ }
+ }
+ }
+
+ // The snapshot can now be closed.
+ close()
+ }
+
+ internal fun innerApply(
+ snapshotId: Int,
+ optimisticMerges: Map<StateRecord, StateRecord>?,
+ invalidSnapshots: SnapshotIdSet
+ ): SnapshotApplyResult {
+ // This must be called in a synchronized block
+
+ // If there are modifications we need to ensure none of the modifications have
+ // collisions.
+
+ // A record is guaranteed not collide if no other write was performed to the record
+ // by an applied snapshot since this snapshot was taken. No writes to a state object
+ // occurred if, ignoring this snapshot, the readable records for the snapshots are
+ // the same. If they are different then there is a potential collision and the state
+ // object is asked if it can resolve the collision. If it can the updated state record
+ // is for the apply.
+ var mergedRecords: MutableList<Pair<StateObject, StateRecord>>? = null
+ val start = this.invalid.set(id).or(this.previousIds)
+ val modified = modified!!
+ var statesToRemove: MutableList<StateObject>? = null
+ for (state in modified) {
+ val first = state.firstStateRecord
+ // If either current or previous cannot be calculated the object was created
+ // in a nested snapshot that was committed then changed.
+ val current = readable(first, snapshotId, invalidSnapshots) ?: continue
+ val previous = readable(first, id, start) ?: continue
+ if (current != previous) {
+ val applied = readable(first, id, this.invalid) ?: readError()
+ val merged = optimisticMerges?.get(current) ?: run {
+ state.mergeRecords(previous, current, applied)
+ }
+ when (merged) {
+ null -> return SnapshotApplyResult.Failure(this)
+ applied -> {
+ // Nothing to do the merge policy says that the current changes
+ // obscure the current value so ignore the conflict
+ }
+ current -> {
+ (mergedRecords ?: mutableListOf<Pair<StateObject, StateRecord>>().also {
+ mergedRecords = it
+ }).add(state to current.create())
+
+ // If we revert to current then the state is no longer modified.
+ (statesToRemove ?: mutableListOf<StateObject>().also {
+ statesToRemove = it
+ }).add(state)
+ }
+ else -> {
+ (mergedRecords ?: mutableListOf<Pair<StateObject, StateRecord>>().also {
+ mergedRecords = it
+ }).add(
+ if (merged != previous) state to merged
+ else state to previous.create()
+ )
+ }
+ }
+ }
+ }
+
+ mergedRecords?.let {
+ // Ensure we have a new snapshot id
+ advance()
+
+ // Update all the merged records to have the new id.
+ it.fastForEach { merged ->
+ val (state, stateRecord) = merged
+ stateRecord.snapshotId = id
+ sync {
+ stateRecord.next = state.firstStateRecord
+ state.prependStateRecord(stateRecord)
+ }
+ }
+ }
+
+ statesToRemove?.let {
+ // Remove from modified any state objects that have reverted to the parent value.
+ modified.removeAll(it)
+ }
+
+ return SnapshotApplyResult.Success
+ }
+
+ internal inline fun <T> advance(block: () -> T): T {
+ recordPrevious(id)
+ return block().also {
+ sync {
+ id = nextSnapshotId++
+ openSnapshots = openSnapshots.set(id)
+ }
+ }
+ }
+
+ internal fun advance(): Unit = advance { }
+
+ internal fun recordPrevious(id: Int) {
+ sync {
+ previousIds = previousIds.set(id)
+ }
+ }
+
+ internal fun recordPreviousList(snapshots: SnapshotIdSet) {
+ sync {
+ previousIds = previousIds.or(snapshots)
+ }
+ }
+
+ override fun recordModified(state: StateObject) {
+ (modified ?: HashSet<StateObject>().also { modified = it }).add(state)
+ }
+
+ override var modified: MutableSet<StateObject>? = null
+
+ /**
+ * A set of the id's previously associated with this snapshot. When this snapshot closes
+ * then these ids must be removed from the global as well.
+ */
+ internal var previousIds: SnapshotIdSet = SnapshotIdSet.EMPTY
+
+ /**
+ * The number of pending nested snapshots of this snapshot. To simplifythe code, this
+ * snapshot it, itself, counted as its own nested snapshot.
+ */
+ private var snapshots = 1
+
+ /**
+ * Tracks whether the snapshot has been applied.
+ */
+ internal var applied = false
+}
+
+/**
+ * The result of a applying a mutable snapshot. [Success] indicates that the snapshot was
+ * successfully applied and is not visible as the global state of the state object (or visible
+ * in the parent snapshot for a nested snapshot). [Failure] indicates one or more state objects
+ * were modified by both this snapshot and in the global (or parent) snapshot.
+ */
+sealed class SnapshotApplyResult {
+ /**
+ * Check the result of an apply. If the result is [Success] then this does does nothing. If
+ * the result is [Failure] then a [SnapshotApplyConflictException] exception is thrown. Once
+ * [check] as been called the snapshot is disposed.
+ */
+ abstract fun check()
+
+ /**
+ * True if the result is [Success].
+ */
+ abstract val succeeded: Boolean
+
+ object Success : SnapshotApplyResult() {
+ /**
+ * Check the result of a snapshot apply. Calling [check] on a [Success] result is a noop.
+ */
+ override fun check() { }
+
+ override val succeeded: Boolean get() = true
+ }
+
+ class Failure(val snapshot: Snapshot) : SnapshotApplyResult() {
+ /**
+ * Check the result of a snapshot apply. Calling [check] on a [Failure] result throws a
+ * [SnapshotApplyConflictException] exception.
+ */
+ override fun check() {
+ snapshot.dispose()
+ throw SnapshotApplyConflictException(snapshot)
+ }
+
+ override val succeeded: Boolean get() = false
+ }
+}
+
+/**
+ * Callback type for observing reads of state objects in a snapshot.
+ *
+ * @see takeSnapshot
+ * @see takeMutableSnapshot
+ */
+typealias SnapshotReadObserver = (state: Any) -> Unit
+
+/**
+ * Callback type for observing writes to state objects in a snapshot.
+ *
+ * @see Snapshot.registerGlobalWriteObserver
+ */
+typealias SnapshotWriteObserver = (state: Any) -> Unit
+
+/**
+ * Callback type for observing when a non-nested mutable snapshot is applied by calling
+ * [MutableSnapshot.apply], modifying the visible global state of state objects. Changes to a
+ * state object outside of a snapshot are also sent to the snapshot apply observer whenever
+ * [Snapshot.sendApplyNotifications] is called.
+ *
+ * The committed parameter is a collection of state objects modified in the snapshot.
+ * The snapshot parameter is the snapshot that was applied.
+ *
+ * @see takeMutableSnapshot
+ * @see MutableSnapshot.apply
+ * @see Snapshot
+ * @see Snapshot.registerApplyObserver
+ * @see Snapshot.sendApplyNotifications
+ */
+typealias SnapshotApplyObserver = (changed: Set<Any>, snapshot: Snapshot) -> Unit
+
+/**
+ * Return the thread's active snapshot. If no thread snapshot is active then the current global
+ * snapshot is used.
+ */
+internal fun currentSnapshot(): Snapshot =
+ threadSnapshot.get() ?: sync { currentGlobalSnapshot }
+
+/**
+ * An exception that is thrown when [SnapshotApplyResult.check] is called on a result of a
+ * [MutableSnapshot.apply] that fails to apply.
+ */
+@ExperimentalComposeApi
+class SnapshotApplyConflictException(
+ @Suppress("unused") val snapshot: Snapshot
+) : Exception()
+
+/**
+ * Snapshot local value of a state object.
+ */
+@ExperimentalComposeApi
+abstract class StateRecord {
+ /**
+ * The snapshot id of the snapshot in which the record was created.
+ */
+ internal var snapshotId: Int = currentSnapshot().id
+
+ /**
+ * Reference of the next state record. State records are stored in a linked list.
+ *
+ * Changes to [next] must preserve all existing records to all threads even during
+ * intermediately changes. For example, it is safe to add the beginning or end of the list
+ * but adding to the middle requires care. First the new record must have its [next] updated
+ * then the [next] of its new predecessor can then be set to point to it. This implies that
+ * records that are already in the list cannot be moved in the list as this the change must
+ * be atomic to all threads that cannot happen without a lock which this list cannot afford.
+ *
+ * It is unsafe to remove a record as it might be in the process of being reused (see [used]).
+ * If a record is removed care must be taken to ensure that it is not being claimed by some
+ * other thread. This would require changes to [used].
+ */
+ internal var next: StateRecord? = null
+
+ /**
+ * Copy the value into this state record from another for the same state object.
+ */
+ abstract fun assign(value: StateRecord)
+
+ /**
+ * Create a new state record for the same state object.
+ */
+ abstract fun create(): StateRecord
+}
+
+/**
+ * Interface implemented by all snapshot aware state objects. Used by this module to maintain the
+ * state records of a state object.
+ */
+@ExperimentalComposeApi
+interface StateObject {
+ /**
+ * The first state record in a linked list of state records.
+ */
+ val firstStateRecord: StateRecord
+
+ /**
+ * Add a new state record to the beginning of a list. After this call [firstStateRecord] should
+ * be [value].
+ */
+ fun prependStateRecord(value: StateRecord)
+
+ /**
+ * Produce a merged state based on the conflicting state changes.
+ *
+ * This method must not modify any of the records received and should treat the state records
+ * as immutable, even the [applied] record.
+ *
+ * @param previous the state record that was used to create the [applied] record and is a state
+ * that also (though indirectly) produced the [current] record.
+ *
+ * @param current the state record of the parent snapshot or global state.
+ *
+ * @param applied the state record that is being applied of the parent snapshot or global
+ * state.
+ *
+ * @return the modified state or `null` if the values cannot be merged. If the states cannot
+ * be merged the current apply will fail. Any of the parameters can be returned as a result.
+ * If it is not one of the parameter values then it *must* be a new value that is created by
+ * calling [StateRecord.create] on one of the records passed and then can be modified
+ * to have the merged value before being returned. If a new record is returned
+ * [MutableSnapshot.apply] will update the internal snapshot id and call
+ * [prependStateRecord] if the record is used.
+ */
+ fun mergeRecords(
+ previous: StateRecord,
+ current: StateRecord,
+ applied: StateRecord
+ ): StateRecord? = null
+}
+
+/**
+ * A snapshot whose state objects cannot be modified. If a state object is modified when in a
+ * read-only snapshot a [IllegalStateException] is thrown.
+ */
+internal class ReadonlySnapshot internal constructor(
+ id: Int,
+ invalid: SnapshotIdSet,
+ override val readObserver: SnapshotReadObserver?
+) : Snapshot(id, invalid) {
+ /**
+ * The number of nested snapshots that are active. To simplify the code, this snapshot counts
+ * itself as a nested snapshot.
+ */
+ private var snapshots = 1
+ override val readonly: Boolean get() = true
+ override val root: Snapshot get() = this
+ override fun hasPendingChanges(): Boolean = false
+ override val writeObserver: SnapshotWriteObserver? get() = null
+
+ override var modified: HashSet<StateObject>?
+ get() = null
+ @Suppress("UNUSED_PARAMETER")
+ set(value) = unsupported()
+
+ override fun takeNestedSnapshot(readObserver: SnapshotReadObserver?): Snapshot {
+ validateOpen(this)
+ return NestedReadonlySnapshot(id, invalid, readObserver, this)
+ }
+
+ override fun notifyObjectsInitialized() {
+ // Nothing to do for read-only snapshots
+ }
+
+ override fun dispose() {
+ if (!disposed) {
+ nestedDeactivated(this)
+ super.dispose()
+ }
+ }
+
+ override fun nestedActivated(snapshot: Snapshot) { snapshots++ }
+
+ override fun nestedDeactivated(snapshot: Snapshot) {
+ if (--snapshots == 0) {
+ // A read-only snapshot can be just be closed as it has no modifications.
+ close()
+ }
+ }
+
+ override fun recordModified(state: StateObject) {
+ error("Cannot modify a state object in a read-only snapshot")
+ }
+}
+
+internal class NestedReadonlySnapshot(
+ id: Int,
+ invalid: SnapshotIdSet,
+ readObserver: SnapshotReadObserver?,
+ val parent: Snapshot
+) : Snapshot(id, invalid) {
+ init { parent.nestedActivated(this) }
+ override val readonly get() = true
+ override val root: Snapshot get() = parent.root
+ @OptIn(ExperimentalComposeApi::class)
+ override fun takeNestedSnapshot(readObserver: SnapshotReadObserver?) =
+ parent.takeNestedSnapshot(readObserver)
+ override fun notifyObjectsInitialized() {
+ // Nothing to do for read-only snapshots
+ }
+ override fun hasPendingChanges(): Boolean = false
+ override val readObserver: SnapshotReadObserver? =
+ // Merge the read observers if necessary
+ readObserver?.let {
+ parent.readObserver?.let {
+ { state: Any ->
+ readObserver(state)
+ it(state)
+ }
+ } ?: readObserver
+ } ?: parent.readObserver
+
+ override fun dispose() {
+ if (!disposed) {
+ if (id != parent.id) {
+ close()
+ }
+ parent.nestedDeactivated(this)
+ super.dispose()
+ }
+ }
+
+ override val modified: HashSet<StateObject>? get() = null
+ override val writeObserver: SnapshotWriteObserver? get() = null
+ @OptIn(ExperimentalComposeApi::class)
+ override fun recordModified(state: StateObject) = parent.recordModified(state)
+
+ override fun nestedDeactivated(snapshot: Snapshot) = unsupported()
+ override fun nestedActivated(snapshot: Snapshot) = unsupported()
+}
+
+private val emptyLambda: (invalid: SnapshotIdSet) -> Unit = { }
+
+/**
+ * A snapshot object that simplifies the code by treating the global state as a mutable snapshot.
+ */
+internal class GlobalSnapshot(id: Int, invalid: SnapshotIdSet) :
+ MutableSnapshot(id, invalid, null, sync {
+ // Take a defensive copy of the globalWriteObservers list. This then avoids having to
+ // synchronized access to writerObserver in places it is called and allows the list to
+ // change while notifications are being dispatched. Changes to globalWriteObservers force
+ // a new global snapshot to be created.
+ (if (globalWriteObservers.isNotEmpty()) {
+ globalWriteObservers.toMutableList()
+ } else null)?.let {
+ it.firstOrNull() ?: { state: Any ->
+ it.forEach { it(state) }
+ }
+ }
+ }) {
+
+ override fun takeNestedSnapshot(readObserver: SnapshotReadObserver?): Snapshot =
+ takeNewSnapshot { invalid ->
+ ReadonlySnapshot(
+ id = sync { nextSnapshotId++ },
+ invalid = invalid,
+ readObserver = readObserver
+ )
+ }
+
+ override fun takeNestedMutableSnapshot(
+ readObserver: SnapshotReadObserver?,
+ writeObserver: SnapshotWriteObserver?
+ ): MutableSnapshot = takeNewSnapshot { invalid ->
+ MutableSnapshot(
+ id = sync { nextSnapshotId++ },
+ invalid = invalid,
+
+ // It is intentional that the global read observers are not merged with mutable
+ // snapshots read observers.
+ readObserver = readObserver,
+
+ // It is intentional that global write observers are not merged with mutable
+ // snapshots write observers.
+ writeObserver = writeObserver
+ )
+ }
+
+ override fun notifyObjectsInitialized() {
+ advanceGlobalSnapshot()
+ }
+
+ override fun nestedDeactivated(snapshot: Snapshot) = unsupported()
+ override fun nestedActivated(snapshot: Snapshot) = unsupported()
+ override fun apply(): SnapshotApplyResult =
+ error("Cannot apply the global snapshot directly. Call Snapshot.advanceGlobalSnapshot")
+
+ override fun dispose() {
+ // Disposing the global snapshot is a no-op.
+
+ // The dispose behavior is preformed by advancing the global snapshot. This method is
+ // squelched so calling it from `currentSnapshot` doesn't cause incorrect behavior
+ }
+}
+
+/**
+ * A nested mutable snapshot created by [MutableSnapshot.takeNestedMutableSnapshot].
+ */
+internal class NestedMutableSnapshot(
+ id: Int,
+ invalid: SnapshotIdSet,
+ readObserver: SnapshotReadObserver?,
+ writeObserver: SnapshotWriteObserver?,
+ val parent: MutableSnapshot
+) : MutableSnapshot(id, invalid, readObserver, writeObserver) {
+
+ init { parent.nestedActivated(this) }
+
+ override val root: Snapshot get() = parent.root
+
+ override fun dispose() {
+ if (!disposed) {
+ super.dispose()
+ parent.nestedDeactivated(this)
+ }
+ }
+
+ override fun apply(): SnapshotApplyResult {
+ if (parent.applied || parent.disposed) return SnapshotApplyResult.Failure(this)
+
+ // Applying a nested mutable snapshot applies its changes to the parent snapshot.
+
+ // See MutableSnapshot.apply() for implantation notes.
+
+ // The apply observer notification are for applying to the global scope so it is elided
+ // here making this code a bit simpler than MutableSnapshot.apply.
+
+ val modified = modified
+ val id = id
+ val optimisticMerges = if (modified != null)
+ optimisticMerges(parent, this, parent.invalid)
+ else null
+ sync {
+ validateOpen(this)
+ if (modified == null || modified.size == 0) {
+ close()
+ } else {
+ val result = innerApply(parent.id, optimisticMerges, parent.invalid)
+ if (result != SnapshotApplyResult.Success) return result
+
+ // Add all modified objects in this set to the parent
+ (parent.modified ?: HashSet<StateObject>().also {
+ parent.modified = it
+ }).addAll(modified)
+ }
+
+ // Make the snapshot visible in the parent snapshot
+ parent.invalid = parent.invalid.clear(id).andNot(previousIds)
+
+ // Ensure the ids associated with this snapshot are also applied by the parent.
+ parent.recordPrevious(id)
+ parent.recordPreviousList(previousIds)
+ }
+
+ applied = true
+ return SnapshotApplyResult.Success
+ }
+}
+
+/**
+ * A pseudo snapshot that doesn't introduce isolation but does introduce observers.
+ */
+internal class TransparentObserverMutableSnapshot(
+ private val previousSnapshot: MutableSnapshot?,
+ internal val specifiedReadObserver: SnapshotReadObserver?,
+ internal val specifiedWriteObserver: SnapshotWriteObserver?
+) : MutableSnapshot(
+ INVALID_SNAPSHOT,
+ SnapshotIdSet.EMPTY,
+ mergedReadObserver(
+ specifiedReadObserver,
+ previousSnapshot?.readObserver ?: currentGlobalSnapshot.readObserver
+ ),
+ mergedWriteObserver(
+ specifiedWriteObserver,
+ previousSnapshot?.writeObserver ?: currentGlobalSnapshot.writeObserver
+ )
+) {
+ private val currentSnapshot: MutableSnapshot
+ get() = previousSnapshot ?: currentGlobalSnapshot
+
+ override fun dispose() {
+ // Explicitly don't call super.dispose()
+ disposed = true
+ }
+
+ override var id: Int
+ get() = currentSnapshot.id
+ @Suppress("UNUSED_PARAMETER")
+ set(value) { unsupported() }
+
+ @OptIn(ExperimentalComposeApi::class)
+ override var invalid get() = currentSnapshot.invalid
+ @Suppress("UNUSED_PARAMETER")
+ set(value) = unsupported()
+
+ override fun hasPendingChanges(): Boolean = currentSnapshot.hasPendingChanges()
+
+ override var modified: MutableSet<StateObject>?
+ get() = currentSnapshot.modified
+ @Suppress("UNUSED_PARAMETER")
+ set(value) = unsupported()
+
+ override val readonly: Boolean
+ get() = currentSnapshot.readonly
+
+ override fun apply(): SnapshotApplyResult =
+ currentSnapshot.apply()
+
+ @OptIn(ExperimentalComposeApi::class)
+ override fun recordModified(state: StateObject) =
+ currentSnapshot.recordModified(state)
+
+ override fun takeNestedSnapshot(readObserver: SnapshotReadObserver?): Snapshot =
+ currentSnapshot.takeNestedSnapshot(mergedReadObserver(readObserver, this.readObserver))
+
+ override fun takeNestedMutableSnapshot(
+ readObserver: SnapshotReadObserver?,
+ writeObserver: SnapshotWriteObserver?
+ ): MutableSnapshot = currentSnapshot.takeNestedMutableSnapshot(
+ mergedReadObserver(readObserver, this.readObserver),
+ mergedWriteObserver(writeObserver, this.writeObserver)
+ )
+
+ @OptIn(ExperimentalComposeApi::class)
+ override fun notifyObjectsInitialized() = currentSnapshot.notifyObjectsInitialized()
+
+ // The following should never be called.
+ override fun nestedActivated(snapshot: Snapshot) = unsupported()
+
+ override fun nestedDeactivated(snapshot: Snapshot) = unsupported()
+}
+
+private fun mergedReadObserver(
+ readObserver: SnapshotReadObserver?,
+ parentObserver: SnapshotReadObserver?
+): SnapshotReadObserver? =
+ if (readObserver != null && parentObserver != null && readObserver != parentObserver) {
+ { state: Any ->
+ readObserver(state)
+ parentObserver(state)
+ }
+ } else readObserver ?: parentObserver
+
+private fun mergedWriteObserver(
+ writeObserver: SnapshotWriteObserver?,
+ parentObserver: SnapshotWriteObserver?
+): SnapshotWriteObserver? =
+ if (writeObserver != null && parentObserver != null && writeObserver != parentObserver) {
+ { state: Any ->
+ writeObserver(state)
+ parentObserver(state)
+ }
+ } else writeObserver ?: parentObserver
+
+/**
+ * Snapshot id of `0` is reserved as invalid and no state record with snapshot `0` is considered
+ * valid.
+ *
+ * The value `0` was chosen as it is the default value of the Int snapshot id type and records
+ * initially created will naturally have a snapshot id of 0. If this wasn't considered invalid
+ * adding such a record to a state object will make the state record immediately visible to the
+ * snapshots instead of being born invalid. Using `0` ensures all state records are created invalid
+ * and must be explicitly marked as valid in to be visible in a snapshot.
+ */
+private const val INVALID_SNAPSHOT = 0
+
+private fun validateNotInSnapshot() {
+ threadSnapshot.get().let {
+ if (it != null && it !is TransparentObserverMutableSnapshot)
+ error("In an existing snapshot")
+ }
+}
+
+private val threadSnapshot = ThreadLocal<Snapshot>()
+
+// A global synchronization object. This synchronization object should be taken before modifying any
+// of the fields below.
+@PublishedApi
+internal val lock = Any()
+
+@PublishedApi
+internal inline fun <T> sync(block: () -> T): T = synchronized(lock, block)
+
+// The following variables should only be written when sync is taken
+
+// A set of snapshots that are currently open and should be considered invalid for new snapshots.
+private var openSnapshots = SnapshotIdSet.EMPTY
+
+// The first snapshot created must be at least on more than the INVALID_SNAPSHOT
+private var nextSnapshotId = INVALID_SNAPSHOT + 1
+
+// A list of apply observers
+private val applyObservers = mutableListOf<SnapshotApplyObserver>()
+
+// A list of observers of writes to the global state.
+private val globalWriteObservers = mutableListOf<SnapshotWriteObserver>()
+
+private var currentGlobalSnapshot = GlobalSnapshot(
+ id = nextSnapshotId++,
+ invalid = SnapshotIdSet.EMPTY
+).also {
+ openSnapshots = openSnapshots.set(it.id)
+}
+
+private fun <T> takeNewGlobalSnapshot(
+ previousGlobalSnapshot: Snapshot,
+ block: (invalid: SnapshotIdSet) -> T
+): T {
+ // Deactivate global snapshot. It is safe to just deactivate it because it cannot have
+ // any conflicting writes as it is always closed before another snapshot is taken.
+ val result = block(openSnapshots.clear(previousGlobalSnapshot.id))
+
+ sync {
+ val globalId = nextSnapshotId++
+ openSnapshots = openSnapshots.clear(previousGlobalSnapshot.id)
+ currentGlobalSnapshot = GlobalSnapshot(
+ id = globalId,
+ invalid = openSnapshots
+ )
+ openSnapshots = openSnapshots.set(globalId)
+ }
+
+ return result
+}
+
+private fun <T> advanceGlobalSnapshot(block: (invalid: SnapshotIdSet) -> T): T {
+ val previousGlobalSnapshot = currentGlobalSnapshot
+ val result = sync {
+ takeNewGlobalSnapshot(previousGlobalSnapshot, block)
+ }
+
+ // If the previous global snapshot had any modified states then notify the registered apply
+ // observers.
+ val modified = previousGlobalSnapshot.modified
+ if (modified != null) {
+ val observers = sync { applyObservers.toList() }
+ for (observer in observers) {
+ observer(modified, previousGlobalSnapshot)
+ }
+ }
+
+ // Update the transparent snapshot if necessary
+ // This doesn't need to take the sync because it is updating thread local state.
+ (threadSnapshot.get() as? TransparentObserverMutableSnapshot)?.let {
+ threadSnapshot.set(TransparentObserverMutableSnapshot(
+ currentGlobalSnapshot,
+ it.specifiedReadObserver,
+ it.specifiedWriteObserver
+ ))
+ it.dispose()
+ }
+ return result
+}
+
+private fun advanceGlobalSnapshot() = advanceGlobalSnapshot { }
+
+private fun <T : Snapshot> takeNewSnapshot(block: (invalid: SnapshotIdSet) -> T): T =
+ advanceGlobalSnapshot { invalid ->
+ val result = block(invalid)
+ sync {
+ openSnapshots = openSnapshots.set(result.id)
+ }
+ result
+ }
+
+private fun validateOpen(snapshot: Snapshot) {
+ if (!openSnapshots.get(snapshot.id)) error("Snapshot is not open")
+}
+
+private fun valid(currentSnapshot: Int, candidateSnapshot: Int, invalid: SnapshotIdSet): Boolean {
+ // A candidate snapshot is valid if the it is less than or equal to the current snapshot
+ // and it wasn't specifically marked as invalid when the snapshot started.
+ //
+ // All snapshot active at when the snapshot was taken considered invalid for the snapshot
+ // (they have not been applied and therefore are considered invalid).
+ //
+ // All snapshots taken after the current snapshot are considered invalid since they where taken
+ // after the current snapshot was taken.
+ //
+ // INVALID_SNAPSHOT is reserved as an invalid snapshot id.
+ return candidateSnapshot != INVALID_SNAPSHOT && candidateSnapshot <= currentSnapshot &&
+ !invalid.get(candidateSnapshot)
+}
+
+// Determine if the given data is valid for the snapshot.
+private fun valid(data: StateRecord, snapshot: Int, invalid: SnapshotIdSet): Boolean {
+ return valid(snapshot, data.snapshotId, invalid)
+}
+
+private fun <T : StateRecord> readable(r: T, id: Int, invalid: SnapshotIdSet): T? {
+ // The readable record is the valid record with the highest snapshotId
+ var current: StateRecord? = r
+ var candidate: StateRecord? = null
+ while (current != null) {
+ if (valid(current, id, invalid)) {
+ candidate = if (candidate == null) current
+ else if (candidate.snapshotId < current.snapshotId) current else candidate
+ }
+ current = current.next
+ }
+ if (candidate != null) {
+ @Suppress("UNCHECKED_CAST")
+ return candidate as T
+ }
+ return null
+}
+
+/**
+ * Return the current readable state record for the current snapshot. It is assumed that [this]
+ * is the first record of [state]
+ */
+fun <T : StateRecord> T.readable(state: StateObject): T =
+ readable(state, currentSnapshot())
+
+/**
+ * Return the current readable state record for the [snapshot]. It is assumed that [this]
+ * is the first record of [state]
+ */
+fun <T : StateRecord> T.readable(state: StateObject, snapshot: Snapshot): T {
+ // invoke the observer associated with the current snapshot.
+ snapshot.readObserver?.invoke(state)
+ return readable(this, snapshot.id, snapshot.invalid) ?: readError()
+}
+
+private fun readError(): Nothing {
+ error("Reading a state that was created after the snapshot was taken or in a snapshot that " +
+ "has not yet been applied")
+}
+
+/**
+ * A record can be reused if no other snapshot will see it as valid. This is always true for a
+ * record created in an abandoned snapshot. It is also true if the record is valid in the
+ * previous snapshot and is obscured by another record also valid in the previous state record.
+ */
+private fun used(state: StateObject, id: Int, invalid: SnapshotIdSet): StateRecord? {
+ var current: StateRecord? = state.firstStateRecord
+ var validRecord: StateRecord? = null
+ while (current != null) {
+ val currentId = current.snapshotId
+ if (currentId == INVALID_SNAPSHOT) {
+ // Any records that were marked invalid by an abandoned snapshot can be used
+ // immediately.
+ return current
+ }
+ if (valid(current, id - 1, invalid)) {
+ if (validRecord == null) {
+ validRecord = current
+ } else {
+ // If we have two valid records one must obscure the other. Return the
+ // record with the lowest id
+ return if (current.snapshotId < validRecord.snapshotId) current else validRecord
+ }
+ }
+ current = current.next
+ }
+ return null
+}
+
+@PublishedApi
+internal fun <T : StateRecord> T.writableRecord(state: StateObject, snapshot: Snapshot): T {
+ if (snapshot.readonly) {
+ // If the snapshot is read-only, use the snapshot recordModified to report it.
+ snapshot.recordModified(state)
+ }
+ val id = snapshot.id
+ val readData = readable<T>(this, id, snapshot.invalid) ?: readError()
+
+ // If the readable data was born in this snapshot, it is writable.
+ if (readData.snapshotId == snapshot.id) return readData
+
+ // Otherwise, make a copy of the readable data and mark it as born in this snapshot, making it
+ // writable.
+
+ // Calling used() on a state object might return the same record for each thread calling
+ // used() therefore selecting the record to reuse should be guarded.
+
+ // Note: setting the snapshotId to Int.MAX_VALUE will make it invalid for all snapshots.
+ // This means the lock can be released as used() will no longer select it. Using id could
+ // also be used but it puts the object into a state where the reused value appears to be
+ // the current valid value for the snapshot. This is not an issue if the snapshot is only
+ // being read from a single thread but using Int.MAX_VALUE allows multiple readers,
+ // single writer, of a snapshot. Note that threads reading a mutating snapshot should not
+ // cache the result of readable() as the mutating thread calls to writable() can change the
+ // result of readable().
+ @Suppress("UNCHECKED_CAST")
+ val newData = (used(state, id, openSnapshots) as T?)?.apply {
+ snapshotId = Int.MAX_VALUE
+ } ?: readData.create().apply {
+ snapshotId = Int.MAX_VALUE
+ this.next = state.firstStateRecord
+ state.prependStateRecord(this as T)
+ } as T
+ newData.assign(readData)
+ newData.snapshotId = id
+
+ snapshot.recordModified(state)
+
+ return newData
+}
+
+@PublishedApi
+internal fun notifyWrite(snapshot: Snapshot, state: StateObject) {
+ snapshot.writeObserver?.invoke(state)
+}
+
+/**
+ * Call [block] with a writable state record for [snapshot] of the given record. It is
+ * assumed that this is called for the first state record in a state object. If the snapshot is
+ * read-only calling this will throw.
+ */
+inline fun <T : StateRecord, R> T.writable(
+ state: StateObject,
+ snapshot: Snapshot,
+ block: T.() -> R
+): R {
+ // A writable record will always be the readable record (as all newer records are invalid it
+ // must be the newest valid record). This means that if the readable record is not from the
+ // current snapshot, a new record must be created. To create a new writable record, a record
+ // can be reused, if possible, and the readable record is applied to it. If a record cannot
+ // be reused, a new record is created and the readable record is applied to it. Once the
+ // values are correct the record is made live by giving it the current snapshot id.
+
+ // Writes need to be in a `sync` block as all writes in flight must be completed before a new
+ // snapshot is take. Writing in a sync block ensures this is the case because new snapshots
+ // are also in a sync block.
+ return sync {
+ this.writableRecord(state, snapshot).block()
+ }.also { notifyWrite(snapshot, state) }
+}
+
+/**
+ * Call [block] with a writable state record for the given record. It is assumed that this is
+ * called for the first state record in a state object. A record is writable if it was created in
+ * the current mutable snapshot.
+ */
+inline fun <T : StateRecord, R> T.writable(state: StateObject, block: T.() -> R): R =
+ this.writable(state, Snapshot.current, block)
+
+/**
+ * Produce a set of optimistic merges of the state records, this is performed outside the
+ * a synchronization block to reduce the amount of time taken in the synchronization block
+ * reducing the thread contention of merging state values.
+ */
+private fun optimisticMerges(
+ currentSnapshot: MutableSnapshot,
+ applyingSnapshot: MutableSnapshot,
+ invalidSnapshots: SnapshotIdSet
+): Map<StateRecord, StateRecord>? {
+ val modified = applyingSnapshot.modified
+ val id = currentSnapshot.id
+ if (modified == null) return null
+ val start = applyingSnapshot.invalid.set(applyingSnapshot.id).or(applyingSnapshot.previousIds)
+ var result: MutableMap<StateRecord, StateRecord>? = null
+ for (state in modified) {
+ val first = state.firstStateRecord
+ val current = readable(first, id, invalidSnapshots) ?: continue
+ val previous = readable(first, id, start) ?: continue
+ if (current != previous) {
+ // Try to produce a merged state record
+ val applied = readable(first, applyingSnapshot.id, applyingSnapshot.invalid)
+ ?: readError()
+ val merged = state.mergeRecords(previous, current, applied)
+ if (merged != null) {
+ (result ?: hashMapOf<StateRecord, StateRecord>().also {
+ result = it
+ })[current] = merged
+ } else {
+ // If one fails don't bother calculating the others as they are likely not going
+ // to be used. There is an unlikely case that a optimistic merge cannot be
+ // produced but the snapshot will apply because, once the synchronization is taken,
+ // the current state can be merge. This routine errors on the side of reduced
+ // overall work by not performing work that is likely to be ignored.
+ return null
+ }
+ }
+ }
+ return result
+}
+
+/**
+ * Returns the current record without notifying any read observers.
+ */
+@PublishedApi
+internal fun <T : StateRecord> current(r: T, snapshot: Snapshot) =
+ readable(r, snapshot.id, snapshot.invalid) ?: readError()
+
+/**
+ * Provides a [block] with the current record, without notifying any read observers.
+ *
+ * @see readable
+ */
+@ExperimentalComposeApi
+inline fun <T : StateRecord, R> T.withCurrent(block: (r: T) -> R): R =
+ block(current(this, Snapshot.current))
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotIdSet.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotIdSet.kt
new file mode 100644
index 0000000..da537aa
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotIdSet.kt
@@ -0,0 +1,313 @@
+/*
+ * Copyright 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 androidx.compose.snapshots
+
+import androidx.compose.Immutable
+
+/**
+ * An implementation of a bit set that that is optimized around for the top 128 bits and
+ * sparse access for bits below that. Is is O(1) to set, clear and get the bit value of the top 128
+ * values of the set. Below lowerBound it is O(log N) to get a bit and O(N) to set or clear a bit
+ * where N is the number of bits set below lowerBound. Clearing a cleared bit or setting a set bit
+ * is the same complexity of get.
+ *
+ * The set is immutable and calling the set or clear methods produce the modified set, leaving the
+ * previous set unmodified. If the operation does not modify the set, such as setting a set bit or
+ * clearing a clear bit, returns the same instance.
+ *
+ * This class is highly biased to a bits being set at the top 128 values of the range and bits lower
+ * than the that range to be mostly or completely clear.
+ *
+ * This class does not implement equals intentionally. Equals is hard and expensive as a normal form
+ * for a particular set is not guaranteed (that is, two sets that compare equal might have
+ * different field values). As snapshots does not need this, it is not implemented.
+ */
+@Immutable
+internal class SnapshotIdSet private constructor(
+ // Bit set from (lowerBound + 64)-(lowerBound+127) of the set
+ private val upperSet: Long,
+ // Bit set from (lowerBound)-(lowerBound+63) of the set
+ private val lowerSet: Long,
+ // Lower bound of the bit set. All values above lowerBound+127 are clear.
+ // Values between lowerBound and lowerBound+127 are recorded in lowerSet and upperSet
+ private val lowerBound: Int,
+ // A sorted array of the index of bits set below lowerBound
+ private val belowBound: IntArray?
+) : Iterable<Int> {
+
+ /**
+ * The the value of the bit at index [bit]
+ */
+ fun get(bit: Int): Boolean {
+ val offset = bit - lowerBound
+ if (offset >= 0 && offset < Long.SIZE_BITS) {
+ return (1L shl offset) and lowerSet != 0L
+ } else if (offset >= Long.SIZE_BITS && offset < Long.SIZE_BITS * 2) {
+ return (1L shl (offset - Long.SIZE_BITS)) and upperSet != 0L
+ } else if (offset > 0) {
+ return false
+ } else return belowBound?.let {
+ it.binarySearch(bit) >= 0
+ } ?: false
+ }
+
+ /**
+ * Produce a copy of this set with the addition of the bit at index [bit] set.
+ */
+ fun set(bit: Int): SnapshotIdSet {
+ val offset = bit - lowerBound
+ if (offset >= 0 && offset < Long.SIZE_BITS) {
+ val mask = 1L shl offset
+ if (lowerSet and mask == 0L) {
+ return SnapshotIdSet(
+ upperSet = upperSet,
+ lowerSet = lowerSet or mask,
+ lowerBound = lowerBound,
+ belowBound = belowBound
+ )
+ }
+ } else if (offset >= Long.SIZE_BITS && offset < Long.SIZE_BITS * 2) {
+ val mask = 1L shl (offset - Long.SIZE_BITS)
+ if (upperSet and mask == 0L) {
+ return SnapshotIdSet(
+ upperSet = upperSet or mask,
+ lowerSet = lowerSet,
+ lowerBound = lowerBound,
+ belowBound = belowBound
+ )
+ }
+ } else if (offset >= Long.SIZE_BITS * 2) {
+ if (!get(bit)) {
+ // Shift the bit array down
+ var newUpperSet = upperSet
+ var newLowerSet = lowerSet
+ var newLowerBound = lowerBound
+ var newBelowBound: MutableList<Int>? = null
+ val targetLowerBound = (bit + 1) / Long.SIZE_BITS * Long.SIZE_BITS
+ while (newLowerBound < targetLowerBound) {
+ // Shift the lower set into the array
+ if (newLowerSet != 0L) {
+ if (newBelowBound == null)
+ newBelowBound = mutableListOf<Int>().apply {
+ belowBound?.let {
+ it.forEach { this.add(it) }
+ }
+ }
+ repeat(Long.SIZE_BITS) { bitOffset ->
+ if (newLowerSet and (1L shl bitOffset) != 0L) {
+ newBelowBound.add(bitOffset + newLowerBound)
+ }
+ }
+ }
+ if (newUpperSet == 0L) {
+ newLowerBound = targetLowerBound
+ newLowerSet = 0L
+ break
+ }
+ newLowerSet = newUpperSet
+ newUpperSet = 0
+ newLowerBound += Long.SIZE_BITS
+ }
+
+ return SnapshotIdSet(
+ newUpperSet,
+ newLowerSet,
+ newLowerBound,
+ newBelowBound?.toIntArray() ?: belowBound
+ ).set(bit)
+ }
+ } else {
+ val array = belowBound
+ ?: return SnapshotIdSet(upperSet, lowerSet, lowerBound, intArrayOf(bit))
+
+ val location = array.binarySearch(bit)
+ if (location < 0) {
+ val insertLocation = -(location + 1)
+ val newSize = array.size + 1
+ val newBelowBound = IntArray(newSize)
+ array.copyInto(
+ destination = newBelowBound,
+ destinationOffset = 0,
+ startIndex = 0,
+ endIndex = insertLocation
+ )
+ array.copyInto(
+ destination = newBelowBound,
+ destinationOffset = insertLocation + 1,
+ startIndex = insertLocation,
+ endIndex = newSize - 1
+ )
+ newBelowBound[insertLocation] = bit
+ return SnapshotIdSet(upperSet, lowerSet, lowerBound, newBelowBound)
+ }
+ }
+
+ // No changes
+ return this
+ }
+
+ /**
+ * Produce a copy of this set with the addition of the bit at index [bit] cleared.
+ */
+ fun clear(bit: Int): SnapshotIdSet {
+ val offset = bit - lowerBound
+ if (offset >= 0 && offset < Long.SIZE_BITS) {
+ val mask = 1L shl offset
+ if (lowerSet and mask != 0L) {
+ return SnapshotIdSet(
+ upperSet = upperSet,
+ lowerSet = lowerSet and mask.inv(),
+ lowerBound = lowerBound,
+ belowBound = belowBound
+ )
+ }
+ } else if (offset >= Long.SIZE_BITS && offset < Long.SIZE_BITS * 2) {
+ val mask = 1L shl (offset - Long.SIZE_BITS)
+ if (upperSet and mask != 0L) {
+ return SnapshotIdSet(
+ upperSet = upperSet and mask.inv(),
+ lowerSet = lowerSet,
+ lowerBound = lowerBound,
+ belowBound = belowBound
+ )
+ }
+ } else if (offset < 0) {
+ val array = belowBound
+ if (array != null) {
+ val location = array.binarySearch(bit)
+ if (location >= 0) {
+ val newSize = array.size - 1
+ if (newSize == 0) {
+ return SnapshotIdSet(upperSet, lowerSet, lowerBound, null)
+ }
+ val newBelowBound = IntArray(newSize)
+ if (location > 0) {
+ array.copyInto(
+ destination = newBelowBound,
+ destinationOffset = 0,
+ startIndex = 0,
+ endIndex = location
+ )
+ }
+ if (location < newSize) {
+ array.copyInto(
+ destination = newBelowBound,
+ destinationOffset = location,
+ startIndex = location + 1,
+ endIndex = newSize + 1
+ )
+ }
+ return SnapshotIdSet(upperSet, lowerSet, lowerBound, newBelowBound)
+ }
+ }
+ }
+
+ return this
+ }
+
+ /**
+ * Produce a copy of this with all the values in [bits] cleared (`a & ~b`)
+ */
+ fun andNot(bits: SnapshotIdSet): SnapshotIdSet {
+ if (bits === EMPTY) return this
+ if (this === EMPTY) return EMPTY
+ return if (bits.lowerBound == this.lowerBound && bits.belowBound === this.belowBound) {
+ SnapshotIdSet(
+ this.upperSet and bits.upperSet.inv(),
+ this.lowerSet and bits.lowerSet.inv(),
+ this.lowerBound,
+ this.belowBound
+ )
+ } else {
+ bits.fold(this) { previous, index -> previous.clear(index) }
+ }
+ }
+
+ /**
+ * Produce a set that if the value is set in this set or [bits] (`a | b`)
+ */
+ fun or(bits: SnapshotIdSet): SnapshotIdSet {
+ if (bits === EMPTY) return this
+ if (this === EMPTY) return bits
+ return if (bits.lowerBound == this.lowerBound && bits.belowBound === this.belowBound) {
+ SnapshotIdSet(
+ this.upperSet or bits.upperSet,
+ this.lowerSet or bits.lowerSet,
+ this.lowerBound,
+ this.belowBound
+ )
+ } else {
+ if (this.belowBound == null) {
+ // We are probably smaller than bits, or at least, small enough
+ this.fold(bits) { previous, index -> previous.set(index) }
+ } else {
+ // Otherwise assume bits is smaller than this.
+ bits.fold(this) { previous, index -> previous.set(index) }
+ }
+ }
+ }
+
+ override fun iterator(): Iterator<Int> = sequence {
+ val belowBound = belowBound
+ if (belowBound != null)
+ for (element in belowBound) {
+ yield(element)
+ }
+ if (lowerSet != 0L) {
+ for (index in 0 until Long.SIZE_BITS) {
+ if (lowerSet and (1L shl index) != 0L) {
+ yield(index + lowerBound)
+ }
+ }
+ }
+ if (upperSet != 0L) {
+ for (index in 0 until Long.SIZE_BITS) {
+ if (upperSet and (1L shl index) != 0L) {
+ yield(index + Long.SIZE_BITS + lowerBound)
+ }
+ }
+ }
+ }.iterator()
+
+ override fun toString(): String = "${super.toString()} [${this.map {
+ it.toString()
+ }.joinToString()}]"
+
+ companion object {
+ /**
+ * An empty frame it set
+ */
+ val EMPTY = SnapshotIdSet(0, 0, 0, null)
+ }
+}
+
+internal fun IntArray.binarySearch(value: Int): Int {
+ var low = 0
+ var high = size - 1
+
+ while (low <= high) {
+ val mid = (low + high).ushr(1)
+ val midVal = get(mid)
+ if (value > midVal)
+ low = mid + 1
+ else if (value < midVal)
+ high = mid - 1
+ else
+ return mid
+ }
+ return -(low + 1)
+}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateList.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateList.kt
new file mode 100644
index 0000000..f892bfc
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateList.kt
@@ -0,0 +1,357 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(ExperimentalComposeApi::class)
+
+package androidx.compose.snapshots
+
+import androidx.compose.BuildableList
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.StableMutableList
+import androidx.compose.buildableListOf
+
+internal class SnapshotStateList<T> : StableMutableList<T>, StateObject {
+ override var firstStateRecord: StateListStateRecord<T> =
+ StateListStateRecord<T>(buildableListOf())
+ private set
+
+ override fun prependStateRecord(value: StateRecord) {
+ value.next = firstStateRecord
+ @Suppress("UNCHECKED_CAST")
+ firstStateRecord = value as StateListStateRecord<T>
+ }
+
+ internal val modification: Int get() = withCurrent { modification }
+
+ @Suppress("UNCHECKED_CAST")
+ internal val readable: StateListStateRecord<T> get() =
+ firstStateRecord.readable(this)
+
+ internal class StateListStateRecord<T>(
+ var list: BuildableList<T>
+ ) : StateRecord() {
+ var modification = 0
+ override fun assign(value: StateRecord) {
+ @Suppress("UNCHECKED_CAST")
+ list = (value as StateListStateRecord<T>).list
+ modification = value.modification
+ }
+
+ override fun create(): StateRecord = StateListStateRecord(list)
+ }
+
+ override val size: Int get() = readable.list.size
+ override fun contains(element: T) = readable.list.contains(element)
+ override fun containsAll(elements: Collection<T>) = readable.list.containsAll(elements)
+ override fun get(index: Int) = readable.list[index]
+ override fun indexOf(element: T): Int = readable.list.indexOf(element)
+ override fun isEmpty() = readable.list.isEmpty()
+ override fun iterator(): MutableIterator<T> = listIterator()
+ override fun lastIndexOf(element: T) = readable.list.lastIndexOf(element)
+ override fun listIterator(): MutableListIterator<T> = StateListIterator(this, 0)
+ override fun listIterator(index: Int): MutableListIterator<T> = StateListIterator(this, index)
+ override fun subList(fromIndex: Int, toIndex: Int): MutableList<T> {
+ require(fromIndex in 0..toIndex && toIndex < size)
+ return SubList(this, fromIndex, toIndex)
+ }
+ override fun add(element: T) = conditionalUpdate { it.add(element) }
+ override fun add(index: Int, element: T) = update { it.add(index, element) }
+ override fun addAll(index: Int, elements: Collection<T>) = mutate {
+ it.addAll(index, elements)
+ }
+ override fun addAll(elements: Collection<T>) = conditionalUpdate { it.addAll(elements) }
+ override fun clear() = writable { list = buildableListOf() }
+ override fun remove(element: T) = conditionalUpdate { it.remove(element) }
+ override fun removeAll(elements: Collection<T>) = conditionalUpdate { it.removeAll(elements) }
+ override fun removeAt(index: Int) = get(index).also { update { it.removeAt(index) } }
+ override fun retainAll(elements: Collection<T>) = mutate { it.retainAll(elements) }
+ override fun set(index: Int, element: T) = get(index).also { update { it.set(index, element) } }
+
+ fun removeRange(fromIndex: Int, toIndex: Int) {
+ mutate {
+ it.subList(fromIndex, toIndex).clear()
+ }
+ }
+
+ private inline fun <R> writable(block: StateListStateRecord<T>.() -> R): R =
+ @Suppress("UNCHECKED_CAST")
+ firstStateRecord.writable(this, block)
+
+ private inline fun <R> withCurrent(block: StateListStateRecord<T>.() -> R): R =
+ @Suppress("UNCHECKED_CAST")
+ firstStateRecord.withCurrent(block)
+
+ private inline fun <R> mutate(block: (MutableList<T>) -> R): R =
+ withCurrent {
+ val builder = list.builder()
+ val result = block(builder)
+ val newList = builder.build()
+ if (newList !== list) writable {
+ list = newList
+ modification++
+ }
+ result
+ }
+
+ private inline fun update(block: (BuildableList<T>) -> BuildableList<T>) = withCurrent {
+ val newList = block(list)
+ if (newList !== list) writable {
+ list = newList
+ modification++
+ }
+ }
+
+ private inline fun conditionalUpdate(block: (BuildableList<T>) -> BuildableList<T>): Boolean =
+ withCurrent {
+ val newList = block(list)
+ if (newList !== list) writable {
+ list = newList
+ modification++
+ true
+ } else false
+ }
+}
+
+private fun modificationError(): Nothing =
+ error("Cannot modify a state list through an iterator")
+
+private fun validateRange(index: Int, size: Int) {
+ if (index !in 0..size) {
+ throw IndexOutOfBoundsException("index ($index) is out of bound of 0..$size")
+ }
+}
+
+private class StateListIterator<T>(
+ val list: SnapshotStateList<T>,
+ offset: Int
+) : MutableListIterator<T> {
+ private var index = offset - 1
+ private var modification = list.modification
+
+ override fun hasPrevious() = index >= 0
+
+ override fun nextIndex() = index + 1
+
+ override fun previous(): T {
+ validateModification()
+ validateRange(index, list.size)
+ return list[index].also { index-- }
+ }
+
+ override fun previousIndex(): Int = index
+
+ override fun add(element: T) {
+ validateModification()
+ list.add(index + 1, element)
+ index++
+ modification = list.modification
+ }
+
+ override fun hasNext() = index < list.size - 1
+
+ override fun next(): T {
+ validateModification()
+ val newIndex = index + 1
+ validateRange(newIndex, list.size)
+ return list[newIndex].also { index = newIndex }
+ }
+
+ override fun remove() {
+ validateModification()
+ list.removeAt(index)
+ index--
+ modification = list.modification
+ }
+
+ override fun set(element: T) {
+ validateModification()
+ list.set(index, element)
+ modification = list.modification
+ }
+
+ private fun validateModification() {
+ if (list.modification != modification) {
+ throw ConcurrentModificationException()
+ }
+ }
+}
+
+private class SubList<T>(
+ val parentList: SnapshotStateList<T>,
+ fromIndex: Int,
+ toIndex: Int
+) : MutableList<T> {
+ private val offset = fromIndex
+ private var modification = parentList.modification
+ override var size = toIndex - fromIndex
+ private set
+
+ override fun contains(element: T): Boolean = indexOf(element) >= 0
+ override fun containsAll(elements: Collection<T>): Boolean = elements.all { contains(it) }
+ override fun get(index: Int): T {
+ validateModification()
+ validateRange(index, size)
+ return parentList[offset + index]
+ }
+
+ override fun indexOf(element: T): Int {
+ validateModification()
+ (offset until offset + size).forEach {
+ if (element == parentList[it]) return it - offset
+ }
+ return -1
+ }
+
+ override fun isEmpty(): Boolean = size == 0
+
+ override fun iterator(): MutableIterator<T> = listIterator()
+
+ override fun lastIndexOf(element: T): Int {
+ validateModification()
+ var index = offset + size - 1
+ while (index >= offset) {
+ if (element == parentList[index]) return index - offset
+ index--
+ }
+ return -1
+ }
+
+ override fun add(element: T): Boolean {
+ validateModification()
+ parentList.add(offset + size, element)
+ size++
+ modification = parentList.modification
+ return true
+ }
+
+ override fun add(index: Int, element: T) {
+ validateModification()
+ parentList.add(offset + index, element)
+ size++
+ modification = parentList.modification
+ }
+
+ override fun addAll(index: Int, elements: Collection<T>): Boolean {
+ validateModification()
+ val result = parentList.addAll(index + offset, elements)
+ if (result) {
+ size += elements.size
+ modification = parentList.modification
+ }
+ return result
+ }
+
+ override fun addAll(elements: Collection<T>): Boolean = addAll(size, elements)
+
+ override fun clear() {
+ if (size > 0) {
+ validateModification()
+ parentList.removeRange(offset, offset + size)
+ size = 0
+ modification = parentList.modification
+ }
+ }
+
+ override fun listIterator(): MutableListIterator<T> = listIterator(0)
+ override fun listIterator(index: Int): MutableListIterator<T> {
+ validateModification()
+ var current = index - 1
+ return object : MutableListIterator<T> {
+ override fun hasPrevious() = current >= 0
+ override fun nextIndex(): Int = current + 1
+ override fun previous(): T {
+ val oldCurrent = current
+ validateRange(oldCurrent, size)
+ current = oldCurrent - 1
+ return this@SubList[oldCurrent]
+ }
+ override fun previousIndex(): Int = current
+ override fun add(element: T) = modificationError()
+ override fun hasNext(): Boolean = current < size - 1
+ override fun next(): T {
+ val newCurrent = current + 1
+ validateRange(newCurrent, size)
+ current = newCurrent
+ return this@SubList[newCurrent]
+ }
+ override fun remove() = modificationError()
+ override fun set(element: T) = modificationError()
+ }
+ }
+
+ override fun remove(element: T): Boolean {
+ val index = indexOf(element)
+ return if (index >= 0) {
+ removeAt(index)
+ true
+ } else false
+ }
+
+ override fun removeAll(elements: Collection<T>): Boolean {
+ var removed = false
+ for (element in elements) {
+ removed = remove(element) || removed
+ }
+ return removed
+ }
+
+ override fun removeAt(index: Int): T {
+ validateModification()
+ return parentList.removeAt(offset + index).also {
+ size--
+ modification = parentList.modification
+ }
+ }
+
+ override fun retainAll(elements: Collection<T>): Boolean {
+ validateModification()
+ var index = offset + size - 1
+ var removed = false
+ while (index >= offset) {
+ if (parentList[index] !in elements) {
+ if (!removed) {
+ removed = true
+ }
+ parentList.removeAt(index)
+ size--
+ }
+ index--
+ }
+ if (removed)
+ modification = parentList.modification
+ return removed
+ }
+
+ override fun set(index: Int, element: T): T {
+ validateRange(index, size)
+ validateModification()
+ val result = parentList.set(index + offset, element)
+ modification = parentList.modification
+ return result
+ }
+
+ override fun subList(fromIndex: Int, toIndex: Int): MutableList<T> {
+ require(fromIndex in 0..toIndex && toIndex < size)
+ validateModification()
+ return SubList(parentList, fromIndex + offset, toIndex + offset)
+ }
+
+ private fun validateModification() {
+ if (parentList.modification != modification) {
+ throw ConcurrentModificationException()
+ }
+ }
+}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateMap.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateMap.kt
new file mode 100644
index 0000000..5bcb233
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateMap.kt
@@ -0,0 +1,294 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(ExperimentalComposeApi::class)
+
+package androidx.compose.snapshots
+
+import androidx.compose.BuildableMap
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.StableMutableMap
+import androidx.compose.buildableMapOf
+
+/**
+ * The implementation class of observable maps.
+ */
+internal class SnapshotStateMap<K, V> : StableMutableMap<K, V>, StateObject {
+ override var firstStateRecord: StateMapStateRecord<K, V> =
+ StateMapStateRecord<K, V>(buildableMapOf())
+ private set
+
+ override fun prependStateRecord(value: StateRecord) {
+ @Suppress("UNCHECKED_CAST")
+ firstStateRecord = value as StateMapStateRecord<K, V>
+ }
+
+ override val size get() = readable.map.size
+ override fun containsKey(key: K) = readable.map.containsKey(key)
+ override fun containsValue(value: V) = readable.map.containsValue(value)
+ override fun get(key: K) = readable.map[key]
+ override fun isEmpty() = readable.map.isEmpty()
+ override val entries: MutableSet<MutableMap.MutableEntry<K, V>> = SnapshotMapEntrySet(this)
+ override val keys: MutableSet<K> = SnapshotMapKeySet(this)
+ override val values: MutableCollection<V> = SnapshotMapValueSet(this)
+
+ override fun clear() = update { buildableMapOf() }
+ override fun put(key: K, value: V): V? = mutate { it.put(key, value) }
+ override fun putAll(from: Map<out K, V>) = mutate { it.putAll(from) }
+ override fun remove(key: K): V? = mutate { it.remove(key) }
+
+ internal val modification get() = readable.modification
+
+ internal fun removeValue(value: V) =
+ entries.firstOrNull { it.value == value }?.let { remove(it.key); true } == true
+
+ @Suppress("UNCHECKED_CAST")
+ internal val readable: StateMapStateRecord<K, V>
+ get() = firstStateRecord.readable(this)
+
+ internal inline fun removeIf(predicate: (MutableMap.MutableEntry<K, V>) -> Boolean): Boolean {
+ var removed = false
+ mutate {
+ for (entry in this.entries) {
+ if (predicate(entry)) {
+ it.remove(entry.key)
+ removed = true
+ }
+ }
+ }
+ return removed
+ }
+
+ internal inline fun any(predicate: (Map.Entry<K, V>) -> Boolean): Boolean {
+ for (entry in readable.map.entries) {
+ if (predicate(entry)) return true
+ }
+ return false
+ }
+
+ internal inline fun all(predicate: (Map.Entry<K, V>) -> Boolean): Boolean {
+ for (entry in readable.map.entries) {
+ if (!predicate(entry)) return false
+ }
+ return true
+ }
+
+ private inline fun <R> withCurrent(block: StateMapStateRecord<K, V>.() -> R): R =
+ @Suppress("UNCHECKED_CAST")
+ @OptIn(ExperimentalComposeApi::class)
+ firstStateRecord.withCurrent(block)
+
+ private inline fun <R> writable(block: StateMapStateRecord<K, V>.() -> R): R =
+ @Suppress("UNCHECKED_CAST")
+ firstStateRecord.writable(this, block)
+
+ private inline fun <R> mutate(block: (MutableMap<K, V>) -> R): R =
+ withCurrent {
+ val builder = map.builder()
+ val result = block(builder)
+ val newMap = builder.build()
+ if (newMap !== map) writable {
+ map = newMap
+ modification++
+ }
+ result
+ }
+
+ private inline fun update(block: (BuildableMap<K, V>) -> BuildableMap<K, V>) = withCurrent {
+ val newMap = block(map)
+ if (newMap !== map) writable {
+ map = newMap
+ modification++
+ }
+ }
+
+ internal class StateMapStateRecord<K, V>(
+ var map: BuildableMap<K, V>
+ ) : StateRecord() {
+ var modification = 0
+ override fun assign(value: StateRecord) {
+ @Suppress("UNCHECKED_CAST")
+ val other = (value as StateMapStateRecord<K, V>)
+ map = other.map
+ modification = other.modification
+ }
+
+ override fun create(): StateRecord = StateMapStateRecord(map)
+ }
+}
+
+private abstract class SnapshotMapSet<K, V, E>(
+ val map: SnapshotStateMap<K, V>
+) : MutableSet<E> {
+ override val size: Int get() = map.size
+ override fun clear() = map.clear()
+ override fun isEmpty() = map.isEmpty()
+}
+
+private class SnapshotMapEntrySet<K, V>(
+ map: SnapshotStateMap<K, V>
+) : SnapshotMapSet<K, V, MutableMap.MutableEntry<K, V>>(map) {
+ override fun add(element: MutableMap.MutableEntry<K, V>) = unsupported()
+ override fun addAll(elements: Collection<MutableMap.MutableEntry<K, V>>) = unsupported()
+ override fun iterator(): MutableIterator<MutableMap.MutableEntry<K, V>> =
+ StateMapMutableEntriesIterator(map, map.readable.map.entries.iterator())
+ override fun remove(element: MutableMap.MutableEntry<K, V>) =
+ map.remove(element.key) != null
+ override fun removeAll(elements: Collection<MutableMap.MutableEntry<K, V>>): Boolean {
+ var removed = false
+ for (element in elements) {
+ removed = map.remove(element.key) != null || removed
+ }
+ return removed
+ }
+ override fun retainAll(elements: Collection<MutableMap.MutableEntry<K, V>>): Boolean {
+ val entries = elements.map { it.key to it.value }.toMap()
+ return map.removeIf { !entries.containsKey(it.key) || entries[it.key] != it.value }
+ }
+ override fun contains(element: MutableMap.MutableEntry<K, V>): Boolean {
+ return map[element.key] == element.value
+ }
+ override fun containsAll(elements: Collection<MutableMap.MutableEntry<K, V>>): Boolean {
+ return elements.all { contains(it) }
+ }
+}
+
+private class SnapshotMapKeySet<K, V>(map: SnapshotStateMap<K, V>) : SnapshotMapSet<K, V, K>(map) {
+ override fun add(element: K) = unsupported()
+ override fun addAll(elements: Collection<K>) = unsupported()
+ override fun iterator() = StateMapMutableKeysIterator(map, map.readable.map.entries.iterator())
+ override fun remove(element: K): Boolean = map.remove(element) != null
+ override fun removeAll(elements: Collection<K>): Boolean {
+ var removed = false
+ elements.forEach {
+ removed = map.remove(it) != null || removed
+ }
+ return removed
+ }
+ override fun retainAll(elements: Collection<K>): Boolean {
+ val set = elements.toSet()
+ return map.removeIf { it.key !in set }
+ }
+ override fun contains(element: K) = map.contains(element)
+ override fun containsAll(elements: Collection<K>): Boolean = elements.all { map.contains(it) }
+}
+
+private class SnapshotMapValueSet<K, V>(
+ map: SnapshotStateMap<K, V>
+) : SnapshotMapSet<K, V, V>(map) {
+ override fun add(element: V) = unsupported()
+ override fun addAll(elements: Collection<V>) = unsupported()
+ override fun iterator() =
+ StateMapMutableValuesIterator(map, map.readable.map.entries.iterator())
+ override fun remove(element: V): Boolean = map.removeValue(element)
+ override fun removeAll(elements: Collection<V>): Boolean {
+ val set = elements.toSet()
+ return map.removeIf { it.value in set }
+ }
+ override fun retainAll(elements: Collection<V>): Boolean {
+ val set = elements.toSet()
+ return map.removeIf { it.value !in set }
+ }
+ override fun contains(element: V) = map.containsValue(element)
+ override fun containsAll(elements: Collection<V>): Boolean {
+ return elements.all { map.containsValue(it) }
+ }
+}
+
+private abstract class StateMapMutableIterator<K, V>(
+ val map: SnapshotStateMap<K, V>,
+ val iterator: Iterator<Map.Entry<K, V>>
+) {
+ protected var modification = map.modification
+ protected var current: Map.Entry<K, V>? = null
+ protected var next: Map.Entry<K, V>? = null
+
+ init { advance() }
+
+ fun remove() = modify {
+ val value = current
+
+ if (value != null) {
+ map.remove(value.key)
+ current = null
+ } else {
+ throw IllegalStateException()
+ }
+ }
+
+ fun hasNext() = next != null
+
+ protected fun advance() {
+ current = next
+ next = if (iterator.hasNext()) iterator.next() else null
+ }
+
+ protected inline fun <T> modify(block: () -> T): T {
+ if (map.modification != modification) {
+ throw ConcurrentModificationException()
+ }
+ return block().also { modification = map.modification }
+ }
+}
+
+private class StateMapMutableEntriesIterator<K, V>(
+ map: SnapshotStateMap<K, V>,
+ iterator: Iterator<Map.Entry<K, V>>
+) : StateMapMutableIterator<K, V>(map, iterator), MutableIterator<MutableMap.MutableEntry<K, V>> {
+ override fun next(): MutableMap.MutableEntry<K, V> {
+ advance()
+ if (current != null) {
+ return object : MutableMap.MutableEntry<K, V> {
+ override val key = current!!.key
+ override var value = current!!.value
+ override fun setValue(newValue: V): V = modify {
+ val result = value
+ map[key] = newValue
+ value = newValue
+ return result
+ }
+ }
+ } else {
+ throw IllegalStateException()
+ }
+ }
+}
+
+private class StateMapMutableKeysIterator<K, V>(
+ map: SnapshotStateMap<K, V>,
+ iterator: Iterator<Map.Entry<K, V>>
+) : StateMapMutableIterator<K, V>(map, iterator), MutableIterator<K> {
+ override fun next(): K {
+ val result = next ?: throw IllegalStateException()
+ advance()
+ return result.key
+ }
+}
+
+private class StateMapMutableValuesIterator<K, V>(
+ map: SnapshotStateMap<K, V>,
+ iterator: Iterator<Map.Entry<K, V>>
+) : StateMapMutableIterator<K, V>(map, iterator), MutableIterator<V> {
+ override fun next(): V {
+ val result = next ?: throw IllegalStateException()
+ advance()
+ return result.value
+ }
+}
+
+internal fun unsupported(): Nothing {
+ throw UnsupportedOperationException()
+}
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt
new file mode 100644
index 0000000..69ce23e
--- /dev/null
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt
@@ -0,0 +1,229 @@
+/*
+ * Copyright 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 androidx.compose.snapshots
+
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.ObserverMap
+
+@ExperimentalComposeApi
+class SnapshotStateObserver(private val onChangedExecutor: (callback: () -> Unit) -> Unit) {
+ private val applyObserver: SnapshotApplyObserver = { applied, _ ->
+ var hasValues = false
+
+ // This array is in the same order as applyMaps
+ val targetsArray = synchronized(applyMaps) {
+ Array(applyMaps.size) { index ->
+ applyMaps[index].map[applied].apply {
+ if (isNotEmpty())
+ hasValues = true
+ }
+ }
+ }
+ if (hasValues) {
+ onChangedExecutor {
+ callOnChanged(targetsArray)
+ }
+ }
+ }
+
+ /**
+ * The [SnapshotReadObserver] used by this [SnapshotStateObserver] during [observeReads].
+ */
+ private val readObserver: SnapshotReadObserver = { state ->
+ if (!isPaused) {
+ synchronized(applyMaps) {
+ currentMap!!.add(state, currentTarget!!)
+ }
+ }
+ }
+
+ /**
+ * List of all [ApplyMap]s. When [observeReads] is called, there will be a [ApplyMap]
+ * associated with its `onChanged` callback in this list. The list only grows.
+ */
+ private val applyMaps = mutableListOf<ApplyMap<*>>()
+
+ /**
+ * Method to call when unsubscribing from the apply observer.
+ */
+ private var applyUnsubscribe: (() -> Unit)? = null
+
+ /**
+ * `true` when an [observeReads] is in progress and [readObserver] is active and `false` when
+ * [readObserver] is no longer observing changes.
+ */
+ private var isObserving = false
+
+ /**
+ * `true` when [pauseObservingReads] is called and read observations should no
+ * longer be considered invalidations for the `onCommit` callback.
+ */
+ private var isPaused = false
+
+ /**
+ * The [ObserverMap] that should be added to when a model is read during [observeReads].
+ */
+ private var currentMap: ObserverMap<Any, Any>? = null
+
+ /**
+ * The target associated with the active [observeReads] call.
+ */
+ private var currentTarget: Any? = null
+
+ /**
+ * Remove all hooks used to track changes.
+ */
+ fun dispose() {
+ require(!isObserving) { "Cannot dispose an observer while observing" }
+ if (applyUnsubscribe != null) {
+ enableStateUpdatesObserving(false)
+ }
+ }
+
+ /**
+ * Executes [block], observing state object reads during its execution.
+ *
+ * The [target] is stored as a weak reference to be passed to [onChanged] when a change to the
+ * state object has been detected.
+ *
+ * Observation for [target] will be paused when a new [observeReads] call is made or when
+ * [pauseObservingReads] is called.
+ *
+ * Any previous observation with the given [target] and [onChanged] will be cleared and only
+ * the new observation on [block] will be stored. It is important that the same instance of
+ * [onChanged] is used between calls or previous references will not be cleared.
+ *
+ * The [onChanged] will be called when a state object that was accessed during [block] has been
+ * applied, and it will be called with [onChangedExecutor].
+ */
+ fun <T : Any> observeReads(target: T, onChanged: (T) -> Unit, block: () -> Unit) {
+ val oldMap = currentMap
+ val oldTarget = currentTarget
+ val oldPaused = isPaused
+
+ currentMap = synchronized(applyMaps) {
+ ensureMap(onChanged).apply { removeValue(target) }
+ }
+ currentTarget = target
+ isPaused = false
+ if (!isObserving) {
+ isObserving = true
+ try {
+ Snapshot.observe(readObserver, null, block)
+ } finally {
+ isObserving = false
+ }
+ } else {
+ block()
+ }
+ currentMap = oldMap
+ currentTarget = oldTarget
+ isPaused = oldPaused
+ }
+
+ /**
+ * Stops observing state object reads while executing [block]. State object reads may be
+ * restarted by calling [observeReads] inside [block].
+ */
+ fun pauseObservingReads(block: () -> Unit) {
+ val oldPaused = isPaused
+ isPaused = true
+ try {
+ block()
+ } finally {
+ isPaused = oldPaused
+ }
+ }
+
+ /**
+ * Clears all model read observations for a given [target]. This clears values for all
+ * `onCommit` methods passed in [observeReads].
+ */
+ fun clear(target: Any) {
+ synchronized(applyMaps) {
+ applyMaps.fastForEach { commitMap ->
+ commitMap.map.removeValue(target)
+ }
+ }
+ }
+
+ /**
+ * Starts or stops watching for model commits based on [enabled].
+ */
+ fun enableStateUpdatesObserving(enabled: Boolean) {
+ require(enabled == (applyUnsubscribe == null)) {
+ "Called twice with the same enabled value: $enabled"
+ }
+ applyUnsubscribe = if (enabled) {
+ Snapshot.registerApplyObserver(applyObserver)
+ } else {
+ applyUnsubscribe?.invoke()
+ null
+ }
+ }
+
+ /**
+ * Calls the `onChanged` callback for the given targets.
+ */
+ private fun callOnChanged(targetsArray: Array<List<Any>>) {
+ for (i in 0..targetsArray.lastIndex) {
+ val targets = targetsArray[i]
+ if (targets.isNotEmpty()) {
+ val onChangeCaller = synchronized(applyMaps) { applyMaps[i] }
+ onChangeCaller.callOnChanged(targets)
+ }
+ }
+ }
+
+ /**
+ * Returns the [ObserverMap] within [applyMaps] associated with [onChanged] or a newly-
+ * inserted one if it doesn't exist.
+ *
+ * Must be called inside a synchronized block.
+ */
+ private fun <T : Any> ensureMap(onChanged: (T) -> Unit): ObserverMap<Any, Any> {
+ val index = applyMaps.indexOfFirst { it.onChanged === onChanged }
+ if (index == -1) {
+ val commitMap = ApplyMap(onChanged)
+ applyMaps.add(commitMap)
+ return commitMap.map
+ }
+ return applyMaps[index].map
+ }
+
+ /**
+ * Used to tie an [onChanged] to its target by type. This works around some difficulties in
+ * unchecked casts with kotlin.
+ */
+ @Suppress("UNCHECKED_CAST")
+ private class ApplyMap<T : Any>(val onChanged: (T) -> Unit) {
+ /**
+ * ObserverMap (key = model, value = target). These are the models that have been
+ * read during the target's [SnapshotStateObserver.observeReads].
+ */
+ val map = ObserverMap<Any, Any>()
+
+ /**
+ * Calls the `onCommit` callback for targets affected by the given committed values.
+ */
+ fun callOnChanged(targets: List<Any>) {
+ targets.forEach { target ->
+ onChanged(target as T)
+ }
+ }
+ }
+}
diff --git a/compose/compose-runtime/src/desktopMain/kotlin/androidx/compose/ActualDesktop.kt b/compose/compose-runtime/src/desktopMain/kotlin/androidx/compose/ActualDesktop.kt
index e9a170d..5d8fb06 100644
--- a/compose/compose-runtime/src/desktopMain/kotlin/androidx/compose/ActualDesktop.kt
+++ b/compose/compose-runtime/src/desktopMain/kotlin/androidx/compose/ActualDesktop.kt
@@ -16,12 +16,10 @@
package androidx.compose
-import androidx.compose.dispatch.MonotonicFrameClock
import javax.swing.JComponent
import javax.swing.SwingUtilities
-import kotlinx.coroutines.CoroutineDispatcher
+import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
actual abstract class EmbeddingUIContext
@@ -132,17 +130,7 @@
keyInfo.clear()
}
-private object MainDispatcherFrameClock : MonotonicFrameClock {
- override suspend fun <R> withFrameNanos(onFrame: (frameTimeNanos: Long) -> R): R =
- withContext(Dispatchers.Main) {
- onFrame(java.lang.System.nanoTime())
- }
-}
-
-internal actual fun mainThreadFrameClock(): MonotonicFrameClock = MainDispatcherFrameClock
-
-internal actual fun mainThreadCompositionDispatcher(): CoroutineDispatcher =
- Dispatchers.Main
+internal actual fun mainThreadCompositionContext(): CoroutineContext = Dispatchers.Main
// TODO(igotti): do we need actual processing for those?
actual annotation class MainThread()
diff --git a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/ActualJvm.kt b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/ActualJvm.kt
index 209ade1..652fc2f 100644
--- a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/ActualJvm.kt
+++ b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/ActualJvm.kt
@@ -18,6 +18,8 @@
import kotlinx.collections.immutable.PersistentMap
import kotlinx.collections.immutable.persistentHashMapOf
+import kotlinx.collections.immutable.PersistentList
+import kotlinx.collections.immutable.persistentListOf
internal actual typealias BitSet = java.util.BitSet
@@ -76,4 +78,34 @@
@Suppress("UNCHECKED_CAST")
internal actual fun <K, V> buildableMapOf(): BuildableMap<K, V> =
- BuildableMap<K, V>(emptyPersistentMap as PersistentMap<K, V>)
+ BuildableMap(emptyPersistentMap as PersistentMap<K, V>)
+
+internal actual class BuildableListBuilder<T>(
+ val builder: PersistentList.Builder<T>
+) : MutableList<T> by builder {
+ actual fun build(): BuildableList<T> {
+ return BuildableList(builder.build())
+ }
+}
+
+internal actual data class BuildableList<T>(val list: PersistentList<T>) : List<T> by list {
+ internal actual fun add(element: T) = BuildableList(list.add(element))
+ internal actual fun add(index: Int, element: T) = BuildableList(list.add(index, element))
+ internal actual fun addAll(elements: Collection<T>) = BuildableList(list.addAll(elements))
+ internal actual fun remove(element: T) = BuildableList(list.remove(element))
+ internal actual fun removeAll(elements: Collection<T>) = BuildableList(list.removeAll(elements))
+ internal actual fun removeAt(index: Int) = BuildableList(list.removeAt(index))
+ internal actual fun set(index: Int, element: T) = BuildableList(list.set(index, element))
+
+ internal actual fun builder(): BuildableListBuilder<T> {
+ return BuildableListBuilder(list.builder())
+ }
+}
+
+private val emptyPersistentList = persistentListOf<Any>()
+private val emptyBuildableList = BuildableList<Any>(emptyPersistentList)
+
+@Suppress("UNCHECKED_CAST")
+internal actual fun <T> buildableListOf(): BuildableList<T> = emptyBuildableList as BuildableList<T>
+
+public actual typealias UnsupportedOperationException = java.lang.UnsupportedOperationException
diff --git a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/FlowAdapter.kt b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/FlowAdapter.kt
index 8b46b06..1ef49eb5 100644
--- a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/FlowAdapter.kt
+++ b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/FlowAdapter.kt
@@ -47,24 +47,6 @@
* would be new value posted into the [Flow] the returned [State] will be updated causing
* recomposition of every [State.value] usage.
*
- * @param context [CoroutineContext] to use for collecting.
- */
-@Deprecated(
- "Either use collectAsState with an explicit initial value, " +
- "or convert your Flow to a StateFlow.",
- ReplaceWith("collectAsState(null, context)")
-)
-@Suppress("NOTHING_TO_INLINE")
-@Composable
-inline fun <T> Flow<T>.collectAsState(
- context: CoroutineContext = Dispatchers.Main
-): State<T?> = collectAsState(null, context)
-
-/**
- * Collects values from this [Flow] and represents its latest value via [State]. Every time there
- * would be new value posted into the [Flow] the returned [State] will be updated causing
- * recomposition of every [State.value] usage.
- *
* @sample androidx.compose.samples.FlowWithInitialSample
*
* @param context [CoroutineContext] to use for collecting.
@@ -78,9 +60,7 @@
onPreCommit(this, context) {
val job = CoroutineScope(context).launch {
collect {
- FrameManager.framed {
- state.value = it
- }
+ state.value = it
}
}
onDispose { job.cancel() }
diff --git a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/internal/ComposableLambdaN.kt b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/internal/ComposableLambdaN.kt
index 6dba142..992e08e 100644
--- a/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/internal/ComposableLambdaN.kt
+++ b/compose/compose-runtime/src/jvmMain/kotlin/androidx/compose/internal/ComposableLambdaN.kt
@@ -39,7 +39,7 @@
fun update(block: Any) {
if (block != this._block) {
if (tracked) {
- FrameManager.recordWrite(this, false)
+ FrameManager.recordWrite(this)
}
this._block = block as FunctionN<*>
}
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/CompositionTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/CompositionTests.kt
index 0a69115..91339d6 100644
--- a/compose/compose-runtime/src/test/kotlin/androidx/compose/CompositionTests.kt
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/CompositionTests.kt
@@ -2379,7 +2379,7 @@
}
}
val recomposer = Recomposer().apply {
- scope.launch { runRecomposeAndApplyChanges(clock) }
+ scope.launch(clock) { runRecomposeAndApplyChanges() }
}
Composer(
SlotTable(),
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/Address.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/Address.kt
deleted file mode 100644
index 2ad011e..0000000
--- a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/Address.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose.frames
-
-class Address(street: String, city: String) : Framed {
- var street: String
- get() = next.readable(this).street
- set(value) { next.writable(this).street = value }
-
- var city: String
- get() = next.readable(this).city
- set(value) { next.writable(this).city = value }
-
- private var next: AddressRecord
-
- init {
- next = AddressRecord()
- next.street = street
- next.city = city
- }
-
- override fun prependFrameRecord(value: Record) {
- value.next = next
- next = value as AddressRecord
- }
-
- override val firstFrameRecord: AddressRecord get() = next
-}
-
-class AddressRecord : AbstractRecord() {
- var street: String = ""
- var city: String = ""
-
- override fun create(): Record = AddressRecord()
- override fun assign(value: Record) {
- val other = value as AddressRecord
- street = other.street
- city = other.city
- }
-}
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FramesTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FramesTests.kt
deleted file mode 100644
index b23144d..0000000
--- a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FramesTests.kt
+++ /dev/null
@@ -1,1273 +0,0 @@
-/*
- * Copyright 2019 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 androidx.compose.frames
-
-import androidx.compose.Stack
-import kotlin.test.Test
-import kotlin.test.assertEquals
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-
-const val OLD_STREET = "123 Any Street"
-const val OLD_CITY = "AnyTown"
-const val NEW_STREET = "456 New Street"
-const val NEW_CITY = "AnyCity"
-
-class FrameTest {
-
- @Test
- fun testCreatingAddress() {
- val address = frame {
- val address = Address(
- OLD_STREET,
- OLD_CITY
- )
- assertEquals(OLD_STREET, address.street)
- assertEquals(OLD_CITY, address.city)
- address
- }
- frame {
- assertEquals(OLD_STREET, address.street)
- assertEquals(OLD_CITY, address.city)
- }
- }
-
- @Test
- fun testModifyingAddress() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- frame {
- address.street = NEW_STREET
- }
- frame {
- assertEquals(NEW_STREET, address.street)
- assertEquals(OLD_CITY, address.city)
- }
- }
-
- @Test
- fun testIsolation() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- val f = suspended {
- address.street = NEW_STREET
- }
- frame {
- assertEquals(OLD_STREET, address.street)
- }
- restored(f) {
- assertEquals(NEW_STREET, address.street)
- }
- frame {
- assertEquals(NEW_STREET, address.street)
- }
- }
-
- @Test
- fun testRecordReuse() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- assertEquals(1, address.firstFrameRecord.length)
- frame { address.street = NEW_STREET }
- assertEquals(2, address.firstFrameRecord.length)
- frame { address.street = "other street" }
- assertEquals(2, address.firstFrameRecord.length)
- }
-
- @Test
- fun testAborted() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- aborted {
- address.street = NEW_STREET
- assertEquals(NEW_STREET, address.street)
- }
- frame {
- assertEquals(OLD_STREET, address.street)
- }
- }
-
- @Test
- fun testReuseAborted() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- assertEquals(1, address.firstFrameRecord.length)
- aborted { address.street = NEW_STREET }
- assertEquals(2, address.firstFrameRecord.length)
- frame { address.street = "other street" }
- assertEquals(2, address.firstFrameRecord.length)
- }
-
- @Test
- fun testCommitAbortInteraction() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- val frame1 = suspended {
- address.street = "From frame1"
- }
- val frame2 = suspended {
- address.street = "From frame2"
- }
-
- // New frames should see the old value
- frame {
- assertEquals(
- OLD_STREET,
- address.street
- )
- }
-
- // Aborting frame2 and committing frame1 should result in frame1
- abortHandler(frame2)
-
- // New frames should still see the old value
- frame {
- assertEquals(
- OLD_STREET,
- address.street
- )
- }
-
- // Commit frame1, new frames should see frame1's value
- commit(frame1)
- frame { assertEquals("From frame1", address.street) }
- }
-
- @Test
- fun testCollisionAB() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- expectThrow<FrameAborted> {
- val frame1 = suspended {
- address.street = "From frame1"
- }
- val frame2 = suspended {
- address.street = "From frame2"
- }
-
- commit(frame1)
-
- // This should throw
- commit(frame2)
- }
-
- // New frames should see the value from the committed frame1
- frame {
- assertEquals("From frame1", address.street)
- }
- }
-
- @Test
- fun testCollisionBA() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- expectThrow<FrameAborted> {
- val frame1 = suspended {
- address.street = "From frame1"
- }
- val frame2 = suspended {
- address.street = "From frame2"
- }
-
- commit(frame2)
-
- // This should throw
- commit(frame1)
- }
-
- // New frames should see the value from the committed frame2
- frame {
- assertEquals("From frame2", address.street)
- }
- }
-
- @Test
- fun testManyChangesInASingleFrame() {
- val changeCount = 1000
- val addresses = frame {
- (0..changeCount).map {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- val frame1 = suspended {
- for (i in 0..changeCount) {
- addresses[i].street = "From index $i"
- }
- for (i in 0..changeCount) {
- assertEquals("From index $i", addresses[i].street)
- }
- }
- frame {
- for (i in 0..changeCount) {
- assertEquals(OLD_STREET, addresses[i].street)
- }
- }
- commit(frame1)
- frame {
- for (i in 0..changeCount) {
- assertEquals("From index $i", addresses[i].street)
- }
- }
- }
-
- @Test
- fun testManySimultaneousFrames() {
- val frameCount = 1000
- val frames = Stack<Frame>()
- val addresses = frame {
- (0..frameCount).map {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- for (i in 0..frameCount) {
- frames.push(suspended { addresses[i].street = "From index $i" })
- }
- for (i in 0..frameCount) {
- commit(frames.pop())
- }
- for (i in 0..frameCount) {
- frame {
- assertEquals(
- "From index $i",
- addresses[i].street
- )
- }
- }
- }
-
- @Test
- fun testRaw() {
- val count = 1000
- val addresses = (0..count).map { AddressRaw(OLD_STREET) }
- for (i in 0..count) {
- addresses[i].street = "From index $i"
- assertEquals("From index $i", addresses[i].street)
- }
- for (i in 0..count) {
- assertEquals("From index $i", addresses[i].street)
- }
- }
-
- @Test
- fun testProp() {
- val count = 10000
- val addresses = (0..count).map { AddressProp(OLD_STREET) }
- for (i in 0..count) {
- addresses[i].street = "From index $i"
- assertEquals("From index $i", addresses[i].street)
- }
- for (i in 0..count) {
- assertEquals("From index $i", addresses[i].street)
- }
- }
-
- @Test
- fun testFrameObserver_ObserveRead_Single() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- var read: Address? = null
- observeFrame({ obj ->
- read = obj as Address
- }) {
- assertEquals(OLD_STREET, address.street)
- }
- assertEquals(address, read)
- }
-
- @Test
- fun testFrameObserver_addReadObserver_Single() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- var read: Address? = null
- var otherRead: Address? = null
- open({ obj -> read = obj as Address })
- try {
- observeAllReads({ obj -> otherRead = obj as Address }) {
- assertEquals(OLD_STREET, address.street)
- }
- } finally {
- commitHandler()
- }
- assertEquals(address, read)
- assertEquals(address, otherRead)
- }
-
- @Test
- fun testFrameObserver_ObserveCommit_Single() {
- val address = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- var committed: Set<Any>? = null
- observeCommit({ framed: Set<Any>, _ -> committed = framed }) {
- frame {
- address.street = NEW_STREET
- }
- }
- assertTrue(committed?.contains(address) ?: false)
- }
-
- @Test
- fun testFrameObserver_OberveRead_Multiple() {
- val addressToRead = frame {
- List(100) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- val addressToIgnore = frame {
- List(100) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- val readAddresses = HashSet<Address>()
- observeFrame({ obj -> readAddresses.add(obj as Address) }) {
- for (address in addressToRead) {
- assertEquals(OLD_STREET, address.street)
- }
- }
- for (address in addressToRead) {
- assertTrue(
- readAddresses.contains(address),
- "Ensure a read callback was called for the address"
- )
- }
- for (address in addressToIgnore) {
- assertFalse(
- readAddresses.contains(address),
- "Ensure a read callback was not called for the address"
- )
- }
- }
-
- @Test
- fun testFrameObserver_ObserveCommit_Multiple() {
- val addressToWrite = frame {
- List(100) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- val addressToIgnore = frame {
- List(100) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- }
- var committedAddresses = null as Set<Any>?
- observeCommit({ framed, _ -> committedAddresses = framed }) {
- frame {
- for (address in addressToWrite) {
- address.street = NEW_STREET
- }
- }
- }
- for (address in addressToWrite) {
- assertTrue(
- committedAddresses?.contains(address) ?: false,
- "Ensure written address is in the set of committed objects"
- )
- }
- for (address in addressToIgnore) {
- assertFalse(
- committedAddresses?.contains(address) ?: false,
- "Ensure ignored addresses are not in the set of committed objects"
- )
- }
- }
-
- @Test
- fun testModelList_Isolated() {
- val addresses = frame {
- modelListOf(*(Array(100) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }))
- }
-
- fun validateOriginal() {
- assertFalse(wasModified(addresses))
- assertEquals(100, addresses.size)
-
- // Iterate list
- for (address in addresses) {
- assertEquals(OLD_STREET, address.street)
- }
- assertFalse(wasModified(addresses))
- }
-
- fun validateNew() {
- assertEquals(101, addresses.size)
-
- // Iterate list
- for (i in 0 until 100) {
- assertEquals(OLD_STREET, addresses[i].street)
- }
-
- assertEquals(NEW_STREET, addresses[100].street)
- }
-
- frame { validateOriginal() }
-
- val frame1 = suspended {
- // Insert into the list
- addresses.add(
- Address(
- NEW_STREET,
- NEW_CITY
- )
- )
-
- validateNew()
- }
-
- frame { validateOriginal() }
-
- restored(frame1) {
- validateNew()
- }
- }
-
- @Test
- fun testModelList_ReadDoesNotModify() {
- val count = 10
- val addresses = frame {
- modelListOf(*(Array(count) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }))
- }
-
- // size should not modify
- frame {
- assertEquals(count, addresses.size)
- assertFalse(wasModified(addresses))
- }
-
- // get should not modify
- frame {
- val address = addresses[0]
- assertEquals(OLD_STREET, address.street)
- assertFalse(wasModified(addresses))
- assertFalse(wasModified(address))
- }
-
- // Iteration should not modify
- frame {
- for (address in addresses) {
- assertEquals(OLD_STREET, address.street)
- assertFalse(wasModified(address))
- }
- assertFalse(wasModified(addresses))
- }
-
- // contains should not modify
- frame {
- val address = addresses[1]
- assertTrue(addresses.contains(address))
- assertFalse(wasModified(addresses))
- }
-
- // containsAll should not modify
- frame {
- val sublist = listOf(addresses[1], addresses[2])
- assertTrue(addresses.containsAll(sublist))
- assertFalse(wasModified(addresses))
- }
-
- // indexOf of should not modify
- frame {
- val address = addresses[5]
- assertEquals(5, addresses.indexOf(address))
- assertFalse(wasModified(addresses))
- }
-
- // IsEmpty should not modify
- frame {
- assertFalse(addresses.isEmpty())
- assertTrue(addresses.isNotEmpty())
- assertFalse(wasModified(addresses))
- }
-
- // lastIndexOf should not modify
- frame {
- val address = addresses[5]
- assertEquals(5, addresses.lastIndexOf(address))
- assertFalse(wasModified(addresses))
- }
-
- // listIterator should not modify
- frame {
- for (address in addresses.listIterator()) {
- assertEquals(OLD_STREET, address.street)
- }
- assertFalse(wasModified(addresses))
- for (address in addresses.listIterator(5)) {
- assertEquals(OLD_STREET, address.street)
- }
- assertFalse(wasModified(addresses))
- }
- }
-
- @Test
- fun testModelList_IterableList_Mutate() {
- val count = 10
- fun streetOf(index: Int) = "$OLD_STREET, Apt #$index"
- fun initial(index: Int) = Address(
- street = streetOf(index),
- city = OLD_CITY
- )
- fun initializer() = Array(count) { initial(it) }
- val addresses = frame {
- modelListOf(*initializer())
- }
-
- fun mutate(
- index: Int = 0,
- skip: Int = 1,
- block: (iterator: MutableListIterator<Address>) -> Unit
- ) {
- aborted {
- // Perform the action on a model list
- val iterator = addresses.listIterator(index)
-
- repeat(skip) {
- assertTrue(iterator.hasNext())
- iterator.next()
- }
-
- assertFalse(wasModified(addresses))
- block(iterator)
- assertTrue(wasModified(addresses))
-
- // Perform the action on an array list
- val normalList = ArrayList<Address>().apply {
- repeat(count) {
- this.add(initial(it))
- }
- }
- val normalIterator = normalList.listIterator(index)
- repeat(skip) {
- assertTrue(normalIterator.hasNext())
- normalIterator.next()
- }
- block(normalIterator)
-
- // Asset the lists are the same
- assertEquals(normalList.size, addresses.size)
- addresses.forEachIndexed { index, address ->
- assertEquals(address.street, normalList[index].street)
- assertEquals(address.city, normalList[index].city)
- }
- }
-
- frame {
- assertEquals(addresses.size, count)
- addresses.forEachIndexed { index, address ->
- assertEquals(streetOf(index), address.street)
- assertEquals(OLD_CITY, address.city)
- }
- }
- }
-
- fun validate(block: (iterator: MutableListIterator<Address>) -> Unit) {
- mutate(block = block)
- mutate(skip = 3, block = block)
- mutate(index = 4, block = block)
- mutate(index = 2, skip = 3, block = block)
- }
-
- validate {
- it.remove()
- }
-
- // Expect listIterator.set to throw
- validate {
- it.set(
- Address(
- NEW_STREET,
- NEW_CITY
- )
- )
- }
-
- // Expect listIterator.add to throw
- validate {
- it.add(
- Address(
- NEW_STREET,
- NEW_CITY
- )
- )
- }
-
- mutate(index = 5) {
- it.previous()
- it.previous()
- it.previous()
- it.next()
- it.add(Address(NEW_STREET, NEW_CITY))
- }
- }
-
- @Test
- fun testModelList_MutateAcrossThreadThrows() {
- val count = 10
- val addresses = frame {
- modelListOf(*(Array(count) {
- Address(
- street = "$OLD_STREET Apt#$it",
- city = OLD_CITY
- )
- }))
- }
-
- val iterator = frame {
- addresses.listIterator().apply { next() }
- }
-
- frame {
- expectError {
- iterator.remove()
- }
- }
- }
-
- @Test
- fun testModelList_MutatingModifies() {
- val count = 10
- val addresses = frame {
- modelListOf(*(Array(count) {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }))
- }
-
- fun validate(block: () -> Unit) {
- aborted {
- assertFalse(wasModified(addresses))
- block()
- assertTrue(wasModified(addresses))
- }
- frame {
- assertEquals(addresses.size, count)
- for (address in addresses) {
- assertEquals(address.street, OLD_STREET)
- assertEquals(address.city, OLD_CITY)
- }
- }
- }
-
- // Expect add to modify
- validate { addresses.add(
- Address(
- NEW_STREET,
- OLD_CITY
- )
- ) }
- validate { addresses.add(5,
- Address(
- NEW_STREET,
- OLD_CITY
- )
- ) }
-
- // Expect addAll to modify
- validate {
- addresses.addAll(listOf(
- Address(
- NEW_STREET,
- NEW_CITY
- ),
- Address(
- NEW_STREET,
- NEW_CITY
- )
- ))
- }
- validate {
- addresses.addAll(
- 5,
- listOf(
- Address(
- NEW_STREET,
- NEW_CITY
- ),
- Address(
- NEW_STREET,
- NEW_CITY
- )
- )
- )
- }
-
- // Expect clear to modify
- validate { addresses.clear() }
-
- // Expect remove to modify
- validate {
- val address = addresses[5]
- addresses.remove(address)
- }
-
- // Expect removeAll to modify
- validate { addresses.removeAll(listOf(addresses[5], addresses[6])) }
-
- // Expect removeAt to modify
- validate { addresses.removeAt(5) }
-
- // Expect retainAll to modify
- validate { addresses.retainAll(listOf(addresses[5], addresses[6])) }
-
- // Expect set to modify
- validate { addresses[5] = Address(
- NEW_STREET,
- NEW_CITY
- )
- }
-
- // Expect subList to modify
- validate { addresses.subList(5, 6) }
- }
-
- @Test
- fun testModelList_SingletonList() {
- val numbers = frame {
- modelListOf(1)
- }
-
- frame {
- // Modify one of the members
- numbers[0] = numbers[0] * 10
- }
-
- frame {
- assertEquals(numbers[0], 10)
- }
- }
-
- @Test
- fun testModelList_MutableIterator() {
- val numbers = frame {
- modelListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- }
-
- frame {
- val iterator = numbers.iterator()
- while (iterator.hasNext()) {
- val current = iterator.next()
- if (current % 2 == 0) {
- iterator.remove()
- }
- }
- }
-
- frame {
- for (i in numbers) {
- assertTrue(i and 1 == 1)
- }
- }
- }
-
- @Test
- fun testModelMap_Isolated() {
- val map = frame {
- modelMapOf(
- 1 to "a",
- 2 to "b",
- 3 to "c",
- 4 to "d"
- )
- }
-
- fun validateOld() {
- assertEquals(4, map.size)
- assertTrue(map.contains(1))
- assertTrue(map.contains(2))
- assertTrue(map.contains(3))
- assertTrue(map.contains(4))
- assertEquals(map[1], "a")
- assertEquals(map[2], "b")
- assertEquals(map[3], "c")
- assertEquals(map[4], "d")
- }
-
- fun validateNew() {
- assertEquals(5, map.size)
- assertTrue(map.contains(1))
- assertTrue(map.contains(2))
- assertTrue(map.contains(3))
- assertTrue(map.contains(4))
- assertTrue(map.contains(5))
- assertEquals(map[1], "a")
- assertEquals(map[2], "b")
- assertEquals(map[3], "c")
- assertEquals(map[4], "d")
- assertEquals(map[5], "e")
- }
-
- frame { validateOld() }
-
- val frame1 = suspended {
- validateOld()
-
- map[5] = "e"
-
- validateNew()
- }
-
- frame { validateOld() }
- restored(frame1) { validateNew() }
- frame { validateNew() }
- }
-
- @Test
- @Suppress("USELESS_IS_CHECK")
- fun testModelMap_ReadingDoesntModify() {
- val map = frame {
- modelMapOf(
- 1 to "a",
- 2 to "b",
- 3 to "c",
- 4 to "d"
- )
- }
-
- fun validateOld() {
- assertEquals(4, map.size)
- assertTrue(map.contains(1))
- assertTrue(map.contains(2))
- assertTrue(map.contains(3))
- assertTrue(map.contains(4))
- assertEquals(map[1], "a")
- assertEquals(map[2], "b")
- assertEquals(map[3], "c")
- assertEquals(map[4], "d")
- }
-
- fun validate(block: () -> Unit) {
- frame {
- validateOld()
- block()
- assertFalse(wasModified(map))
- validateOld()
- }
- }
-
- // size should not modify
- validate { assertEquals(4, map.size) }
-
- // contains should not modify
- validate { assertTrue(map.contains(1)) }
-
- // containsKey should not modify
- validate { assertTrue(map.containsKey(1)) }
-
- // containsValue should not modify
- validate { assertTrue(map.containsValue("a")) }
-
- // get should not modify
- validate { assertEquals("a", map[1]) }
-
- // isEmpty should not modify
- validate { assertFalse(map.isEmpty()) }
- validate { assertTrue(map.isNotEmpty()) }
-
- // iterating entries should not modify
- validate {
- for (entry in map) {
- assertTrue(entry.value is String)
- assertTrue(entry.key is Int)
- }
- for (entry in map.entries) {
- assertTrue(entry.value is String)
- assertTrue(entry.key is Int)
- }
- }
-
- // iterating keys should not modify
- validate {
- for (key in map.keys) {
- assertTrue(key is Int)
- }
- }
-
- // iterating values should not modify
- validate {
- for (value in map.values) {
- assertTrue(value is String)
- }
- }
- }
-
- @Test
- fun testModelMap_Mutation() {
- val map = frame {
- modelMapOf(
- 1 to "a",
- 2 to "b",
- 3 to "c",
- 4 to "d"
- )
- }
-
- fun validateOld() {
- assertEquals(4, map.size)
- assertTrue(map.contains(1))
- assertTrue(map.contains(2))
- assertTrue(map.contains(3))
- assertTrue(map.contains(4))
- assertEquals(map[1], "a")
- assertEquals(map[2], "b")
- assertEquals(map[3], "c")
- assertEquals(map[4], "d")
- }
-
- fun validate(block: () -> Unit) {
- aborted {
- assertFalse(wasModified(map))
- validateOld()
- block()
- assertTrue(wasModified(map))
- }
- }
-
- // clear should modify
- validate { map.clear() }
-
- // put should modify
- validate { map[5] = "e" }
-
- // putAll should modify
- validate { map.putAll(mapOf(5 to "e", 6 to "f")) }
-
- // remove should modify
- validate { map.remove(3) }
- }
-
- @Test
- fun testModelMap_MutateThrows() {
- val map = frame {
- modelMapOf(
- 1 to "a",
- 2 to "b",
- 3 to "c",
- 4 to "d"
- )
- }
-
- fun validateOld() {
- assertEquals(4, map.size)
- assertTrue(map.contains(1))
- assertTrue(map.contains(2))
- assertTrue(map.contains(3))
- assertTrue(map.contains(4))
- assertEquals(map[1], "a")
- assertEquals(map[2], "b")
- assertEquals(map[3], "c")
- assertEquals(map[4], "d")
- }
-
- fun validate(block: () -> Unit) {
- frame {
- assertFalse(wasModified(map))
- validateOld()
- expectError {
- block()
- }
- assertFalse(wasModified(map))
- }
- }
-
- // Expect mutating through entries to throw
- validate { map.entries.add(map.entries.first()) }
- validate {
- map.entries.addAll(listOf(map.entries.first(), map.entries.drop(1).first()))
- }
- validate { map.entries.clear() }
- validate { map.entries.remove(map.entries.first()) }
- validate {
- map.entries.removeAll(listOf(map.entries.first(), map.entries.drop(1).first()))
- }
- validate {
- map.entries.retainAll(listOf(map.entries.first(), map.entries.drop(1).first()))
- }
- validate {
- val iterator = map.entries.iterator()
- iterator.next()
- iterator.remove()
- }
-
- // Expect mutating through keys to throw
- validate { map.keys.add(map.keys.first()) }
- validate { map.keys.addAll(listOf(map.keys.first(), map.keys.drop(1).first())) }
- validate { map.keys.clear() }
- validate { map.keys.remove(map.keys.first()) }
- validate { map.keys.removeAll(listOf(map.keys.first(), map.keys.drop(1).first())) }
- validate { map.keys.retainAll(listOf(map.keys.first(), map.keys.drop(1).first())) }
- validate {
- val iterator = map.keys.iterator()
- iterator.next()
- iterator.remove()
- }
-
- // Expect mutating through values to throw
- validate { map.values.add(map.values.first()) }
- validate { map.values.addAll(listOf(map.values.first(), map.values.drop(1).first())) }
- validate { map.values.clear() }
- validate { map.values.remove(map.values.first()) }
- validate {
- map.values.removeAll(listOf(map.values.first(), map.values.drop(1).first()))
- }
- validate {
- map.values.retainAll(listOf(map.values.first(), map.values.drop(1).first()))
- }
- validate {
- val iterator = map.values.iterator()
- iterator.next()
- iterator.remove()
- }
- }
-
- @Test
- fun testGlobalReadObserverSurvivesFrameSwitch() {
- val address1 = frame {
- Address(
- OLD_STREET,
- OLD_CITY
- )
- }
- val address2 = frame {
- Address(
- NEW_STREET,
- NEW_CITY
- )
- }
- val address3 = frame {
- Address(
- OLD_STREET,
- NEW_CITY
- )
- }
- val readAddresses = HashSet<Address>()
-
- observeAllReads({ readAddresses.add(it as Address) }) {
- frame {
- // read 1
- address1.city
- }
- frame {
- // read 2
- address2.city
- }
- }
- frame {
- // read 3 outside of observeReads
- address3.city
- }
-
- assertTrue(readAddresses.contains(address1))
- assertTrue(readAddresses.contains(address2))
- assertFalse(readAddresses.contains(address3))
- }
-}
-
-fun expectError(block: () -> Unit) {
- var thrown = false
- try {
- block()
- } catch (e: IllegalStateException) {
- thrown = true
- }
- assertTrue(thrown)
-}
-
-// Helpers for the above tests
-
-inline fun <T> frame(crossinline block: () -> T): T {
- open(false)
- try {
- return block()
- } catch (e: Exception) {
- abortHandler()
- throw e
- } finally {
- commitHandler()
- }
-}
-
-inline fun <T> observeFrame(noinline observer: FrameReadObserver, crossinline block: () -> T): T {
- open(observer)
- try {
- return block()
- } catch (e: Exception) {
- abortHandler()
- throw e
- } finally {
- commitHandler()
- }
-}
-
-inline fun <T> observeCommit(
- noinline observer: FrameCommitObserver,
- crossinline block: () -> T
-): T {
- val unregister = registerCommitObserver(observer)
- try {
- return block()
- } finally {
- unregister()
- }
-}
-
-inline fun suspended(crossinline block: () -> Unit): Frame {
- open(false)
- try {
- block()
- return suspend()
- } catch (e: Exception) {
- abortHandler()
- throw e
- }
-}
-
-inline fun <T> restored(frame: Frame, crossinline block: () -> T): T {
- restore(frame)
- try {
- return block()
- } catch (e: Exception) {
- abortHandler()
- throw e
- } finally {
- commitHandler()
- }
-}
-
-inline fun aborted(crossinline block: () -> Unit) {
- open(false)
- try {
- block()
- } finally {
- abortHandler()
- }
-}
-
-inline fun <reified T : Throwable> expectThrow(
- crossinline block: () -> Unit
-) {
- var thrown = false
- try {
- block()
- } catch (e: Throwable) {
- assertTrue(e is T)
- thrown = true
- }
- assertTrue(thrown)
-}
-
-val Record.length: Int
- get() {
- var current: Record? = this
- var len = 0
- while (current != null) {
- len++
- current = current.next
- }
- return len
- }
-
-class AddressRaw(var street: String)
-
-class AddressProp(streetValue: String) {
- var _street = streetValue
-
- var street: String
- get() = _street
- set(value) { _street = value }
-}
-
-// Provide an implemtation of java.util.Collection.removeIf for common target
-fun <T> MutableIterable<T>.removeIf(predicate: (T) -> Boolean) {
- val iterator = this.iterator()
- while (iterator.hasNext()) {
- val value = iterator.next()
- if (predicate(value)) iterator.remove()
- }
-}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FrameIdSetTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotIdSetTests.kt
similarity index 93%
rename from compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FrameIdSetTests.kt
rename to compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotIdSetTests.kt
index cbe997b..a33b3cd 100644
--- a/compose/compose-runtime/src/test/kotlin/androidx/compose/frames/FrameIdSetTests.kt
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotIdSetTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 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.
@@ -7,14 +7,14 @@
*
* http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed:in writing, software
+ * 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 androidx.compose.frames
+package androidx.compose.snapshots
import java.util.BitSet
import kotlin.random.Random
@@ -22,11 +22,10 @@
import kotlin.test.assertEquals
import kotlin.test.assertTrue
-class FrameIdSetTests {
-
+class SnapshotIdSetTests {
@Test
fun emptySetShouldBeEmpty() {
- val empty = FrameIdSet.EMPTY
+ val empty = SnapshotIdSet.EMPTY
repeat(1000) {
empty.shouldBe(it, false)
@@ -36,7 +35,7 @@
@Test
fun shouldBeAbleToSetItems() {
val times = 10000
- val set = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val set = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
prev.set(index)
}
@@ -48,7 +47,7 @@
@Test
fun shouldBeAbleToSetOnlyEven() {
val times = 10000
- val set = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val set = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
if (index % 2 == 0) prev.set(index) else prev
}
@@ -60,7 +59,7 @@
@Test
fun shouldBeAbleToSetOnlyOdds() {
val times = 10000
- val set = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val set = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
if (index % 2 == 1) prev.set(index) else prev
}
@@ -72,7 +71,7 @@
@Test
fun shouldBeAbleToClearEvens() {
val times = 10000
- val allSet = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val allSet = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
prev.set(index)
}
@@ -88,7 +87,7 @@
@Test
fun shouldBeAbleToCrawlSet() {
val times = 10000
- val set = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val set = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
prev.clear(index - 1).set(index)
}
@@ -101,7 +100,7 @@
@Test
fun shouldBeAbleToCrawlAndClear() {
val times = 10000
- val set = (0..times).fold(FrameIdSet.EMPTY) { prev, index ->
+ val set = (0..times).fold(SnapshotIdSet.EMPTY) { prev, index ->
prev.let {
if ((index - 1) % 33 != 0) it.clear(index - 1) else it
}.set(index)
@@ -114,7 +113,7 @@
set.shouldBe(it, it % 33 == 0)
}
- val newSet = (0..times - 1).fold(set) { prev, index ->
+ val newSet = (0 until times).fold(set) { prev, index ->
prev.clear(index)
}
@@ -127,7 +126,7 @@
@Test
fun shouldBeAbleToInsertAndRemoveOutOfOptimalRange() {
- FrameIdSet.EMPTY
+ SnapshotIdSet.EMPTY
.set(1000)
.set(1)
.shouldBe(1000, true)
@@ -151,7 +150,7 @@
fun shouldMatchBitSet() {
val random = Random(10)
val bitSet = BitSet()
- val set = (0..100).fold(FrameIdSet.EMPTY) { prev, _ ->
+ val set = (0..100).fold(SnapshotIdSet.EMPTY) { prev, _ ->
val value = random.nextInt(0, 1000)
bitSet.set(value)
prev.set(value)
@@ -168,6 +167,111 @@
}
}
+ @Test
+ fun shouldBeAbleToAndNotBits() {
+ val random = Random(11)
+ val bitSetA = BitSet()
+ val setA = (0..100).fold(SnapshotIdSet.EMPTY) { prev, _ ->
+ val value = random.nextInt(0, 1000)
+ bitSetA.set(value)
+ prev.set(value)
+ }
+
+ val bitSetB = BitSet()
+ val setB = (0..100).fold(SnapshotIdSet.EMPTY) { prev, _ ->
+ val value = random.nextInt(0, 1000)
+ bitSetB.set(value)
+ prev.set(value)
+ }
+
+ val set = setA.andNot(setB)
+ bitSetA.andNot(bitSetB)
+ repeat(1000) {
+ set.shouldBe(it, bitSetA[it])
+ }
+ }
+
+ @Test
+ fun shouldBeAbleToAndNot() {
+ fun test(size: Int) {
+ val random = Random(size)
+ val bitSet = BitSet()
+ val setA = (0 until size).fold(SnapshotIdSet.EMPTY) { prev, index ->
+ if (random.nextInt(0, 1000) > 500) {
+ bitSet.set(index)
+ prev.set(index)
+ } else prev
+ }
+ val setB = (0 until size).fold(SnapshotIdSet.EMPTY) { prev, index ->
+ if (random.nextInt(0, 1000) > 500) {
+ bitSet.clear(index)
+ prev.set(index)
+ } else prev
+ }
+ val set = setA.andNot(setB)
+ repeat(size) {
+ set.shouldBe(it, bitSet[it])
+ }
+ }
+ test(32)
+ test(64)
+ test(128)
+ test(512)
+ test(1024)
+ }
+
+ @Test
+ fun shouldBeAbleToOr() {
+ fun test(size: Int) {
+ val random = Random(size)
+ val bitSet = BitSet()
+ val setA = (0 until size).fold(SnapshotIdSet.EMPTY) { prev, index ->
+ if (random.nextInt(0, 1000) > 500) {
+ bitSet.set(index)
+ prev.set(index)
+ } else prev
+ }
+ val setB = (0 until size).fold(SnapshotIdSet.EMPTY) { prev, index ->
+ if (random.nextInt(0, 1000) > 500) {
+ bitSet.set(index)
+ prev.set(index)
+ } else prev
+ }
+ val set = setA.or(setB)
+ repeat(size) {
+ set.shouldBe(it, bitSet[it])
+ }
+ }
+ test(32)
+ test(64)
+ test(128)
+ test(512)
+ test(1024)
+ }
+
+ @Test
+ fun shouldBeAbleToIterate() {
+ fun test(size: Int) {
+ val random = Random(size)
+ val values = mutableListOf<Int>()
+ val set = (0 until size).fold(SnapshotIdSet.EMPTY) { prev, index ->
+ if (random.nextInt(0, 1000) > 500) {
+ values.add(index)
+ prev.set(index)
+ } else prev
+ }
+ values.zip(set).forEach {
+ assertEquals(it.first, it.second)
+ }
+ assertEquals(values.size, set.count())
+ }
+
+ test(64)
+ test(128)
+ test(512)
+ test(1024)
+ }
+
@Test // Regression: b/147836978
fun shouldValidWhenSetIsLarge() {
val data = """
@@ -5526,7 +5630,7 @@
it[0].toInt() to it[1].toBoolean()
}
}
- operations.fold(FrameIdSet.EMPTY) { prev, (value, op) ->
+ operations.fold(SnapshotIdSet.EMPTY) { prev, (value, op) ->
assertTrue(prev.get(value) != op, "Error on bit $value, expected ${!op}, received $op")
val result = if (op) prev.set(value) else prev.clear(value)
result
@@ -5534,7 +5638,7 @@
}
}
-private fun FrameIdSet.shouldBe(index: Int, value: Boolean): FrameIdSet {
+private fun SnapshotIdSet.shouldBe(index: Int, value: Boolean): SnapshotIdSet {
assertEquals(value, get(index), "Bit $index should be $value")
return this
}
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateListTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateListTests.kt
new file mode 100644
index 0000000..ddc98da
--- /dev/null
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateListTests.kt
@@ -0,0 +1,540 @@
+/*
+ * Copyright 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 androidx.compose.snapshots
+
+import java.lang.IllegalStateException
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.mutableStateListOf
+
+class SnapshotStateListTests {
+ @Test
+ fun canCreateAStateList() {
+ mutableStateListOf<Any>()
+ }
+
+ @Test
+ fun canCreateAStateListOfInts() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ list.forEachIndexed { index, item ->
+ assertEquals(index, item)
+ }
+ }
+
+ @Test
+ fun validateSize() {
+ val list = mutableStateListOf(0, 1, 2, 3)
+ assertEquals(4, list.size)
+ }
+
+ @Test
+ fun validateContains() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ (0..4).forEach {
+ assertTrue(list.contains(it))
+ }
+ assertFalse(list.contains(5))
+ }
+
+ @Test
+ fun validateContainsAll() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ assertTrue(list.containsAll(listOf(1, 2, 3)))
+ assertFalse(list.containsAll(listOf(0, 2, 3, 5)))
+ }
+
+ @Test
+ fun validateGet() {
+ val list = mutableStateListOf(0, 1, 2, 3)
+ (0..3).forEach { assertEquals(it, list[it]) }
+ }
+
+ @Test(expected = IndexOutOfBoundsException::class)
+ fun validateGet_IndexOutOfBound() {
+ val list = mutableStateListOf(0, 1, 2, 3)
+ list[4]
+ }
+
+ @Test
+ fun validateIsEmpty() {
+ val list = mutableStateListOf(0, 1, 2)
+ assertFalse(list.isEmpty())
+ val emptyList = mutableStateListOf<Any>()
+ assertTrue(emptyList.isEmpty())
+ }
+
+ @Test
+ fun validateIterator() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ var expected = 0
+ for (item in list) {
+ assertEquals(expected++, item)
+ }
+ assertEquals(5, expected)
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun validateIterator_remove() {
+ validate(mutableStateListOf(0, 1, 2, 3, 4)) { normalList ->
+ val iterator = normalList.iterator()
+ iterator.next()
+ iterator.next()
+ iterator.remove()
+ iterator.remove()
+ iterator.next()
+ iterator.remove()
+ }
+ }
+
+ @Test
+ fun validateLastIndexOf() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 0, 1, 2, 3, 4)
+ (0..4).forEach {
+ assertEquals(it + 5, list.lastIndexOf(it))
+ }
+ }
+
+ @Test
+ fun validateListIterator() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ val iterator = list.listIterator()
+ repeat(list.size) {
+ assertTrue(iterator.hasNext())
+ assertEquals(it, list[iterator.nextIndex()])
+ assertEquals(it, iterator.next())
+ }
+ assertFalse(iterator.hasNext())
+ repeat(list.size) {
+ assertTrue(iterator.hasPrevious())
+ assertEquals(list.size - it - 1, list[iterator.previousIndex()])
+ assertEquals(list.size - it - 1, iterator.previous())
+ }
+ assertFalse(iterator.hasPrevious())
+ }
+
+ @Test
+ fun validateListIterator_add() {
+ validate(mutableStateListOf(0, 1, 2, 3, 4, 5, 6)) { list ->
+ val iterator = list.listIterator()
+ iterator.next()
+ iterator.next()
+ iterator.add(100)
+ iterator.add(101)
+ iterator.next()
+ iterator.add(102)
+ iterator.previous()
+ iterator.previous()
+ iterator.add(103)
+ }
+ }
+
+ @Test
+ fun validateListIterator_mutationError_set() {
+ validate(mutableStateListOf(0, 1, 2, 3, 4)) { list ->
+ val iterator = list.listIterator()
+ iterator.next()
+ iterator.set(100)
+ iterator.next()
+ iterator.next()
+ iterator.set(101)
+ }
+ }
+
+ @Test
+ fun validateListIterator_index() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5)
+ val iterator = list.listIterator(3)
+ repeat(3) {
+ assertTrue(iterator.hasNext())
+ assertEquals(it + 3, iterator.next())
+ }
+ assertFalse(iterator.hasNext())
+ }
+
+ @Test
+ fun validate_subList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = listOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ val normalSubList = normalList.subList(2, 5)
+ expected(normalSubList, subList)
+ }
+
+ @Test
+ fun validate_subList_contains() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ assertFalse(subList.contains(0))
+ assertFalse(subList.contains(1))
+ assertTrue(subList.contains(2))
+ assertTrue(subList.contains(3))
+ assertTrue(subList.contains(4))
+ assertFalse(subList.contains(5))
+ assertFalse(subList.contains(6))
+ }
+
+ @Test
+ fun validate_subList_containsAll() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ assertTrue(subList.containsAll(listOf(2, 3, 4)))
+ assertFalse(subList.containsAll(listOf(2, 3, 4, 5)))
+ }
+
+ @Test
+ fun validate_subList_get() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ repeat(3) { assertEquals(it + 2, subList[it]) }
+ }
+
+ @Test(java.lang.IndexOutOfBoundsException::class)
+ fun validate_subList_get_outOfRange() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ subList[4]
+ }
+
+ @Test
+ fun validate_subList_indexOf() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList = list.subList(2, 5)
+ repeat(subList.size) {
+ assertEquals(it, subList.indexOf(it + 2))
+ }
+ assertEquals(-1, subList.indexOf(0))
+ assertEquals(-1, subList.indexOf(5))
+ }
+
+ @Test
+ fun validate_subList_add() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.add(100)
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.add(100)
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_add_index() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.add(1, 100)
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.add(1, 100)
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_addAll() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.addAll(listOf(100, 101, 102))
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.addAll(listOf(100, 101, 102))
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_addAll_index() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.addAll(1, listOf(100, 101, 102))
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.addAll(1, listOf(100, 101, 102))
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_clear() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.clear()
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.clear()
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_listIterator() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ val subList = list.subList(1, 4)
+ val iterator = subList.listIterator()
+ repeat(subList.size) {
+ assertTrue(iterator.hasNext())
+ assertEquals(it + 1, subList[iterator.nextIndex()])
+ assertEquals(it + 1, iterator.next())
+ }
+ assertFalse(iterator.hasNext())
+ repeat(subList.size) {
+ assertTrue(iterator.hasPrevious())
+ val expectedIndex = subList.size - it - 1
+ assertEquals(expectedIndex + 1, subList[iterator.previousIndex()])
+ assertEquals(expectedIndex + 1, iterator.previous())
+ }
+ assertFalse(iterator.hasPrevious())
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun validate_subList_listIterator_add() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ val subList = list.subList(1, 4)
+ val iterator = subList.listIterator()
+ iterator.next()
+ iterator.add(1)
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun validate_subList_listIterator_remove() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ val subList = list.subList(1, 4)
+ val iterator = subList.listIterator()
+ iterator.next()
+ iterator.remove()
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun validate_subList_listIterator_set() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4)
+ val subList = list.subList(1, 4)
+ val iterator = subList.listIterator()
+ iterator.next()
+ iterator.set(1)
+ }
+
+ @Test
+ fun validate_subList_remove() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.remove(3)
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.remove(3)
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_removeAll() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.removeAll(listOf(2, 3))
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.removeAll(listOf(2, 3))
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_removeAt() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(2, 5)
+ subList.removeAt(1)
+ val normalSubList = normalList.subList(2, 5)
+ normalSubList.removeAt(1)
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_retainAll() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(1, 6)
+ subList.retainAll(listOf(2, 4, 6, 8))
+ val normalSubList = normalList.subList(1, 6)
+ normalSubList.retainAll(listOf(2, 4, 6, 8))
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_set() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(1, 6)
+ subList[1] = 100
+ val normalSubList = normalList.subList(1, 6)
+ normalSubList[1] = 100
+
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun validate_subList_subList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+
+ val subList = list.subList(1, 6)
+ val subListSubList = subList.subList(1, 3)
+ val normalSubList = normalList.subList(1, 6)
+ val normalSubListSubList = normalSubList.subList(1, 3)
+
+ expected(normalSubListSubList, subListSubList)
+ expected(normalSubList, subList)
+ expected(normalList, list)
+ }
+
+ @Test(expected = ConcurrentModificationException::class)
+ fun validate_subList_concurrentChanges() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val subList1 = list.subList(1, 6)
+ val subList2 = list.subList(1, 6)
+ subList1.remove(3)
+ subList2.remove(4)
+ }
+
+ @Test
+ fun validate_indexOf() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6, 7)
+ (0..7).forEach { assertEquals(it, list.indexOf(it)) }
+ assertEquals(-1, list.indexOf(10))
+ }
+
+ @Test
+ fun canModifyAStateList_add() {
+ val list = mutableStateListOf(0, 1, 2)
+ list.add(3)
+ assertEquals(4, list.size)
+ list.forEachIndexed { index, item ->
+ assertEquals(index, item)
+ }
+ }
+
+ @Test
+ fun canModifyAStateList_addIndex() {
+ val list = mutableStateListOf(0, 1, 2)
+ list.add(0, 3)
+ assertEquals(4, list.size)
+ assertEquals(3, list[0])
+ }
+
+ @Test
+ fun canRemoveFromAStateList() {
+ val list = mutableStateListOf(0, 1, 2)
+ list.remove(1)
+ assertEquals(2, list.size)
+ assertEquals(0, list[0])
+ assertEquals(2, list[1])
+ }
+
+ @Test
+ fun canRemoveAllFromAStateList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5)
+ list.removeAll(listOf(2, 4))
+ normalList.removeAll(listOf(2, 4))
+ expected(normalList, list)
+ }
+
+ @Test
+ fun canRemoveAtFromAStateList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5)
+ list.removeAt(2)
+ normalList.removeAt(2)
+ expected(normalList, list)
+ }
+
+ @Test
+ fun canRetainAllOfAStateList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+ list.retainAll(listOf(2, 4, 6, 8))
+ normalList.retainAll(listOf(2, 4, 6, 8))
+ expected(normalList, list)
+ }
+
+ @Test
+ fun canSetAnElementOfAStateList() {
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val normalList = mutableListOf(0, 1, 2, 3, 4, 5, 6)
+ list[2] = 100
+ normalList[2] = 100
+ expected(normalList, list)
+ }
+
+ @OptIn(ExperimentalComposeApi::class)
+ @Test
+ fun stateListsCanBeSnapshot() {
+ val original = listOf(0, 1, 2, 3, 4, 5, 6)
+ val mutableList = original.toMutableList()
+ val list = mutableStateListOf(0, 1, 2, 3, 4, 5, 6)
+ val snapshot = takeSnapshot()
+ try {
+ list[1] = 100
+ mutableList[1] = 100
+ expected(mutableList, list)
+ snapshot.enter {
+ expected(original, list)
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ expected(mutableList, list)
+ }
+
+ private fun <T> validate(list: MutableList<T>, block: (list: MutableList<T>) -> Unit) {
+ val normalList = list.toMutableList()
+ block(normalList)
+ block(list)
+ expected(normalList, list)
+ }
+
+ private fun <T> expected(expected: List<T>, actual: List<T>) {
+ assertEquals(expected.size, actual.size)
+ (0 until expected.size).forEach {
+ assertEquals(expected[it], actual[it])
+ }
+ }
+}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateMapTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateMapTests.kt
new file mode 100644
index 0000000..1b79b54
--- /dev/null
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateMapTests.kt
@@ -0,0 +1,505 @@
+/*
+ * Copyright 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 androidx.compose.snapshots
+
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.StableMutableMap
+import androidx.compose.mutableStateMapOf
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+
+class SnapshotStateMapTests {
+ @Test
+ fun canCreateAnMapEmpty() {
+ mutableStateMapOf<Int, Float>()
+ }
+
+ @Test
+ fun canCreateAnInitializedMap() {
+ mutableStateMapOf(1 to 1f, 2 to 2f, 3 to 3f)
+ }
+
+ @Test
+ fun validateSize() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.size, map.size)
+ }
+ }
+
+ @Test
+ fun validateContainsKey() {
+ validateRead { map, normalMap ->
+ for (value in listOf(1, 2, 3, 100, 200)) {
+ assertEquals(normalMap.containsKey(value), map.containsKey(value))
+ }
+ }
+ }
+
+ @Test
+ fun validate_containsValue() {
+ validateRead { map, normalMap ->
+ for (value in listOf(1f, 2f, 3f, 100f, 200f)) {
+ assertEquals(normalMap.containsValue(value), map.containsValue(value))
+ }
+ }
+ }
+
+ @Test
+ fun validateGet() {
+ validateRead { map, normalMap ->
+ for (entry in normalMap) {
+ assertEquals(entry.value, map[entry.key])
+ }
+ assertEquals(normalMap[100], map[100])
+ }
+ }
+
+ @Test
+ fun validateIsEmpty() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.isEmpty(), map.isEmpty())
+ }
+ validateRead(mutableStateMapOf()) { map, normalMap ->
+ assertEquals(normalMap.isEmpty(), map.isEmpty())
+ }
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapEntriesAdd() {
+ val map = defaultMap().toMutableMap()
+ val entriesToAdd = mutableMapOf(100 to 100f)
+ map.entries.add(entriesToAdd.entries.first())
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateEntriesAdd() {
+ val map = defaultMap()
+ val entriesToAdd = mutableMapOf(100 to 100f)
+ map.entries.add(entriesToAdd.entries.first())
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapEntriesAddAll() {
+ val map = defaultMap().toMutableMap()
+ val entriesToAdd = mutableMapOf(100 to 100f, 200 to 200f)
+ map.entries.addAll(entriesToAdd.entries)
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateEntriesAddAll() {
+ val map = defaultMap()
+ val entriesToAdd = mutableMapOf(100 to 100f, 200 to 200f)
+ map.entries.addAll(entriesToAdd.entries)
+ }
+
+ @Test
+ fun validateEntriesSize() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.entries.size, map.entries.size)
+ }
+ }
+
+ @Test
+ fun validateEntriesClear() {
+ validateWrite { map ->
+ map.entries.clear()
+ }
+ }
+
+ @Test
+ fun validateEntriesIterator() {
+ validateRead { map, normalMap ->
+ for (entries in map.entries.zip(normalMap.entries)) {
+ assertEquals(entries.second, entries.first)
+ }
+ }
+ }
+
+ @Test
+ fun validateEntriesIteratorRemove() {
+ validateWrite { map ->
+ val iterator = map.entries.iterator()
+ iterator.next()
+ iterator.remove()
+ iterator.next()
+ iterator.next()
+ iterator.remove()
+ }
+ }
+
+ @Test
+ fun validateEntriesContains() {
+ validateRead { map, normalMap ->
+ val one = map.entries.first()
+ val normalOne = normalMap.entries.first()
+ assertEquals(normalMap.entries.contains(normalOne), map.entries.contains(one))
+ assertEquals(normalMap.entries.contains(one), map.entries.contains(normalOne))
+ val independent = object : MutableMap.MutableEntry<Int, Float> {
+ override val key = 1
+ override var value = 1f
+ override fun setValue(newValue: Float) = error("not supported")
+ }
+ assertEquals(normalMap.entries.contains(independent), map.entries.contains(independent))
+ }
+ }
+
+ @Test
+ fun validateEntriesContainsAll() {
+ validateRead { map, normalMap ->
+ val normalOne = normalMap.entries.first()
+ val normalTwo = normalMap.entries.drop(1).first()
+ val one = map.entries.first()
+ val two = map.entries.drop(1).first()
+ assertEquals(
+ normalMap.entries.containsAll(listOf(normalOne, normalTwo)),
+ map.entries.containsAll(listOf(one, two))
+ )
+ assertEquals(
+ normalMap.entries.containsAll(listOf(one, two)),
+ map.entries.containsAll(listOf(normalOne, normalTwo))
+ )
+ val independentOne = object : MutableMap.MutableEntry<Int, Float> {
+ override val key = 1
+ override var value = 1f
+ override fun setValue(newValue: Float) = error("not supported")
+ }
+ val independentTwo = object : MutableMap.MutableEntry<Int, Float> {
+ override val key = 1
+ override var value = 1f
+ override fun setValue(newValue: Float) = error("not supported")
+ }
+ assertEquals(
+ normalMap.entries.containsAll(listOf(independentOne, independentTwo)),
+ map.entries.containsAll(listOf(independentOne, independentTwo))
+ )
+ }
+ }
+
+ @Test
+ fun validateEntriesRemove() {
+ validateWrite { map ->
+ map.entries.remove(map.entries.first())
+ }
+ }
+
+ @Test
+ fun validateEntriesRemoveAll() {
+ validateWrite { map ->
+ map.entries.removeAll(map.entries.filter { it.key % 2 == 0 })
+ }
+ }
+
+ @Test
+ fun validateEntriesRetainAll() {
+ validateWrite { map ->
+ map.entries.retainAll(map.entries.filter { it.key % 2 == 0 })
+ }
+ }
+
+ @Test
+ fun validateKeysSize() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.keys.size, map.keys.size)
+ }
+ }
+
+ @Test
+ fun validateKeysClear() {
+ validateWrite { map ->
+ map.keys.clear()
+ }
+ }
+
+ @Test
+ fun validateKeysIsEmpty() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.keys.isEmpty(), map.keys.isEmpty())
+ }
+
+ validateRead(mutableStateMapOf()) { map, normalMap ->
+ assertEquals(normalMap.keys.isEmpty(), map.keys.isEmpty())
+ }
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapKeysAdd() {
+ val map = mutableMapOf<Int, Float>()
+ map.keys.add(1)
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateKeysAdd() {
+ val map = mutableStateMapOf<Int, Float>()
+ map.keys.add(1)
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapKeysAddAll() {
+ val map = mutableMapOf<Int, Float>()
+ map.keys.addAll(listOf(1, 2))
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateKeysAddAll() {
+ val map = mutableStateMapOf<Int, Float>()
+ map.keys.addAll(listOf(1, 2))
+ }
+
+ @Test
+ fun validateKeysIterator() {
+ validateRead { map, normalMap ->
+ map.keys.zip(normalMap.keys).forEach {
+ assertEquals(it.second, it.first)
+ }
+ }
+ }
+
+ @Test
+ fun validateKeysRemove() {
+ validateWrite { map ->
+ map.keys.remove(1)
+ map.keys.remove(10)
+ }
+ }
+
+ @Test
+ fun validateKeysRemoveAll() {
+ validateWrite { map ->
+ map.keys.removeAll(map.keys.filter { it % 2 == 0 })
+ }
+ }
+
+ @Test
+ fun validateKeysRetainAll() {
+ validateWrite { map ->
+ map.keys.retainAll(map.keys.filter { it % 2 == 0 })
+ }
+ }
+
+ @Test
+ fun validateKeysContains() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.keys.contains(1), map.keys.contains(1))
+ assertEquals(normalMap.keys.contains(100), map.keys.contains(100))
+ }
+ }
+
+ @Test
+ fun validateKeysContainsAll() {
+ validateRead { map, normalMap ->
+ val l1 = listOf(1, 2, 3)
+ val l2 = listOf(1, 2, 3, 100)
+ assertEquals(
+ normalMap.keys.containsAll(l1),
+ map.keys.containsAll(l1)
+ )
+ assertEquals(
+ normalMap.keys.containsAll(l2),
+ map.keys.containsAll(l2)
+ )
+ }
+ }
+
+ @Test
+ fun validateValuesSize() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.values.size, map.values.size)
+ }
+ }
+
+ @Test
+ fun validateValuesClear() {
+ validateWrite { map ->
+ map.values.clear()
+ }
+ }
+
+ @Test
+ fun validateValuesIsEmpty() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.values.isEmpty(), map.values.isEmpty())
+ }
+
+ validateRead(mutableStateMapOf()) { map, normalMap ->
+ assertEquals(normalMap.values.isEmpty(), map.values.isEmpty())
+ }
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapValuesAdd() {
+ val map = mutableMapOf<Int, Float>()
+ map.values.add(1f)
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateValuesAdd() {
+ val map = mutableStateMapOf<Int, Float>()
+ map.values.add(1f)
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun verifyMutableMapValuesAddAll() {
+ val map = mutableMapOf<Int, Float>()
+ map.values.addAll(listOf(1f, 2f))
+ }
+
+ @Test(expected = UnsupportedOperationException::class)
+ fun validateValuesAddAll() {
+ val map = mutableStateMapOf<Int, Float>()
+ map.values.addAll(listOf(1f, 2f))
+ }
+
+ @Test
+ fun validateValuesIterator() {
+ validateRead { map, normalMap ->
+ map.values.zip(normalMap.values).forEach {
+ assertEquals(it.second, it.first)
+ }
+ }
+ }
+
+ @Test
+ fun validateValuesRemove() {
+ validateWrite { map ->
+ map.values.remove(1f)
+ map.values.remove(10f)
+ }
+ }
+
+ @Test
+ fun validateValuesRemoveAll() {
+ validateWrite { map ->
+ map.values.removeAll(map.values.filter { it > 2f })
+ }
+ }
+
+ @Test
+ fun validateValuesRetainAll() {
+ validateWrite { map ->
+ map.values.retainAll(map.values.filter { it > 2f })
+ }
+ }
+
+ @Test
+ fun validateValuesContains() {
+ validateRead { map, normalMap ->
+ assertEquals(normalMap.values.contains(1f), map.values.contains(1f))
+ assertEquals(normalMap.values.contains(100f), map.values.contains(100f))
+ }
+ }
+
+ @Test
+ fun validateValuesContainsAll() {
+ validateRead { map, normalMap ->
+ val l1 = listOf(1f, 2f, 3f)
+ val l2 = listOf(1f, 2f, 3f, 100f)
+ assertEquals(
+ normalMap.values.containsAll(l1),
+ map.values.containsAll(l1)
+ )
+ assertEquals(
+ normalMap.values.containsAll(l2),
+ map.values.containsAll(l2)
+ )
+ }
+ }
+
+ @Test
+ fun validateClear() {
+ validateWrite { map ->
+ map.clear()
+ }
+ }
+
+ @Test
+ fun validatePut() {
+ validateWrite { map ->
+ assertEquals(null, map.put(10, 10f))
+ assertEquals(1f, map.put(1, 100f))
+ }
+ }
+
+ @Test
+ fun validatePutAll() {
+ validateWrite { map ->
+ map.putAll(listOf(1 to 20f, 100 to 100f))
+ }
+ }
+
+ @Test
+ fun validateRemove() {
+ validateWrite { map ->
+ assertEquals(1f, map.remove(1))
+ assertEquals(null, map.remove(100))
+ }
+ }
+
+ @OptIn(ExperimentalComposeApi::class)
+ @Test
+ fun validateMapsCanBeSnapshot() {
+ val map = defaultMap()
+ val snapshot = takeSnapshot()
+ try {
+ map[100] = 100f
+ assertTrue(map.contains(100))
+ snapshot.enter { assertFalse(map.contains(100)) }
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ private fun validateRead(
+ initialMap: StableMutableMap<Int, Float> = defaultMap(),
+ block: (Map<Int, Float>, Map<Int, Float>) -> Unit
+ ) {
+ validateMaps(initialMap) { map, normalMap ->
+ block(map, normalMap)
+ }
+ }
+
+ private fun validateWrite(
+ initialMap: StableMutableMap<Int, Float> = defaultMap(),
+ block: (MutableMap<Int, Float>) -> Unit
+ ) {
+ validateMaps(initialMap) { map, normalMap ->
+ block(normalMap)
+ block(map)
+ expected(normalMap, map)
+ }
+ }
+
+ private fun validateMaps(
+ map: StableMutableMap<Int, Float> = defaultMap(),
+ block: (MutableMap<Int, Float>, MutableMap<Int, Float>) -> Unit
+ ) {
+ val normalMap = map.toMutableMap()
+ block(map, normalMap)
+ }
+
+ private fun <K, V> expected(normalMap: Map<K, V>, map: Map<K, V>) {
+ assertEquals(normalMap.size, map.size)
+ for (entry in normalMap.entries) {
+ assertEquals(map[entry.key], entry.value)
+ }
+ }
+
+ private fun defaultMap() = mutableStateMapOf(
+ 1 to 1f, 2 to 2f, 3 to 3f, 4 to 4f, 5 to 1f, 6 to 2f, 7 to 3f, 8 to 4f
+ )
+}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateObserverTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateObserverTests.kt
new file mode 100644
index 0000000..aa5655b
--- /dev/null
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotStateObserverTests.kt
@@ -0,0 +1,303 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(ExperimentalComposeApi::class)
+
+package androidx.compose.snapshots
+
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.MutableState
+import androidx.compose.mutableStateOf
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class SnapshotStateObserverTests {
+
+ @Test
+ fun stateChangeTriggersCallback() {
+ val data = "Hello World"
+ var changes = 0
+
+ val state = mutableStateOf(0)
+ val stateObserver = SnapshotStateObserver { it() }
+ try {
+ stateObserver.enableStateUpdatesObserving(true)
+
+ val onChangeListener: (String) -> Unit = { affected ->
+ assertEquals(data, affected)
+ assertEquals(0, changes)
+ changes++
+ }
+
+ stateObserver.observeReads(data, onChangeListener) {
+ // read the value
+ state.value
+ }
+
+ Snapshot.notifyObjectsInitialized()
+ state.value++
+ Snapshot.sendApplyNotifications()
+
+ assertEquals(1, changes)
+ } finally {
+ stateObserver.dispose()
+ }
+ }
+
+ @Test
+ fun multipleStagesWorksTogether() {
+ val strStage1 = "Stage1"
+ val strStage2 = "Stage2"
+ val strStage3 = "Stage3"
+ var stage1Changes = 0
+ var stage2Changes = 0
+ var stage3Changes = 0
+ val stage1Model = mutableStateOf(0)
+ val stage2Model = mutableStateOf(0)
+ val stage3Model = mutableStateOf(0)
+
+ val onChangeStage1: (String) -> Unit = { affectedData ->
+ assertEquals(strStage1, affectedData)
+ assertEquals(0, stage1Changes)
+ stage1Changes++
+ }
+ val onChangeStage2: (String) -> Unit = { affectedData ->
+ assertEquals(strStage2, affectedData)
+ assertEquals(0, stage2Changes)
+ stage2Changes++
+ }
+ val onChangeStage3: (String) -> Unit = { affectedData ->
+ assertEquals(strStage3, affectedData)
+ assertEquals(0, stage3Changes)
+ stage3Changes++
+ }
+ val stateObserver = SnapshotStateObserver { it() }
+ try {
+ stateObserver.enableStateUpdatesObserving(true)
+
+ stateObserver.observeReads(strStage1, onChangeStage1) {
+ stage1Model.value
+ }
+
+ stateObserver.observeReads(strStage2, onChangeStage2) {
+ stage2Model.value
+ }
+
+ stateObserver.observeReads(strStage3, onChangeStage3) {
+ stage3Model.value
+ }
+
+ Snapshot.notifyObjectsInitialized()
+
+ stage1Model.value++
+ stage2Model.value++
+ stage3Model.value++
+
+ Snapshot.sendApplyNotifications()
+
+ assertEquals(1, stage1Changes)
+ assertEquals(1, stage2Changes)
+ assertEquals(1, stage3Changes)
+ } finally {
+ stateObserver.dispose()
+ }
+ }
+
+ @Test
+ fun enclosedStagesCorrectlyObserveChanges() {
+ val stage1Info = "stage 1"
+ val stage2Info1 = "stage 1 - value 1"
+ val stage2Info2 = "stage 2 - value 2"
+ var stage1Changes = 0
+ var stage2Changes1 = 0
+ var stage2Changes2 = 0
+ val stage1Data = mutableStateOf(0)
+ val stage2Data1 = mutableStateOf(0)
+ val stage2Data2 = mutableStateOf(0)
+
+ val onChangeStage1Listener: (String) -> Unit = { affected ->
+ assertEquals(affected, stage1Info)
+ assertEquals(stage1Changes, 0)
+ stage1Changes++
+ }
+ val onChangeState2Listener: (String) -> Unit = { affected ->
+ when (affected) {
+ stage2Info1 -> {
+ assertEquals(0, stage2Changes1)
+ stage2Changes1++
+ }
+ stage2Info2 -> {
+ assertEquals(0, stage2Changes2)
+ stage2Changes2++
+ }
+ stage1Info -> {
+ error("stage 1 called in stage 2")
+ }
+ }
+ }
+
+ val stateObserver = SnapshotStateObserver { it() }
+ try {
+ stateObserver.enableStateUpdatesObserving(true)
+
+ stateObserver.observeReads(stage2Info1, onChangeState2Listener) {
+ stage2Data1.value
+ stateObserver.observeReads(stage2Info2, onChangeState2Listener) {
+ stage2Data2.value
+ stateObserver.observeReads(stage1Info, onChangeStage1Listener) {
+ stage1Data.value
+ }
+ }
+ }
+
+ Snapshot.notifyObjectsInitialized()
+
+ stage2Data1.value++
+ stage2Data2.value++
+ stage1Data.value++
+
+ Snapshot.sendApplyNotifications()
+
+ assertEquals(1, stage1Changes)
+ assertEquals(1, stage2Changes1)
+ assertEquals(1, stage2Changes2)
+ } finally {
+ stateObserver.dispose()
+ }
+ }
+
+ @Test
+ fun stateReadTriggersCallbackAfterSwitchingAdvancingGlobalWithinObserveReads() {
+ val info = "Hello"
+ var changes = 0
+
+ val state = mutableStateOf(0)
+ val onChangeListener: (String) -> Unit = { _ ->
+ assertEquals(0, changes)
+ changes++
+ }
+
+ val stateObserver = SnapshotStateObserver { it() }
+ try {
+ stateObserver.enableStateUpdatesObserving(true)
+
+ stateObserver.observeReads(info, onChangeListener) {
+ // Create a sub-snapshot
+ // this will be done by subcomposition, for example.
+ val snapshot = takeMutableSnapshot()
+ try {
+ // read the value
+ snapshot.enter { state.value }
+ snapshot.apply().check()
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ state.value++
+
+ Snapshot.sendApplyNotifications()
+
+ assertEquals(1, changes)
+ } finally {
+ stateObserver.dispose()
+ }
+ }
+
+ @Test
+ fun pauseStopsObserving() {
+ val data = "data"
+ var changes = 0
+
+ runSimpleTest { stateObserver, state ->
+ stateObserver.observeReads(data, { _ -> changes++ }) {
+ stateObserver.pauseObservingReads {
+ state.value
+ }
+ }
+ }
+
+ assertEquals(0, changes)
+ }
+
+ @Test
+ fun nestedPauseStopsObserving() {
+ val data = "data"
+ var changes = 0
+
+ runSimpleTest { stateObserver, state ->
+ stateObserver.observeReads(data, { _ -> changes++ }) {
+ stateObserver.pauseObservingReads {
+ stateObserver.pauseObservingReads {
+ state.value
+ }
+ state.value
+ }
+ }
+ }
+
+ assertEquals(0, changes)
+ }
+
+ @Test
+ fun simpleObserving() {
+ val data = "data"
+ var changes = 0
+
+ runSimpleTest { stateObserver, state ->
+ stateObserver.observeReads(data, { _ -> changes++ }) {
+ state.value
+ }
+ }
+
+ assertEquals(1, changes)
+ }
+
+ @Test
+ fun observeWithinPause() {
+ val data = "data"
+ var changes1 = 0
+ var changes2 = 0
+
+ runSimpleTest { stateObserver, state ->
+ stateObserver.observeReads(data, { _ -> changes1++ }) {
+ stateObserver.pauseObservingReads {
+ stateObserver.observeReads(data, { _ -> changes2++ }) {
+ state.value
+ }
+ }
+ }
+ }
+ assertEquals(0, changes1)
+ assertEquals(1, changes2)
+ }
+
+ private fun runSimpleTest(
+ block: (modelObserver: SnapshotStateObserver, data: MutableState<Int>) -> Unit
+ ) {
+ val stateObserver = SnapshotStateObserver { it() }
+ val state = mutableStateOf(0)
+ try {
+ stateObserver.enableStateUpdatesObserving(true)
+ Snapshot.notifyObjectsInitialized()
+ block(stateObserver, state)
+ state.value++
+ Snapshot.sendApplyNotifications()
+ } finally {
+ stateObserver.dispose()
+ }
+ }
+}
\ No newline at end of file
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotTests.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotTests.kt
new file mode 100644
index 0000000..d9c36a1
--- /dev/null
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/snapshots/SnapshotTests.kt
@@ -0,0 +1,648 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(InternalComposeApi::class, ExperimentalComposeApi::class)
+
+package androidx.compose.snapshots
+
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.InternalComposeApi
+import androidx.compose.MutableState
+import androidx.compose.State
+import androidx.compose.getValue
+import androidx.compose.mutableStateOf
+import androidx.compose.neverEqualPolicy
+import androidx.compose.referentialEqualityPolicy
+import androidx.compose.setValue
+import androidx.compose.snapshots.Snapshot.Companion.openSnapshotCount
+import androidx.compose.structuralEqualityPolicy
+import kotlin.test.AfterTest
+import kotlin.test.BeforeTest
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+
+class SnapshotTests {
+ @Test
+ fun aSnapshotCanBeCreated() {
+ val snapshot = takeSnapshot()
+ snapshot.dispose()
+ }
+
+ @Test
+ fun aMutableStateCanBeCreated() {
+ mutableStateOf(0)
+ }
+
+ @Test
+ fun aMutableStateCanBeReadOutsideASnapshot() {
+ val state by mutableStateOf(0)
+ assertEquals(0, state)
+ }
+
+ @Test
+ fun aMutableStateCanBeWrittenToOutsideASnapshot() {
+ var state by mutableStateOf(0)
+ assertEquals(0, state)
+ state = 1
+ assertEquals(1, state)
+ }
+
+ @Test
+ fun snapshotsAreIsolatedFromGlobalChanges() {
+ var state by mutableStateOf(0)
+ val snapshot = takeSnapshot()
+ try {
+ state = 1
+ assertEquals(1, state)
+ assertEquals(0, snapshot.enter { state })
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun mutableSnapshotsCanBeApplied() {
+ var state by mutableStateOf(0)
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter {
+ assertEquals(0, state)
+ state = 1
+ assertEquals(1, state)
+ }
+ assertEquals(0, state)
+ snapshot.apply().check()
+ assertEquals(1, state)
+ } finally {
+ snapshot.dispose()
+ }
+
+ // The same thing can be done with an atomic block
+ atomic {
+ assertEquals(1, state)
+ state = 2
+ assertEquals(2, state)
+ }
+ assertEquals(2, state)
+ }
+
+ @Test
+ fun multipleSnapshotsAreIsolatedAndCanBeApplied() {
+ val count = 2
+ val state = MutableList(count) { mutableStateOf(0) }
+
+ // Create count snapshots
+ val snapshots = MutableList(count) { takeMutableSnapshot() }
+ try {
+ snapshots.forEachIndexed() { index, snapshot ->
+ snapshot.enter { state[index].value = index }
+ }
+
+ // Ensure the modifications in snapshots are not visible to global
+ repeat(count) {
+ assertEquals(0, state[it].value)
+ }
+
+ // Ensure snapshots can see their own value but no other changes
+ repeat(count) { index ->
+ snapshots[index].enter {
+ repeat(count) {
+ if (it != index) assertEquals(0, state[it].value)
+ else assertEquals(it, state[it].value)
+ }
+ }
+ }
+
+ // Apply all the snapshots
+ repeat(count) {
+ snapshots[it].apply().check()
+ }
+
+ // Global should now be able to see all changes
+ repeat(count) {
+ assertEquals(it, state[it].value)
+ }
+ } finally {
+ // Dispose the snapshots
+ snapshots.forEach { it.dispose() }
+ }
+ }
+
+ @Test
+ fun applyingASnapshotThatCollidesWithAGlobalChangeWillFail() {
+ var state by mutableStateOf(0)
+
+ val snapshot = snapshot { state = 1 }
+ try {
+ state = 2
+ assertTrue(snapshot.apply() is SnapshotApplyResult.Failure)
+ assertEquals(2, state)
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun applyingCollidingSnapshotsWillFail() {
+ var state by mutableStateOf(0)
+ val snapshot1 = snapshot { state = 1 }
+ val snapshot2 = snapshot { state = 2 }
+ try {
+ assertEquals(0, state)
+ snapshot1.apply().check()
+ assertEquals(1, state)
+ assertTrue(snapshot2.apply() is SnapshotApplyResult.Failure)
+ assertEquals(1, state)
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+ }
+
+ @Test
+ fun stateReadsCanBeObserved() {
+ val state = mutableStateOf(0)
+
+ val readStates = mutableListOf<Any>()
+ val snapshot = takeSnapshot {
+ readStates.add(it)
+ }
+ try {
+
+ val result = snapshot.enter { state.value }
+
+ assertEquals(0, result)
+ assertEquals(1, readStates.size)
+ assertEquals(state, readStates[0])
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun stateWritesCanBeObserved() {
+ val state = mutableStateOf(0)
+ val writtenStates = mutableListOf<Any>()
+ val snapshot = takeMutableSnapshot { write ->
+ writtenStates.add(write)
+ }
+ try {
+ snapshot.enter {
+ assertEquals(0, writtenStates.size)
+ state.value = 2
+ assertEquals(1, writtenStates.size)
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertEquals(1, writtenStates.size)
+ assertEquals(state, writtenStates[0])
+ }
+
+ @Test
+ fun appliesCanBeObserved() {
+ val state = mutableStateOf(0)
+ var observedSnapshot: Snapshot? = null
+ val unregister = Snapshot.registerApplyObserver { changed, snapshot ->
+ assertTrue(state in changed)
+ observedSnapshot = snapshot
+ }
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter {
+ state.value = 2
+ }
+ assertEquals(null, observedSnapshot)
+ snapshot.apply().check()
+ assertEquals(snapshot, observedSnapshot)
+ } finally {
+ snapshot.dispose()
+ unregister()
+ }
+ }
+
+ @Test
+ fun globalChangesCanBeObserved() {
+ val state = mutableStateOf(0)
+
+ Snapshot.notifyObjectsInitialized()
+
+ var applyObserved = false
+ val unregister = Snapshot.registerApplyObserver { changed, _ ->
+ assertTrue(state in changed)
+ applyObserved = true
+ }
+ try {
+ state.value = 2
+
+ // Nothing should have been observed yet.
+ assertFalse(applyObserved)
+
+ // Advance the global snapshot to send apply notifications
+ Snapshot.sendApplyNotifications()
+
+ assertTrue(applyObserved)
+ } finally {
+ unregister()
+ }
+ }
+
+ @Test
+ fun aNestedSnapshotCanBeTaken() {
+ val state = mutableStateOf(0)
+
+ val snapshot = takeSnapshot()
+ try {
+ val nested = snapshot.takeNestedSnapshot()
+ try {
+ state.value = 1
+
+ assertEquals(0, nested.enter { state.value })
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun aNestedMutableSnapshotCanBeTaken() {
+ val state = mutableStateOf(0)
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter { state.value = 1 }
+ val nested = snapshot.takeNestedMutableSnapshot()
+ try {
+ nested.enter { state.value = 2 }
+
+ assertEquals(0, state.value)
+ assertEquals(1, snapshot.enter { state.value })
+ assertEquals(2, nested.enter { state.value })
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun aNestedSnapshotOfAMutableSnapshotCanBeTaken() {
+ val state = mutableStateOf(0)
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter { state.value = 1 }
+ val nested = snapshot.takeNestedSnapshot()
+ try {
+ snapshot.enter { state.value = 2 }
+
+ assertEquals(0, state.value)
+ assertEquals(2, snapshot.enter { state.value })
+ assertEquals(1, nested.enter { state.value })
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ }
+
+ @Test
+ fun aNestedMutableSnapshotCanBeAppliedToItsParent() {
+ val state = mutableStateOf(0)
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter { state.value = 1 }
+ val nested = snapshot.takeNestedMutableSnapshot()
+ try {
+
+ nested.enter { state.value = 2 }
+ assertEquals(0, state.value)
+ assertEquals(1, snapshot.enter { state.value })
+ assertEquals(2, nested.enter { state.value })
+
+ nested.apply().check()
+ } finally {
+ nested.dispose()
+ }
+ assertEquals(0, state.value)
+ assertEquals(2, snapshot.enter { state.value })
+
+ snapshot.apply().check()
+ } finally {
+ snapshot.dispose()
+ }
+
+ assertEquals(2, state.value)
+ }
+
+ @Test
+ fun atomicChangesNest() {
+ val state = mutableStateOf(0)
+ atomic {
+ state.value = 1
+ atomic {
+ state.value = 2
+
+ assertEquals(0, Snapshot.global { state.value })
+ }
+ assertEquals(2, state.value)
+ assertEquals(0, Snapshot.global { state.value })
+ }
+ assertEquals(2, state.value)
+ }
+
+ @Test
+ fun siblingNestedMutableSnapshotsAreIsolatedFromEachOther() {
+ val state = mutableStateOf(0)
+ val snapshot = takeMutableSnapshot()
+ try {
+ snapshot.enter { state.value = 10 }
+
+ val nested1 = snapshot.takeNestedMutableSnapshot()
+ try {
+ nested1.enter { state.value = 1 }
+ val nested2 = snapshot.takeNestedMutableSnapshot()
+ try {
+ nested2.enter { state.value = 2 }
+
+ assertEquals(0, state.value)
+ assertEquals(10, snapshot.enter { state.value })
+ assertEquals(1, nested1.enter { state.value })
+ assertEquals(2, nested2.enter { state.value })
+ } finally {
+ nested2.dispose()
+ }
+ } finally {
+ nested1.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertEquals(0, state.value)
+ }
+
+ @Test
+ fun readingInANestedSnapshotNotifiesTheParent() {
+ val state = mutableStateOf(0)
+ val read = HashSet<Any>()
+ val snapshot = takeSnapshot { read.add(it) }
+ try {
+ val nested = snapshot.takeNestedSnapshot()
+ try {
+ assertEquals(0, nested.enter { state.value })
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertTrue(read.contains(state))
+ }
+
+ @Test
+ fun readingInANestedSnapshotNotifiesNestedAndItsParent() {
+ val state = mutableStateOf(0)
+ val parentRead = HashSet<Any>()
+ val nestedRead = HashSet<Any>()
+ val snapshot = takeSnapshot { parentRead.add(it) }
+ try {
+ val nested = snapshot.takeNestedSnapshot { nestedRead.add(it) }
+ try {
+ assertEquals(0, nested.enter { state.value })
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertTrue(parentRead.contains(state))
+ assertTrue(nestedRead.contains(state))
+ }
+
+ @Test
+ fun writingToANestedSnapshotNotifiesTheParent() {
+ val state = mutableStateOf(0)
+ val written = HashSet<Any>()
+ val snapshot = takeMutableSnapshot { written.add(it) }
+ try {
+ val nested = snapshot.takeNestedMutableSnapshot()
+ try {
+ nested.enter { state.value = 2 }
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertTrue(written.contains(state))
+ }
+
+ @Test
+ fun writingToANestedSnapshotNotifiesNestedAndItsParent() {
+ val state = mutableStateOf(0)
+ val parentWritten = HashSet<Any>()
+ val nestedWritted = HashSet<Any>()
+ val snapshot = takeMutableSnapshot { parentWritten.add(it) }
+ try {
+ val nested = snapshot.takeNestedMutableSnapshot { nestedWritted.add(it) }
+ try {
+ nested.enter { state.value = 2 }
+ } finally {
+ nested.dispose()
+ }
+ } finally {
+ snapshot.dispose()
+ }
+ assertTrue(parentWritten.contains(state))
+ assertTrue(nestedWritted.contains(state))
+ }
+
+ @Test
+ fun creatingAStateInANestedSnapshotAndMutatingInParentApplies() {
+ val states = mutableListOf<MutableState<Int>>()
+ val snapshot = takeMutableSnapshot()
+ try {
+ val nested = snapshot.takeNestedMutableSnapshot()
+ try {
+ nested.enter {
+ val state = mutableStateOf(0)
+ states.add(state)
+ }
+ nested.apply()
+ } finally {
+ nested.dispose()
+ }
+ snapshot.enter {
+ for (state in states) {
+ state.value++
+ }
+ }
+ snapshot.apply()
+ } finally {
+ snapshot.dispose()
+ }
+ for (state in states) {
+ assertEquals(1, state.value)
+ }
+ }
+
+ @Test
+ fun snapshotsChangesCanMerge() {
+ val state = mutableStateOf(0)
+ val snapshot1 = takeMutableSnapshot()
+ val snapshot2 = takeMutableSnapshot()
+ try {
+ // Change the state to the same value in both snapshots
+ snapshot1.enter { state.value = 1 }
+ snapshot2.enter { state.value = 1 }
+
+ // Still 0 until one of the snapshots is applied
+ assertEquals(0, state.value)
+
+ // Apply snapshot 1 should change the value to 1
+ snapshot1.apply().check()
+ assertEquals(1, state.value)
+
+ // Applying snapshot 2 should succeed because it changed the value to the same value.
+ snapshot2.apply().check()
+ assertEquals(1, state.value)
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+ }
+
+ @Test
+ fun mergedSnapshotsDoNotRepeatChangeNotifications() {
+ val state = mutableStateOf(0)
+ val snapshot1 = takeMutableSnapshot()
+ val snapshot2 = takeMutableSnapshot()
+ try {
+ val changes = changesOf(state) {
+ snapshot1.enter { state.value = 1 }
+ snapshot2.enter { state.value = 1 }
+ snapshot1.apply().check()
+ snapshot2.apply().check()
+ }
+ assertEquals(1, changes)
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+ }
+
+ @Test
+ fun statesWithStructuralEqualityPolicyMerge() {
+ data class Value(val v1: Int, val v2: Int)
+ val state = mutableStateOf(Value(1, 2), structuralEqualityPolicy())
+ val snapshot1 = takeMutableSnapshot()
+ val snapshot2 = takeMutableSnapshot()
+ try {
+ snapshot1.enter { state.value = Value(3, 4) }
+ snapshot2.enter { state.value = Value(3, 4) }
+ snapshot1.apply().check()
+ snapshot2.apply().check()
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+ }
+
+ @Test(expected = SnapshotApplyConflictException::class)
+ fun stateUsingNeverEqualPolicyCannotBeMerged() {
+ val state = mutableStateOf(0, neverEqualPolicy())
+ val snapshot1 = takeMutableSnapshot()
+ val snapshot2 = takeMutableSnapshot()
+ try {
+ snapshot1.enter { state.value = 1 }
+ snapshot2.enter { state.value = 1 }
+ snapshot1.apply().check()
+ snapshot2.apply().check()
+ } finally {
+ snapshot1.dispose()
+ snapshot2.dispose()
+ }
+ }
+
+ @Test
+ fun changingAnEqualityPolicyStateToItsCurrentValueIsNotConsideredAChange() {
+ val state = mutableStateOf(0, referentialEqualityPolicy())
+ val changes = changesOf(state) {
+ state.value = 0
+ }
+ assertEquals(0, changes)
+ }
+
+ @Test
+ fun changingANeverEqualPolicyStateToItsCurrentValueIsConsideredAChange() {
+ val state = mutableStateOf(0, neverEqualPolicy())
+ val changes = changesOf(state) {
+ state.value = 0
+ }
+ assertEquals(1, changes)
+ }
+
+ private var count = 0
+
+ @BeforeTest
+ fun recordOpenSnapshots() {
+ count = openSnapshotCount()
+ }
+
+ // Validate that the tests do not change the number of open snapshots
+ @AfterTest
+ fun validateOpenSnapshots() {
+ assertEquals(count, openSnapshotCount())
+ }
+}
+
+internal fun <T> changesOf(state: State<T>, block: () -> Unit): Int {
+ var changes = 0
+ val removeObserver = Snapshot.registerApplyObserver { states, _ ->
+ if (states.contains(state)) changes++
+ }
+ try {
+ block()
+ Snapshot.sendApplyNotifications()
+ } finally {
+ removeObserver()
+ }
+ return changes
+}
+
+internal inline fun <T> atomic(block: () -> T): T {
+ val snapshot = takeMutableSnapshot()
+ val result: T
+ try {
+ result = snapshot.enter {
+ block()
+ }
+ snapshot.apply().check()
+ } finally {
+ snapshot.dispose()
+ }
+ return result
+}
+
+internal inline fun snapshot(block: () -> Unit): MutableSnapshot {
+ val snapshot = takeMutableSnapshot()
+ snapshot.enter(block)
+ return snapshot
+}
\ No newline at end of file
diff --git a/concurrent/futures-ktx/api/1.1.0-rc01.txt b/concurrent/futures-ktx/api/1.1.0-rc01.txt
new file mode 100644
index 0000000..6c14320
--- /dev/null
+++ b/concurrent/futures-ktx/api/1.1.0-rc01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ public final class ListenableFutureKt {
+ method public static suspend <T> Object? await(com.google.common.util.concurrent.ListenableFuture<T>, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+}
+
diff --git a/concurrent/futures-ktx/api/public_plus_experimental_1.1.0-rc01.txt b/concurrent/futures-ktx/api/public_plus_experimental_1.1.0-rc01.txt
new file mode 100644
index 0000000..6c14320
--- /dev/null
+++ b/concurrent/futures-ktx/api/public_plus_experimental_1.1.0-rc01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ public final class ListenableFutureKt {
+ method public static suspend <T> Object? await(com.google.common.util.concurrent.ListenableFuture<T>, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+}
+
diff --git a/concurrent/futures-ktx/api/restricted_1.1.0-rc01.txt b/concurrent/futures-ktx/api/restricted_1.1.0-rc01.txt
new file mode 100644
index 0000000..6c14320
--- /dev/null
+++ b/concurrent/futures-ktx/api/restricted_1.1.0-rc01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ public final class ListenableFutureKt {
+ method public static suspend <T> Object? await(com.google.common.util.concurrent.ListenableFuture<T>, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+}
+
diff --git a/concurrent/futures/api/1.1.0-rc01.txt b/concurrent/futures/api/1.1.0-rc01.txt
new file mode 100644
index 0000000..beb76bd
--- /dev/null
+++ b/concurrent/futures/api/1.1.0-rc01.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ public final class CallbackToFutureAdapter {
+ method public static <T> com.google.common.util.concurrent.ListenableFuture<T!> getFuture(androidx.concurrent.futures.CallbackToFutureAdapter.Resolver<T!>);
+ }
+
+ public static final class CallbackToFutureAdapter.Completer<T> {
+ method public void addCancellationListener(Runnable, java.util.concurrent.Executor);
+ method protected void finalize();
+ method public boolean set(T!);
+ method public boolean setCancelled();
+ method public boolean setException(Throwable);
+ }
+
+ public static interface CallbackToFutureAdapter.Resolver<T> {
+ method public Object? attachCompleter(androidx.concurrent.futures.CallbackToFutureAdapter.Completer<T!>) throws java.lang.Exception;
+ }
+
+}
+
diff --git a/concurrent/futures/api/public_plus_experimental_1.1.0-rc01.txt b/concurrent/futures/api/public_plus_experimental_1.1.0-rc01.txt
new file mode 100644
index 0000000..beb76bd
--- /dev/null
+++ b/concurrent/futures/api/public_plus_experimental_1.1.0-rc01.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ public final class CallbackToFutureAdapter {
+ method public static <T> com.google.common.util.concurrent.ListenableFuture<T!> getFuture(androidx.concurrent.futures.CallbackToFutureAdapter.Resolver<T!>);
+ }
+
+ public static final class CallbackToFutureAdapter.Completer<T> {
+ method public void addCancellationListener(Runnable, java.util.concurrent.Executor);
+ method protected void finalize();
+ method public boolean set(T!);
+ method public boolean setCancelled();
+ method public boolean setException(Throwable);
+ }
+
+ public static interface CallbackToFutureAdapter.Resolver<T> {
+ method public Object? attachCompleter(androidx.concurrent.futures.CallbackToFutureAdapter.Completer<T!>) throws java.lang.Exception;
+ }
+
+}
+
diff --git a/concurrent/futures/api/restricted_1.1.0-rc01.txt b/concurrent/futures/api/restricted_1.1.0-rc01.txt
new file mode 100644
index 0000000..6dabf0b
--- /dev/null
+++ b/concurrent/futures/api/restricted_1.1.0-rc01.txt
@@ -0,0 +1,45 @@
+// Signature format: 3.0
+package androidx.concurrent.futures {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class AbstractResolvableFuture<V> implements com.google.common.util.concurrent.ListenableFuture<V> {
+ ctor protected AbstractResolvableFuture();
+ method public final void addListener(Runnable!, java.util.concurrent.Executor!);
+ method protected void afterDone();
+ method public final boolean cancel(boolean);
+ method public final V! get(long, java.util.concurrent.TimeUnit!) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException, java.util.concurrent.TimeoutException;
+ method public final V! get() throws java.util.concurrent.ExecutionException, java.lang.InterruptedException;
+ method protected void interruptTask();
+ method public final boolean isCancelled();
+ method public final boolean isDone();
+ method protected String? pendingToString();
+ method protected boolean set(V?);
+ method protected boolean setException(Throwable!);
+ method protected boolean setFuture(com.google.common.util.concurrent.ListenableFuture<? extends V>!);
+ method protected final boolean wasInterrupted();
+ }
+
+ public final class CallbackToFutureAdapter {
+ method public static <T> com.google.common.util.concurrent.ListenableFuture<T!> getFuture(androidx.concurrent.futures.CallbackToFutureAdapter.Resolver<T!>);
+ }
+
+ public static final class CallbackToFutureAdapter.Completer<T> {
+ method public void addCancellationListener(Runnable, java.util.concurrent.Executor);
+ method protected void finalize();
+ method public boolean set(T!);
+ method public boolean setCancelled();
+ method public boolean setException(Throwable);
+ }
+
+ public static interface CallbackToFutureAdapter.Resolver<T> {
+ method public Object? attachCompleter(androidx.concurrent.futures.CallbackToFutureAdapter.Completer<T!>) throws java.lang.Exception;
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ResolvableFuture<V> extends androidx.concurrent.futures.AbstractResolvableFuture<V> {
+ method public static <V> androidx.concurrent.futures.ResolvableFuture<V!>! create();
+ method public boolean set(V?);
+ method public boolean setException(Throwable!);
+ method public boolean setFuture(com.google.common.util.concurrent.ListenableFuture<? extends V>!);
+ }
+
+}
+
diff --git a/core/core/api/1.5.0-alpha01.txt b/core/core/api/1.5.0-alpha01.txt
index f80f458..e6df9f3 100644
--- a/core/core/api/1.5.0-alpha01.txt
+++ b/core/core/api/1.5.0-alpha01.txt
@@ -1708,10 +1708,10 @@
}
public final class PatternsCompat {
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
diff --git a/core/core/api/api_lint.ignore b/core/core/api/api_lint.ignore
index 46772b6..b6158f8d 100644
--- a/core/core/api/api_lint.ignore
+++ b/core/core/api/api_lint.ignore
@@ -1085,14 +1085,6 @@
Missing nullability on field `LTR` in class `class androidx.core.text.TextDirectionHeuristicsCompat`
MissingNullability: androidx.core.text.TextDirectionHeuristicsCompat#RTL:
Missing nullability on field `RTL` in class `class androidx.core.text.TextDirectionHeuristicsCompat`
-MissingNullability: androidx.core.util.PatternsCompat#DOMAIN_NAME:
- Missing nullability on field `DOMAIN_NAME` in class `class androidx.core.util.PatternsCompat`
-MissingNullability: androidx.core.util.PatternsCompat#EMAIL_ADDRESS:
- Missing nullability on field `EMAIL_ADDRESS` in class `class androidx.core.util.PatternsCompat`
-MissingNullability: androidx.core.util.PatternsCompat#IP_ADDRESS:
- Missing nullability on field `IP_ADDRESS` in class `class androidx.core.util.PatternsCompat`
-MissingNullability: androidx.core.util.PatternsCompat#WEB_URL:
- Missing nullability on field `WEB_URL` in class `class androidx.core.util.PatternsCompat`
MissingNullability: androidx.core.view.AccessibilityDelegateCompat#dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent) parameter #0:
Missing nullability on parameter `host` in method `dispatchPopulateAccessibilityEvent`
MissingNullability: androidx.core.view.AccessibilityDelegateCompat#dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent) parameter #1:
@@ -2111,11 +2103,11 @@
Provide an explicit copy constructor instead of implementing `clone()`
-OptionalBuilderConstructorAgrument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #0:
+OptionalBuilderConstructorArgument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #0:
Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter icon in androidx.core.app.NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat icon, CharSequence title, android.app.PendingIntent intent)
-OptionalBuilderConstructorAgrument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #1:
+OptionalBuilderConstructorArgument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #1:
Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter title in androidx.core.app.NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat icon, CharSequence title, android.app.PendingIntent intent)
-OptionalBuilderConstructorAgrument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #2:
+OptionalBuilderConstructorArgument: androidx.core.app.NotificationCompat.Action.Builder#Builder(androidx.core.graphics.drawable.IconCompat, CharSequence, android.app.PendingIntent) parameter #2:
Builder constructor arguments must be mandatory (i.e. not @Nullable): parameter intent in androidx.core.app.NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat icon, CharSequence title, android.app.PendingIntent intent)
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index f80f458..e6df9f3 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -1708,10 +1708,10 @@
}
public final class PatternsCompat {
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
diff --git a/core/core/api/public_plus_experimental_1.5.0-alpha01.txt b/core/core/api/public_plus_experimental_1.5.0-alpha01.txt
index a9a4c2e..ce97204 100644
--- a/core/core/api/public_plus_experimental_1.5.0-alpha01.txt
+++ b/core/core/api/public_plus_experimental_1.5.0-alpha01.txt
@@ -1706,10 +1706,10 @@
}
public final class PatternsCompat {
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index a9a4c2e..ce97204 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -1706,10 +1706,10 @@
}
public final class PatternsCompat {
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
diff --git a/core/core/api/restricted_1.5.0-alpha01.txt b/core/core/api/restricted_1.5.0-alpha01.txt
index a3a2802..c1640ac 100644
--- a/core/core/api/restricted_1.5.0-alpha01.txt
+++ b/core/core/api/restricted_1.5.0-alpha01.txt
@@ -2051,12 +2051,12 @@
}
public final class PatternsCompat {
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_EMAIL_ADDRESS;
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_WEB_URL;
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_EMAIL_ADDRESS;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
@@ -2878,7 +2878,7 @@
method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.core.view.WindowInsetsCompat! CONSUMED;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.core.view.WindowInsetsCompat CONSUMED;
}
public static final class WindowInsetsCompat.Builder {
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index a3a2802..c1640ac 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -2051,12 +2051,12 @@
}
public final class PatternsCompat {
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_EMAIL_ADDRESS;
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern! AUTOLINK_WEB_URL;
- field public static final java.util.regex.Pattern! DOMAIN_NAME;
- field public static final java.util.regex.Pattern! EMAIL_ADDRESS;
- field public static final java.util.regex.Pattern! IP_ADDRESS;
- field public static final java.util.regex.Pattern! WEB_URL;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_EMAIL_ADDRESS;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
}
public final class Pools {
@@ -2878,7 +2878,7 @@
method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
- field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.core.view.WindowInsetsCompat! CONSUMED;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.core.view.WindowInsetsCompat CONSUMED;
}
public static final class WindowInsetsCompat.Builder {
diff --git a/datastore/datastore-core/api/1.0.0-alpha01.txt b/datastore/datastore-core/api/1.0.0-alpha01.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/1.0.0-alpha01.txt
+++ b/datastore/datastore-core/api/1.0.0-alpha01.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/api/current.txt b/datastore/datastore-core/api/current.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/current.txt
+++ b/datastore/datastore-core/api/current.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/api/public_plus_experimental_1.0.0-alpha01.txt b/datastore/datastore-core/api/public_plus_experimental_1.0.0-alpha01.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/public_plus_experimental_1.0.0-alpha01.txt
+++ b/datastore/datastore-core/api/public_plus_experimental_1.0.0-alpha01.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/api/public_plus_experimental_current.txt b/datastore/datastore-core/api/public_plus_experimental_current.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-core/api/public_plus_experimental_current.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/api/res-current.txt b/datastore/datastore-core/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/datastore/datastore-core/api/res-current.txt
diff --git a/datastore/datastore-core/api/restricted_1.0.0-alpha01.txt b/datastore/datastore-core/api/restricted_1.0.0-alpha01.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/restricted_1.0.0-alpha01.txt
+++ b/datastore/datastore-core/api/restricted_1.0.0-alpha01.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/api/restricted_current.txt b/datastore/datastore-core/api/restricted_current.txt
index dddaa3a..7fd16d5 100644
--- a/datastore/datastore-core/api/restricted_current.txt
+++ b/datastore/datastore-core/api/restricted_current.txt
@@ -45,3 +45,33 @@
}
+package androidx.datastore.migrations {
+
+ public final class SharedPreferencesMigration<T> {
+ method public static <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ field public static final androidx.datastore.migrations.SharedPreferencesMigration.Companion Companion;
+ }
+
+ public static final class SharedPreferencesMigration.Companion {
+ method public <T> kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<T>> create(android.content.Context context, String sharedPreferencesName, androidx.datastore.migrations.SharedPreferencesMigration.Migration<T> migration, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ }
+
+ public static interface SharedPreferencesMigration.Migration<T> {
+ method public suspend Object? migrate(androidx.datastore.migrations.SharedPreferencesMigration.SharedPreferencesView prefs, T? currentData, kotlin.coroutines.Continuation<? super T> p);
+ method public default suspend Object? shouldMigrate(T? currentData, kotlin.coroutines.Continuation<? super java.lang.Boolean> p);
+ }
+
+ public static final class SharedPreferencesMigration.SharedPreferencesView {
+ ctor public SharedPreferencesMigration.SharedPreferencesView(android.content.SharedPreferences prefs, java.util.Set<java.lang.String> keySet);
+ method public operator boolean contains(String key);
+ method public java.util.Map<java.lang.String,java.lang.Object> getAll();
+ method public boolean getBoolean(String key, boolean defValue);
+ method public float getFloat(String key, float defValue);
+ method public int getInt(String key, int defValue);
+ method public long getLong(String key, long defValue);
+ method public String? getString(String key, String? defValue = null);
+ method public java.util.Set<java.lang.String>? getStringSet(String key, java.util.Set<java.lang.String>? defValues = null);
+ }
+
+}
+
diff --git a/datastore/datastore-core/build.gradle b/datastore/datastore-core/build.gradle
index c837a96..a6f6535 100644
--- a/datastore/datastore-core/build.gradle
+++ b/datastore/datastore-core/build.gradle
@@ -20,10 +20,19 @@
import androidx.build.Publish
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
plugins {
id("AndroidXPlugin")
- id("kotlin")
+ id("com.android.library")
+ id("kotlin-android")
+}
+
+android {
+ sourceSets {
+ androidTest {
+ // Shared TestingSerializer between test and androidTest
+ kotlin.srcDirs += test.kotlin.srcDirs
+ }
+ }
}
dependencies {
@@ -35,6 +44,13 @@
testImplementation(KOTLIN_COROUTINES_TEST)
testImplementation(TRUTH)
testImplementation(project(":internal-testutils-truth"))
+
+ androidTestImplementation(JUNIT)
+ androidTestImplementation(KOTLIN_COROUTINES_TEST)
+ androidTestImplementation(TRUTH)
+ androidTestImplementation(project(":internal-testutils-truth"))
+ androidTestImplementation(ANDROIDX_TEST_RUNNER)
+ androidTestImplementation(ANDROIDX_TEST_CORE)
}
androidx {
diff --git a/datastore/datastore-core/src/androidTest/java/migrations/SharedPreferencesMigrationTest.kt b/datastore/datastore-core/src/androidTest/java/migrations/SharedPreferencesMigrationTest.kt
new file mode 100644
index 0000000..421f54f
--- /dev/null
+++ b/datastore/datastore-core/src/androidTest/java/migrations/SharedPreferencesMigrationTest.kt
@@ -0,0 +1,177 @@
+/*
+ * Copyright 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 androidx.datastore.migrations
+
+import android.content.Context
+import android.content.SharedPreferences
+import androidx.datastore.DataMigration
+import androidx.datastore.DataStore
+import androidx.datastore.DataStoreFactory
+import androidx.datastore.TestingSerializer
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.filters.MediumTest
+import androidx.testutils.assertThrows
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.test.TestCoroutineScope
+import kotlinx.coroutines.test.runBlockingTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
+import java.io.File
+
+@MediumTest
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+class SharedPreferencesMigrationTest {
+ @get:Rule
+ val temporaryFolder = TemporaryFolder()
+
+ private val sharedPrefsName = "shared_prefs_name"
+
+ private lateinit var context: Context
+ private lateinit var sharedPrefs: SharedPreferences
+ private lateinit var datastoreFile: File
+
+ @Before
+ fun setUp() {
+ context = ApplicationProvider.getApplicationContext()
+ sharedPrefs = context.getSharedPreferences(sharedPrefsName, Context.MODE_PRIVATE)
+ datastoreFile = temporaryFolder.newFile("test_file.preferences_pb")
+
+ assertThat(sharedPrefs.edit().clear().commit()).isTrue()
+ }
+
+ @Test
+ fun testShouldMigrateSkipsMigration() = runBlockingTest {
+ val migration = object : SharedPreferencesMigration.Migration<Byte> {
+ override suspend fun shouldMigrate(currentData: Byte) = false
+
+ override suspend fun migrate(
+ prefs: SharedPreferencesMigration.SharedPreferencesView,
+ currentData: Byte
+ ) = throw IllegalStateException("Migration is skipped.")
+ }
+
+ val sharedPrefsMigration = SharedPreferencesMigration.create(
+ context = context,
+ sharedPreferencesName = sharedPrefsName,
+ migration = migration
+ )
+
+ val dataStore = getDataStoreWithMigrations(listOf(sharedPrefsMigration))
+
+ // Make sure we aren't running migrate()
+ dataStore.data.first()
+ }
+
+ @Test
+ fun testSharedPrefsViewContainsSpecifiedKeys() = runBlockingTest {
+ val includedKey = "key1"
+ val includedVal = 1
+ val notMigratedKey = "key2"
+
+ assertThat(
+ sharedPrefs.edit()
+ .putInt(includedKey, includedVal)
+ .putInt(notMigratedKey, 123).commit()
+ ).isTrue()
+
+ val migration = object : SharedPreferencesMigration.Migration<Byte> {
+ override suspend fun shouldMigrate(currentData: Byte) = true
+
+ override suspend fun migrate(
+ prefs: SharedPreferencesMigration.SharedPreferencesView,
+ currentData: Byte
+ ): Byte {
+ assertThat(prefs.getInt(includedKey, -1)).isEqualTo(includedVal)
+ assertThrows<IllegalStateException> { prefs.getInt(notMigratedKey, -1) }
+
+ assertThat(prefs.getAll()).isEqualTo(mapOf(includedKey to includedVal))
+
+ return 99.toByte()
+ }
+ }
+
+ val sharedPrefsMigration = SharedPreferencesMigration.create(
+ context = context,
+ sharedPreferencesName = sharedPrefsName,
+ migration = migration,
+ keysToMigrate = setOf(includedKey)
+ )
+
+ val dataStore = getDataStoreWithMigrations(listOf(sharedPrefsMigration))
+
+ assertThat(dataStore.data.first()).isEqualTo(99)
+ assertThat(sharedPrefs.contains(includedKey)).isFalse()
+ assertThat(sharedPrefs.contains(notMigratedKey)).isTrue()
+ }
+
+ @Test
+ fun testSharedPrefsViewWithAllKeysSpecified() = runBlockingTest {
+ val key1 = "key1"
+ val val1 = 1
+ val key2 = "key2"
+ val val2 = 2
+
+ assertThat(
+ sharedPrefs.edit()
+ .putInt(key1, val1)
+ .putInt(key2, val2)
+ .commit()
+ ).isTrue()
+
+ val migration = object : SharedPreferencesMigration.Migration<Byte> {
+ override suspend fun shouldMigrate(currentData: Byte) = true
+
+ override suspend fun migrate(
+ prefs: SharedPreferencesMigration.SharedPreferencesView,
+ currentData: Byte
+ ): Byte {
+ assertThat(prefs.getInt(key1, -1)).isEqualTo(val1)
+ assertThat(prefs.getInt(key2, -1)).isEqualTo(val2)
+
+ assertThat(prefs.getAll()).isEqualTo(mapOf(key1 to val1, key2 to val2))
+
+ return 99.toByte()
+ }
+ }
+
+ val sharedPrefsMigration = SharedPreferencesMigration.create(
+ context = context,
+ sharedPreferencesName = sharedPrefsName,
+ migration = migration
+ )
+
+ val dataStore = getDataStoreWithMigrations(listOf(sharedPrefsMigration))
+
+ assertThat(dataStore.data.first()).isEqualTo(99)
+ assertThat(sharedPrefs.contains(key1)).isFalse()
+ assertThat(sharedPrefs.contains(key2)).isFalse()
+ }
+
+ private fun getDataStoreWithMigrations(
+ migrationProducers: List<() -> DataMigration<Byte>>
+ ): DataStore<Byte> {
+ return DataStoreFactory().create(
+ produceFile = { datastoreFile },
+ serializer = TestingSerializer(),
+ migrationProducers = migrationProducers,
+ scope = TestCoroutineScope()
+ )
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/CorruptionHandler.kt b/datastore/datastore-core/src/main/java/androidx/datastore/CorruptionHandler.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/CorruptionHandler.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/CorruptionHandler.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/DataMigration.kt b/datastore/datastore-core/src/main/java/androidx/datastore/DataMigration.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/DataMigration.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/DataMigration.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/DataMigrationInitializer.kt b/datastore/datastore-core/src/main/java/androidx/datastore/DataMigrationInitializer.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/DataMigrationInitializer.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/DataMigrationInitializer.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/DataStore.kt b/datastore/datastore-core/src/main/java/androidx/datastore/DataStore.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/DataStore.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/DataStore.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/DataStoreFactory.kt b/datastore/datastore-core/src/main/java/androidx/datastore/DataStoreFactory.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/DataStoreFactory.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/DataStoreFactory.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/InitializerApi.kt b/datastore/datastore-core/src/main/java/androidx/datastore/InitializerApi.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/InitializerApi.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/InitializerApi.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/Serializer.kt b/datastore/datastore-core/src/main/java/androidx/datastore/Serializer.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/Serializer.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/Serializer.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/SingleProcessDataStore.kt b/datastore/datastore-core/src/main/java/androidx/datastore/SingleProcessDataStore.kt
similarity index 98%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/SingleProcessDataStore.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/SingleProcessDataStore.kt
index 3e5a0ae..b0600c9 100644
--- a/datastore/datastore-core/src/main/kotlin/androidx/datastore/SingleProcessDataStore.kt
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/SingleProcessDataStore.kt
@@ -270,7 +270,11 @@
}
}
- private fun writeData(newData: T) {
+ /**
+ * Internal only to prevent creation of synthetic accessor function. Do not call this from
+ * outside this class.
+ */
+ internal fun writeData(newData: T) {
file.createParentDirectories()
val scratchFile = File(file.absolutePath + SCRATCH_SUFFIX)
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/handlers/NoOpCorruptionHandler.kt b/datastore/datastore-core/src/main/java/androidx/datastore/handlers/NoOpCorruptionHandler.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/handlers/NoOpCorruptionHandler.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/handlers/NoOpCorruptionHandler.kt
diff --git a/datastore/datastore-core/src/main/kotlin/androidx/datastore/handlers/ReplaceFileCorruptionHandler.kt b/datastore/datastore-core/src/main/java/androidx/datastore/handlers/ReplaceFileCorruptionHandler.kt
similarity index 100%
rename from datastore/datastore-core/src/main/kotlin/androidx/datastore/handlers/ReplaceFileCorruptionHandler.kt
rename to datastore/datastore-core/src/main/java/androidx/datastore/handlers/ReplaceFileCorruptionHandler.kt
diff --git a/datastore/datastore-core/src/main/java/androidx/datastore/migrations/SharedPreferencesMigration.kt b/datastore/datastore-core/src/main/java/androidx/datastore/migrations/SharedPreferencesMigration.kt
new file mode 100644
index 0000000..c2e68f0
--- /dev/null
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/migrations/SharedPreferencesMigration.kt
@@ -0,0 +1,267 @@
+/*
+ * Copyright 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 androidx.datastore.migrations
+
+import android.content.Context
+import android.content.SharedPreferences
+import androidx.datastore.DataMigration
+import java.io.File
+import java.io.IOException
+
+/**
+ * A DataMigration which migrates SharedPreferences to DataStore.
+ *
+ * Note: this accesses the SharedPreferences using MODE_PRIVATE.
+ */
+class SharedPreferencesMigration<T> private constructor() {
+ companion object {
+ internal val MIGRATE_ALL_KEYS = null
+
+ @JvmStatic
+ fun <T> create(
+ /** Context used for getting SharedPreferences. */
+ context: Context,
+ /** The name of the SharedPreferences. */
+ sharedPreferencesName: String,
+ /** The mapping function for the migration. */
+ migration: Migration<T>,
+ /**
+ * The list of keys to migrate. The keys will be mapped to datastore.Preferences with
+ * their same values. If the key is already present in the new Preferences, the key
+ * will not be migrated again. If the key is not present in the SharedPreferences it
+ * will not be migrated.
+ *
+ * If keysToMigrate is null, all keys will be migrated from the existing
+ * SharedPreferences.
+ */
+ keysToMigrate: Set<String>? = MIGRATE_ALL_KEYS,
+ /**
+ * If enabled and the SharedPreferences are empty (i.e. no remaining keys) after this
+ * migration runs, the leftover SharedPreferences file is deleted. Note that this
+ * cleanup runs only if the migration itself runs, i.e., if the keys were never in
+ * SharedPreferences to begin with then the (potentially) empty SharedPreferences
+ * won't be cleaned up by this option.
+ */
+ deleteEmptyPreferences: Boolean = true
+ ): () -> DataMigration<T> = {
+ SharedPreferencesDataMigration(
+ context,
+ sharedPreferencesName,
+ migration,
+ keysToMigrate?.toMutableSet(),
+ deleteEmptyPreferences
+ )
+ }
+ }
+
+ /**
+ * User implemented migration interface. Contains logic for mapping SharedPreferences data to T.
+ */
+ interface Migration<T> {
+ /**
+ * Optional method that should return false if the migration should be skipped. This can
+ * be useful to stop unnecessary calls into SharedPreferences. This can be implemented by
+ * including a field in your data that specifies whether your migration has already been
+ * run.
+ *
+ * @param currentData the current data (it might already populated from this or other
+ * migrations)
+ * @return Whether or not this migration should run.
+ */
+ suspend fun shouldMigrate(currentData: T): Boolean = true
+
+ /**
+ * Perform the migration. Implementations should be idempotent since this may be called
+ * multiple times. See {@code DataMigration#migrate} for more information.
+ *
+ * @param prefs the view of the SharedPreferences to migrate from.
+ * @param currentData the current data (it might be populated from other migrations or from
+ * manual changes before this migration was added to the app)
+ * @return The migrated data.
+ */
+ suspend fun migrate(prefs: SharedPreferencesView, currentData: T): T
+ }
+
+ /**
+ * Read-only wrapper around SharedPreferences. This will be passed in to your migration. The
+ * constructor is public to enable easier testing of migrations.
+ */
+ class SharedPreferencesView(
+ private val prefs: SharedPreferences,
+ private val keySet: Set<String>
+ ) {
+ /**
+ * Checks whether the preferences contains a preference.
+ *
+ * @param key the name of the preference to check
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ operator fun contains(key: String): Boolean = prefs.contains(checkKey(key))
+
+ /**
+ * Retrieves a boolean value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValue value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getBoolean(key: String, defValue: Boolean): Boolean =
+ prefs.getBoolean(checkKey(key), defValue)
+
+ /**
+ * Retrieves a float value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValue value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getFloat(key: String, defValue: Float): Float = prefs.getFloat(checkKey(key), defValue)
+
+ /**
+ * Retrieves a int value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValue value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getInt(key: String, defValue: Int): Int = prefs.getInt(checkKey(key), defValue)
+
+ /**
+ * Retrieves a long value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValue value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getLong(key: String, defValue: Long): Long = prefs.getLong(checkKey(key), defValue)
+
+ /**
+ * Retrieves a string value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValue value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getString(key: String, defValue: String? = null): String? =
+ prefs.getString(checkKey(key), defValue)
+
+ /**
+ * Retrieves a string set value from the preferences.
+ *
+ * @param key the name of the preference to retrieve
+ * @param defValues value to return if this preference does not exist
+ * @throws IllegalArgumentException if `key` wasn't specified as part of this migration
+ */
+ fun getStringSet(key: String, defValues: Set<String>? = null): Set<String>? =
+ prefs.getStringSet(checkKey(key), defValues)?.toMutableSet()
+
+ /** Retrieve all values from the preferences that are in the specified keySet. */
+ fun getAll(): Map<String, Any?> = prefs.all.filter { (key, _) ->
+ key in keySet
+ }.mapValues { (_, value) ->
+ if (value is Set<*>) {
+ value.toSet()
+ } else {
+ value
+ }
+ }
+
+ private fun checkKey(key: String): String? {
+ check(key in keySet) { "Can't access key outside migration: $key" }
+ return key
+ }
+ }
+
+ private class SharedPreferencesDataMigration<T> internal constructor(
+ private val context: Context,
+ private val sharedPreferencesName: String,
+ private val migration: Migration<T>,
+ keysToMigrate: MutableSet<String>?,
+ private val deleteEmptyPreferences: Boolean
+ ) : DataMigration<T> {
+ private val sharedPrefs: SharedPreferences by lazy {
+ context.getSharedPreferences(sharedPreferencesName, Context.MODE_PRIVATE)
+ }
+
+ private val keySet: MutableSet<String> by lazy {
+ keysToMigrate ?: sharedPrefs.all.keys.toMutableSet()
+ }
+
+ override suspend fun shouldMigrate(currentData: T): Boolean {
+ if (!migration.shouldMigrate(currentData)) {
+ return false
+ }
+
+ return keySet.any(sharedPrefs::contains)
+ }
+
+ override suspend fun migrate(currentData: T): T =
+ migration.migrate(
+ SharedPreferencesView(
+ sharedPrefs,
+ keySet
+ ), currentData
+ )
+
+ @Throws(IOException::class)
+ override suspend fun cleanUp() {
+ val sharedPrefsEditor = sharedPrefs.edit()
+
+ for (key in keySet) {
+ sharedPrefsEditor.remove(key)
+ }
+
+ if (!sharedPrefsEditor.commit()) {
+ throw IOException(
+ "Unable to delete migrated keys from SharedPreferences: $sharedPreferencesName"
+ )
+ }
+
+ if (deleteEmptyPreferences && sharedPrefs.all.isEmpty()) {
+ deleteSharedPreferences(context, sharedPreferencesName)
+ }
+
+ keySet.clear()
+ }
+
+ private fun deleteSharedPreferences(context: Context, name: String) {
+ if (android.os.Build.VERSION.SDK_INT >= 24) {
+ if (!context.deleteSharedPreferences(name)) {
+ throw IOException("Unable to delete SharedPreferences: $name")
+ }
+ return
+ }
+
+ // Context.deleteSharedPreferences is SDK 24+, so we have to reproduce the definition
+ val prefsFile = getSharedPrefsFile(context, name)
+ val prefsBackup = getSharedPrefsBackup(prefsFile)
+
+ // Silently continue if we aren't able to delete the Shared Preferences File.
+ prefsFile.delete()
+ prefsBackup.delete()
+ }
+
+ // ContextImpl.getSharedPreferencesPath is private, so we have to reproduce the definition
+ private fun getSharedPrefsFile(context: Context, name: String): File {
+ val prefsDir = File(context.applicationInfo.dataDir, "shared_prefs")
+ return File(prefsDir, "$name.xml")
+ }
+
+ // SharedPreferencesImpl.makeBackupFile is private, so we have to reproduce the definition
+ private fun getSharedPrefsBackup(prefsFile: File) = File(prefsFile.path + ".bak")
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-preferences/api/1.0.0-alpha01.txt b/datastore/datastore-preferences/api/1.0.0-alpha01.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/1.0.0-alpha01.txt
+++ b/datastore/datastore-preferences/api/1.0.0-alpha01.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/api/api_lint.ignore b/datastore/datastore-preferences/api/api_lint.ignore
index 2890439..cf8793c 100644
--- a/datastore/datastore-preferences/api/api_lint.ignore
+++ b/datastore/datastore-preferences/api/api_lint.ignore
@@ -1,3 +1,7 @@
// Baseline format: 1.0
BuilderSetStyle: androidx.datastore.preferences.Preferences.Builder#remove(String):
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.datastore.preferences.Preferences.Builder.remove(String)
+
+
+ContextFirst: androidx.datastore.preferences.SharedPreferencesToPreferencesKt#create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context, String, java.util.Set<java.lang.String>, boolean) parameter #1:
+ Context is distinct, so it must be the first argument (method `create`)
diff --git a/datastore/datastore-preferences/api/current.txt b/datastore/datastore-preferences/api/current.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/current.txt
+++ b/datastore/datastore-preferences/api/current.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/api/public_plus_experimental_1.0.0-alpha01.txt b/datastore/datastore-preferences/api/public_plus_experimental_1.0.0-alpha01.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/public_plus_experimental_1.0.0-alpha01.txt
+++ b/datastore/datastore-preferences/api/public_plus_experimental_1.0.0-alpha01.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/api/public_plus_experimental_current.txt b/datastore/datastore-preferences/api/public_plus_experimental_current.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-preferences/api/public_plus_experimental_current.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/api/restricted_1.0.0-alpha01.txt b/datastore/datastore-preferences/api/restricted_1.0.0-alpha01.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/restricted_1.0.0-alpha01.txt
+++ b/datastore/datastore-preferences/api/restricted_1.0.0-alpha01.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/api/restricted_current.txt b/datastore/datastore-preferences/api/restricted_current.txt
index 45ea06f..041fe30 100644
--- a/datastore/datastore-preferences/api/restricted_current.txt
+++ b/datastore/datastore-preferences/api/restricted_current.txt
@@ -19,7 +19,7 @@
method public String getString(String key, String defaultValue);
method public java.util.Set<java.lang.String> getStringSet(String key, java.util.Set<java.lang.String> defaultValue);
method public androidx.datastore.preferences.Preferences.Builder toBuilder();
- field public static final androidx.datastore.preferences.Preferences.Companion! Companion;
+ field public static final androidx.datastore.preferences.Preferences.Companion Companion;
}
public static final class Preferences.Builder {
@@ -39,13 +39,8 @@
method public androidx.datastore.preferences.Preferences empty();
}
- public final class SharedPreferencesMigration {
- method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
- field public static final androidx.datastore.preferences.SharedPreferencesMigration.Companion! Companion;
- }
-
- public static final class SharedPreferencesMigration.Companion {
- method public kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
+ public final class SharedPreferencesToPreferencesKt {
+ method public static kotlin.jvm.functions.Function0<androidx.datastore.DataMigration<androidx.datastore.preferences.Preferences>> create(androidx.datastore.migrations.SharedPreferencesMigration.Companion, android.content.Context context, String sharedPreferencesName, java.util.Set<java.lang.String>? keysToMigrate = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS, boolean deleteEmptyPreferences = true);
}
}
diff --git a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesMigrationTest.kt b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
similarity index 98%
rename from datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesMigrationTest.kt
rename to datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
index 685e126..61a2dad 100644
--- a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesMigrationTest.kt
+++ b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/SharedPreferencesToPreferencesTest.kt
@@ -20,6 +20,7 @@
import android.content.SharedPreferences
import androidx.datastore.DataMigration
import androidx.datastore.DataStore
+import androidx.datastore.migrations.SharedPreferencesMigration
import androidx.test.core.app.ApplicationProvider
import androidx.test.filters.MediumTest
import com.google.common.truth.Truth.assertThat
@@ -36,7 +37,7 @@
@kotlinx.coroutines.ObsoleteCoroutinesApi
@kotlinx.coroutines.FlowPreview
@MediumTest
-class SharedPreferencesMigrationTest {
+class SharedPreferencesToPreferencesTest {
@get:Rule
val temporaryFolder = TemporaryFolder()
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt
deleted file mode 100644
index ceff544..0000000
--- a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesMigration.kt
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 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 androidx.datastore.preferences
-
-import android.content.Context
-import android.content.SharedPreferences
-import androidx.datastore.DataMigration
-import java.io.File
-import java.io.IOException
-
-/**
- * A DataMigration which migrates SharedPreferences to DataStore.
- *
- * Note: this accesses the SharedPreferences using MODE_PRIVATE.
- */
-class SharedPreferencesMigration private constructor() {
- companion object {
- internal val MIGRATE_ALL_KEYS = null
-
- @JvmStatic
- fun create(
- /** Context used for getting SharedPreferences. */
- context: Context,
- /** The name of the SharedPreferences. */
- sharedPreferencesName: String,
- /**
- * The list of keys to migrate. The keys will be mapped to datastore.Preferences with
- * their same values. If the key is already present in the new Preferences, the key
- * will not be migrated again. If the key is not present in the SharedPreferences it
- * will not be migrated.
- *
- * If keysToMigrate is null, all keys will be migrated from the existing
- * SharedPreferences.
- */
- keysToMigrate: Set<String>? = MIGRATE_ALL_KEYS,
- /**
- * If enabled and the SharedPreferences are empty (i.e. no remaining keys) after this
- * migration runs, the leftover SharedPreferences file is deleted. Note that this
- * cleanup runs only if the migration itself runs, i.e., if the keys were never in
- * SharedPreferences to begin with then the (potentially) empty SharedPreferences
- * won't be cleaned up by this option.
- */
- deleteEmptyPreferences: Boolean = true
- ): () -> DataMigration<Preferences> = {
- SharedPreferencesDataMigration(
- context,
- sharedPreferencesName,
- keysToMigrate?.toMutableSet(),
- deleteEmptyPreferences
- )
- }
- }
-
- private class SharedPreferencesDataMigration internal constructor(
- private val context: Context,
- private val sharedPreferencesName: String,
- keysToMigrate: MutableSet<String>?,
- private val deleteEmptyPreferences: Boolean
- ) : DataMigration<Preferences> {
- private val sharedPrefs: SharedPreferences by lazy {
- context.getSharedPreferences(
- sharedPreferencesName, Context.MODE_PRIVATE
- )
- }
-
- private val keySet: MutableSet<String> by lazy {
- keysToMigrate ?: sharedPrefs.all.keys.toMutableSet()
- }
-
- override suspend fun shouldMigrate(currentData: Preferences): Boolean {
- // Don't migrate keys that have already been migrated.
- keySet.removeAll { key -> currentData.contains(key) }
- if (keySet.isEmpty()) {
- return false
- }
-
- return keySet.any(sharedPrefs::contains)
- }
-
- override suspend fun migrate(currentData: Preferences): Preferences {
- val preferencesToMigrate = sharedPrefs.all.filter { (key, _) -> key in keySet }
-
- val preferencesBuilder = currentData.toBuilder()
- for ((key, value) in preferencesToMigrate) {
- when (value) {
- is Boolean -> preferencesBuilder.setBoolean(key, value)
- is Float -> preferencesBuilder.setFloat(key, value)
- is Int -> preferencesBuilder.setInt(key, value)
- is Long -> preferencesBuilder.setLong(key, value)
- is String -> preferencesBuilder.setString(key, value)
- is Set<*> ->
- @Suppress("UNCHECKED_CAST")
- preferencesBuilder.setStringSet(key,
- value.mapTo(mutableSetOf()) { it as String }
- )
- }
- }
-
- return preferencesBuilder.build()
- }
-
- @Throws(IOException::class)
- override suspend fun cleanUp() {
- val sharedPrefsEditor = sharedPrefs.edit()
-
- for (key in keySet) {
- sharedPrefsEditor.remove(key)
- }
-
- if (!sharedPrefsEditor.commit()) {
- throw IOException(
- "Unable to delete migrated keys from SharedPreferences: $sharedPreferencesName"
- )
- }
-
- if (deleteEmptyPreferences && sharedPrefs.all.isEmpty()) {
- deleteSharedPreferences(context, sharedPreferencesName)
- }
-
- keySet.clear()
- }
-
- private fun deleteSharedPreferences(context: Context, name: String) {
- if (android.os.Build.VERSION.SDK_INT >= 24) {
- if (!context.deleteSharedPreferences(name)) {
- throw IOException("Unable to delete SharedPreferences: $name")
- }
- return
- }
-
- // Context.deleteSharedPreferences is SDK 24+, so we have to reproduce the definition
- // here
- val prefsFile = getSharedPrefsFile(context, name)
- val prefsBackup = getSharedPrefsBackup(prefsFile)
-
- prefsFile.delete()
- prefsBackup.delete()
-
- // If either of the files still exist - we failed to delete.
- if (prefsFile.exists()) {
- throw IOException("Unable to delete shared preferences file: $prefsFile")
- }
-
- if (prefsBackup.exists()) {
- throw IOException("Unable to delete shared preferences backup files: $prefsBackup")
- }
- }
-
- private fun getSharedPrefsFile(context: Context, name: String): File {
- // ContextImpl.getSharedPreferencesPath is private, so we have to reproduce the
- // definition here
- val prefsDir = File(context.applicationInfo.dataDir, "shared_prefs")
- return File(prefsDir, "$name.xml")
- }
-
- private fun getSharedPrefsBackup(prefsFile: File): File {
- // SharedPreferencesImpl.makeBackupFile is private, so we have to reproduce the
- // definition here
- return File(prefsFile.path + ".bak")
- }
- }
-}
diff --git a/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesToPreferences.kt b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesToPreferences.kt
new file mode 100644
index 0000000..d1375fc
--- /dev/null
+++ b/datastore/datastore-preferences/src/main/java/androidx/datastore/preferences/SharedPreferencesToPreferences.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright 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 androidx.datastore.preferences
+
+import android.content.Context
+import androidx.datastore.DataMigration
+import androidx.datastore.migrations.SharedPreferencesMigration
+
+/**
+ * Creates a SharedPreferencesMigration for DataStore<Preferences>.
+ */
+fun SharedPreferencesMigration.Companion.create(
+ /** Context used for getting SharedPreferences. */
+ context: Context,
+ /** The name of the SharedPreferences. */
+ sharedPreferencesName: String,
+ /**
+ * The list of keys to migrate. The keys will be mapped to datastore.Preferences with
+ * their same values. If the key is already present in the new Preferences, the key
+ * will not be migrated again. If the key is not present in the SharedPreferences it
+ * will not be migrated.
+ *
+ * If keysToMigrate is not set, all keys will be migrated from the existing
+ * SharedPreferences.
+ */
+ keysToMigrate: Set<String>? = SharedPreferencesToPreferences.MIGRATE_ALL_KEYS,
+ /**
+ * If enabled and the SharedPreferences are empty (i.e. no remaining keys) after this
+ * migration runs, the leftover SharedPreferences file is deleted. Note that this
+ * cleanup runs only if the migration itself runs, i.e., if the keys were never in
+ * SharedPreferences to begin with then the (potentially) empty SharedPreferences
+ * won't be cleaned up by this option.
+ */
+ deleteEmptyPreferences: Boolean = true
+): () -> DataMigration<Preferences> {
+ return create(
+ context,
+ sharedPreferencesName,
+ SharedPreferencesToPreferences(keysToMigrate),
+ keysToMigrate,
+ deleteEmptyPreferences
+ )
+}
+
+/**
+ * A DataMigration which migrates SharedPreferences to DataStore.
+ *
+ * Note: this accesses the SharedPreferences using MODE_PRIVATE.
+ */
+internal class SharedPreferencesToPreferences(
+ private val keysToMigrate: Set<String>?
+) : SharedPreferencesMigration.Migration<Preferences> {
+
+ companion object {
+ internal val MIGRATE_ALL_KEYS = null
+ }
+
+ override suspend fun shouldMigrate(currentData: Preferences): Boolean {
+ if (keysToMigrate == null) {
+ // We need to migrate all keys from the SharedPreferences.
+ return true
+ }
+
+ // If any key hasn't been migrated to currentData, we can't skip the migration.
+ return keysToMigrate.any { it !in currentData }
+ }
+
+ override suspend fun migrate(
+ prefs: SharedPreferencesMigration.SharedPreferencesView,
+ currentData: Preferences
+ ): Preferences {
+ // prefs.getAll is already filtered to our key set.
+ val preferencesToMigrate = prefs.getAll().filter { (key, _) -> key !in currentData }
+
+ val preferencesBuilder = currentData.toBuilder()
+ for ((key, value) in preferencesToMigrate) {
+ when (value) {
+ is Boolean -> preferencesBuilder.setBoolean(key, value)
+ is Float -> preferencesBuilder.setFloat(key, value)
+ is Int -> preferencesBuilder.setInt(key, value)
+ is Long -> preferencesBuilder.setLong(key, value)
+ is String -> preferencesBuilder.setString(key, value)
+ is Set<*> ->
+ @Suppress("UNCHECKED_CAST")
+ preferencesBuilder.setStringSet(key, value.toSet() as Set<String>)
+ }
+ }
+
+ return preferencesBuilder.build()
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/.gitignore b/datastore/datastore-sampleapp/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/datastore/datastore-sampleapp/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/build.gradle b/datastore/datastore-sampleapp/build.gradle
new file mode 100644
index 0000000..0072845
--- /dev/null
+++ b/datastore/datastore-sampleapp/build.gradle
@@ -0,0 +1,94 @@
+/*
+ * Copyright 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.
+ */
+
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+import static androidx.build.dependencies.DependenciesKt.CONSTRAINT_LAYOUT
+import static androidx.build.dependencies.DependenciesKt.MATERIAL
+import static androidx.build.dependencies.DependenciesKt.PROTOBUF_COMPILER
+import static androidx.build.dependencies.DependenciesKt.PROTOBUF_LITE
+import static androidx.build.dependencies.DependenciesKt.KOTLIN_STDLIB
+
+plugins {
+ id("AndroidXPlugin")
+ id('com.android.application')
+ id('kotlin-android')
+ id("com.google.protobuf")
+}
+
+android {
+ compileSdkVersion 29
+ buildToolsVersion "29.0.3"
+
+ defaultConfig {
+ applicationId "com.example.datastoresampleapp"
+ minSdkVersion 16
+ targetSdkVersion 29
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+}
+
+dependencies {
+ //For DataStore with Preferences
+ implementation(project(":datastore:datastore-preferences"))
+
+ // For DataStore with protos
+ implementation(project(":datastore:datastore-core"))
+ implementation(PROTOBUF_LITE)
+
+ implementation(KOTLIN_STDLIB)
+
+ implementation(MATERIAL)
+ implementation(CONSTRAINT_LAYOUT, { transitive = true })
+ implementation('androidx.navigation:navigation-fragment-ktx:2.2.2')
+ implementation project(":annotation:annotation-sampled")
+}
+
+protobuf {
+ protoc {
+ artifact = PROTOBUF_COMPILER
+ }
+
+ // Generates the java proto-lite code for the protos in this project. See
+ // https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation
+ // for more information.
+ generateProtoTasks {
+ all().each { task ->
+ task.builtins {
+ java {
+ option 'lite'
+ }
+ }
+ }
+ }
+}
+
+// Allow usage of Kotlin's @OptIn.
+tasks.withType(KotlinCompile).configureEach {
+ kotlinOptions {
+ freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/src/main/AndroidManifest.xml b/datastore/datastore-sampleapp/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..e46b51a
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.datastoresampleapp">
+
+ <application
+ android:allowBackup="true"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.null">
+ <activity android:name=".PreferencesDataStoreActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity android:name=".ProtoDataStoreActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
new file mode 100644
index 0000000..d36e21b
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/PreferencesDataStoreActivity.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright 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 com.example.datastoresampleapp
+
+import android.os.Bundle
+import android.os.StrictMode
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.annotation.Sampled
+import androidx.appcompat.app.AppCompatActivity
+import androidx.datastore.DataStore
+import androidx.datastore.preferences.PreferenceDataStoreFactory
+import androidx.datastore.preferences.Preferences
+import androidx.lifecycle.lifecycleScope
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.launch
+import java.io.File
+import java.io.IOException
+
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+class PreferencesDataStoreActivity : AppCompatActivity() {
+ private val TAG = "PreferencesActivity"
+
+ private val PREFERENCE_STORE_FILE_NAME = "datastore_test_app.preferences_pb"
+ private val COUNTER_KEY = "counter"
+
+ private val preferenceStore: DataStore<Preferences> by lazy {
+ PreferenceDataStoreFactory().create(
+ { File(applicationContext.filesDir, PREFERENCE_STORE_FILE_NAME) })
+ }
+
+ @Sampled
+ override fun onCreate(savedInstanceState: Bundle?) {
+ // Strict mode allows us to check that no writes or reads are blocking the UI thread.
+ StrictMode.setThreadPolicy(
+ StrictMode.ThreadPolicy.Builder()
+ .detectDiskReads()
+ .detectDiskWrites()
+ .penaltyDeath()
+ .build()
+ )
+
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ setUpPreferenceStoreUi()
+ }
+
+ @Sampled
+ private fun setUpPreferenceStoreUi() {
+ // Using preferenceStore:
+ findViewById<Button>(R.id.counter_dec).setOnClickListener {
+ lifecycleScope.launch {
+ preferenceStore.updateData { currentPrefs ->
+ val currentValue = currentPrefs.getInt(COUNTER_KEY, defaultValue = 0)
+ currentPrefs.toBuilder().setInt(COUNTER_KEY, currentValue - 1).build()
+ }
+ }
+ }
+
+ findViewById<Button>(R.id.counter_inc).setOnClickListener {
+ lifecycleScope.launch {
+ preferenceStore.updateData { currentPrefs ->
+ val currentValue = currentPrefs.getInt(COUNTER_KEY, defaultValue = 0)
+ currentPrefs.toBuilder().setInt(COUNTER_KEY, currentValue + 1).build()
+ }
+ }
+ }
+
+ lifecycleScope.launch {
+ preferenceStore.data
+ .catch { e ->
+ if (e is IOException) {
+ Log.e(TAG, "Error reading preferences.", e)
+ emit(Preferences.empty())
+ } else {
+ throw e
+ }
+ }
+ .map { it.getInt(COUNTER_KEY, defaultValue = 0) }
+ .distinctUntilChanged()
+ .collect { counterValue ->
+ findViewById<TextView>(R.id.counter_text_view).text = counterValue.toString()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
new file mode 100644
index 0000000..57d6411
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/java/com/example/datastoresampleapp/ProtoDataStoreActivity.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright 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 com.example.datastoresampleapp
+
+import android.os.Bundle
+import android.os.StrictMode
+import android.util.Log
+import android.widget.Button
+import android.widget.TextView
+import androidx.annotation.Sampled
+import androidx.appcompat.app.AppCompatActivity
+import androidx.datastore.CorruptionException
+import androidx.datastore.DataStore
+import androidx.datastore.DataStoreFactory
+import androidx.datastore.Serializer
+import androidx.lifecycle.lifecycleScope
+import com.google.protobuf.InvalidProtocolBufferException
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.collect
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.launch
+import java.io.File
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
+
+@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
+class ProtoDataStoreActivity : AppCompatActivity() {
+ private val TAG = "ProtoActivity"
+
+ private val PROTO_STORE_FILE_NAME = "datastore_test_app.pb"
+
+ private val settingsStore: DataStore<Settings> by lazy {
+ DataStoreFactory().create(
+ { File(applicationContext.filesDir, PROTO_STORE_FILE_NAME) },
+ SettingsSerializer
+ )
+ }
+
+ @Sampled
+ override fun onCreate(savedInstanceState: Bundle?) {
+ // Strict mode allows us to check that no writes or reads are blocking the UI thread.
+ StrictMode.setThreadPolicy(
+ StrictMode.ThreadPolicy.Builder()
+ .detectDiskReads()
+ .detectDiskWrites()
+ .penaltyDeath()
+ .build()
+ )
+
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ setUpProtoDataStoreUi()
+ }
+
+ @Sampled
+ private fun setUpProtoDataStoreUi() {
+ findViewById<Button>(R.id.counter_dec).setOnClickListener {
+ lifecycleScope.launch {
+ settingsStore.updateData { currentSettings ->
+ currentSettings.toBuilder().setCounter(currentSettings.counter - 1).build()
+ }
+ }
+ }
+
+ findViewById<Button>(R.id.counter_inc).setOnClickListener {
+ lifecycleScope.launch {
+ settingsStore.updateData { currentSettings ->
+ currentSettings.toBuilder().setCounter(currentSettings.counter + 1).build()
+ }
+ }
+ }
+
+ lifecycleScope.launch {
+ settingsStore.data
+ .catch { e ->
+ if (e is IOException) {
+ Log.e(TAG, "Error reading preferences.", e)
+ emit(Settings.getDefaultInstance())
+ } else {
+ throw e
+ }
+ }
+ .map { it.counter }
+ .distinctUntilChanged()
+ .collect { counterValue ->
+ findViewById<TextView>(R.id.counter_text_view).text =
+ counterValue.toString()
+ }
+ }
+ }
+
+ private object SettingsSerializer : Serializer<Settings> {
+ override fun readFrom(input: InputStream): Settings {
+ try {
+ return Settings.parseFrom(input)
+ } catch (ipbe: InvalidProtocolBufferException) {
+ throw CorruptionException("Cannot read proto.", ipbe)
+ }
+ }
+
+ override fun writeTo(t: Settings, output: OutputStream) = t.writeTo(output)
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/src/main/proto/settings.proto b/datastore/datastore-sampleapp/src/main/proto/settings.proto
new file mode 100644
index 0000000..38fd074
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/proto/settings.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+
+option java_package = "com.example.datastoresampleapp";
+option java_multiple_files = true;
+
+message Settings {
+ int32 counter = 1;
+}
diff --git a/datastore/datastore-sampleapp/src/main/res/layout/activity_main.xml b/datastore/datastore-sampleapp/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..0775572
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/res/layout/activity_main.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Copyright 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.
+ -->
+
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/rootLayout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".PreferencesDataStoreActivity">
+
+ <Button
+ android:id="@+id/counter_inc"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="16dp"
+ android:layout_marginRight="16dp"
+ android:layout_marginTop="16dp"
+ android:text="Counter++"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <Button
+ android:id="@+id/counter_dec"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="16dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="16dp"
+ android:text="Counter--"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <TextView
+ android:id="@+id/counter_text_view"
+ android:layout_width="101dp"
+ android:layout_height="54dp"
+ android:layout_marginTop="16dp"
+ android:gravity="center"
+ android:text="Loading Counter"
+ android:textAppearance="@style/TextAppearance.AppCompat.Large"
+ app:layout_constraintEnd_toStartOf="@+id/counter_inc"
+ app:layout_constraintStart_toEndOf="@+id/counter_dec"
+ app:layout_constraintTop_toTopOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/datastore/datastore-sampleapp/src/main/res/values/themes.xml b/datastore/datastore-sampleapp/src/main/res/values/themes.xml
new file mode 100644
index 0000000..826f8ba
--- /dev/null
+++ b/datastore/datastore-sampleapp/src/main/res/values/themes.xml
@@ -0,0 +1,20 @@
+<!--
+ Copyright 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.
+ -->
+
+<resources>
+ <style name="Theme.null" parent="Theme.AppCompat.DayNight.DarkActionBar">
+ </style>
+</resources>
\ No newline at end of file
diff --git a/development/build_log_simplifier.py b/development/build_log_simplifier.py
index b7f5cf2..4f838e4 100755
--- a/development/build_log_simplifier.py
+++ b/development/build_log_simplifier.py
@@ -74,10 +74,12 @@
"A fine-grained performance profile is available: use the --scan option.",
"* Get more help at https://help.gradle.org",
"Use '--warning-mode all' to show the individual deprecation warnings.",
- "See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings"
+ "See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings",
"Note: Some input files use or override a deprecated API.",
- "Note: Recompile with -Xlint:deprecation for details."
+ "Note: Recompile with -Xlint:deprecation for details.",
+ "Note: Some input files use unchecked or unsafe operations.",
+ "Note: Recompile with -Xlint:unchecked for details."
}
skipPrefixes = [
"See the profiling report at:",
diff --git a/development/referenceDocs/stageComposeReferenceDocs.sh b/development/referenceDocs/stageComposeReferenceDocs.sh
index 95db2ae..d3c1831 100755
--- a/development/referenceDocs/stageComposeReferenceDocs.sh
+++ b/development/referenceDocs/stageComposeReferenceDocs.sh
@@ -93,7 +93,7 @@
g4d -f androidx-ref-docs-stage && \
cd third_party/devsite/android/en/reference && \
g4 sync && \
-cp -r $newDir/reference/* . && \
+cp -r $(pwd)/* . && \
/google/data/ro/projects/devsite/two/live/devsite2.par stage kotlin/androidx
\`\`\`\n"
diff --git a/fragment/fragment-testing/api/1.3.0-alpha07.txt b/fragment/fragment-testing/api/1.3.0-alpha07.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/1.3.0-alpha07.txt
+++ b/fragment/fragment-testing/api/1.3.0-alpha07.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/api/api_lint.ignore b/fragment/fragment-testing/api/api_lint.ignore
index 5f4e236..eb23956 100644
--- a/fragment/fragment-testing/api/api_lint.ignore
+++ b/fragment/fragment-testing/api/api_lint.ignore
@@ -1,9 +1,17 @@
// Baseline format: 1.0
MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragment(android.os.Bundle, int, androidx.fragment.app.FragmentFactory):
Missing nullability on method `launchFragment` return
+MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragment(android.os.Bundle, int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory):
+ Missing nullability on method `launchFragment` return
+MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragment(android.os.Bundle, int, androidx.lifecycle.Lifecycle.State, kotlin.jvm.functions.Function0<? extends F>):
+ Missing nullability on method `launchFragment` return
MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragment(android.os.Bundle, int, kotlin.jvm.functions.Function0<? extends F>):
Missing nullability on method `launchFragment` return
MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragmentInContainer(android.os.Bundle, int, androidx.fragment.app.FragmentFactory):
Missing nullability on method `launchFragmentInContainer` return
+MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragmentInContainer(android.os.Bundle, int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory):
+ Missing nullability on method `launchFragmentInContainer` return
+MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragmentInContainer(android.os.Bundle, int, androidx.lifecycle.Lifecycle.State, kotlin.jvm.functions.Function0<? extends F>):
+ Missing nullability on method `launchFragmentInContainer` return
MissingNullability: androidx.fragment.app.testing.FragmentScenarioKt#launchFragmentInContainer(android.os.Bundle, int, kotlin.jvm.functions.Function0<? extends F>):
Missing nullability on method `launchFragmentInContainer` return
diff --git a/fragment/fragment-testing/api/current.txt b/fragment/fragment-testing/api/current.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/current.txt
+++ b/fragment/fragment-testing/api/current.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/api/public_plus_experimental_1.3.0-alpha07.txt b/fragment/fragment-testing/api/public_plus_experimental_1.3.0-alpha07.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/public_plus_experimental_1.3.0-alpha07.txt
+++ b/fragment/fragment-testing/api/public_plus_experimental_1.3.0-alpha07.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/api/public_plus_experimental_current.txt b/fragment/fragment-testing/api/public_plus_experimental_current.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/public_plus_experimental_current.txt
+++ b/fragment/fragment-testing/api/public_plus_experimental_current.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/api/restricted_1.3.0-alpha07.txt b/fragment/fragment-testing/api/restricted_1.3.0-alpha07.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/restricted_1.3.0-alpha07.txt
+++ b/fragment/fragment-testing/api/restricted_1.3.0-alpha07.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/api/restricted_current.txt b/fragment/fragment-testing/api/restricted_current.txt
index 2932e93..c3e223b 100644
--- a/fragment/fragment-testing/api/restricted_current.txt
+++ b/fragment/fragment-testing/api/restricted_current.txt
@@ -6,10 +6,12 @@
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launch(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, androidx.fragment.app.FragmentFactory?);
method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.fragment.app.FragmentFactory?);
+ method public static <F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F!> launchInContainer(Class<F!>, android.os.Bundle?, @StyleRes int, androidx.lifecycle.Lifecycle.State, androidx.fragment.app.FragmentFactory?);
method public androidx.fragment.app.testing.FragmentScenario<F!> moveToState(androidx.lifecycle.Lifecycle.State);
method public androidx.fragment.app.testing.FragmentScenario<F!> onFragment(androidx.fragment.app.testing.FragmentScenario.FragmentAction<F!>);
method public androidx.fragment.app.testing.FragmentScenario<F!> recreate();
@@ -22,8 +24,12 @@
public final class FragmentScenarioKt {
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragment(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.fragment.app.FragmentFactory? factory = null);
method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, kotlin.jvm.functions.Function0<? extends F> instantiate);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, androidx.fragment.app.FragmentFactory? factory = null);
+ method public static inline <reified F extends androidx.fragment.app.Fragment> androidx.fragment.app.testing.FragmentScenario<F>! launchFragmentInContainer(android.os.Bundle? fragmentArgs = null, @StyleRes int themeResId = androidx.fragment.testing.R.style.FragmentScenarioEmptyFragmentActivityTheme, androidx.lifecycle.Lifecycle.State initialState = androidx.lifecycle.Lifecycle.State.RESUMED, kotlin.jvm.functions.Function0<? extends F> instantiate);
method public static inline <reified F extends androidx.fragment.app.Fragment, T> T! withFragment(androidx.fragment.app.testing.FragmentScenario<F>, kotlin.jvm.functions.Function1<? super F,? extends T> block);
}
diff --git a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioDialogFragmentTest.kt b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioDialogFragmentTest.kt
index 0b27dd8..b11604f 100644
--- a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioDialogFragmentTest.kt
+++ b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioDialogFragmentTest.kt
@@ -106,8 +106,7 @@
@Test
fun fromCreatedToCreated() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.CREATED)) {
moveToState(State.CREATED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.CREATED)
@@ -120,8 +119,7 @@
@Test
fun fromCreatedToStarted() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.CREATED)) {
moveToState(State.STARTED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.STARTED)
@@ -133,8 +131,7 @@
@Test
fun fromCreatedToResumed() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.CREATED)) {
moveToState(State.RESUMED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.RESUMED)
@@ -146,16 +143,14 @@
@Test
fun fromCreatedToDestroyed() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.CREATED)) {
moveToState(State.DESTROYED)
}
}
@Test
fun fromStartedToCreated() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.STARTED)) {
moveToState(State.CREATED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.CREATED)
@@ -168,8 +163,7 @@
@Test
fun fromStartedToStarted() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.STARTED)) {
moveToState(State.STARTED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.STARTED)
@@ -181,8 +175,7 @@
@Test
fun fromStartedToResumed() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.STARTED)) {
moveToState(State.RESUMED)
onFragment { fragment ->
assertThat(fragment.lifecycle.currentState).isEqualTo(State.RESUMED)
@@ -194,8 +187,7 @@
@Test
fun fromStartedToDestroyed() {
- with(launchFragment<SimpleDialogFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragment<SimpleDialogFragment>(initialState = State.STARTED)) {
moveToState(State.DESTROYED)
}
}
@@ -211,12 +203,11 @@
@Test
fun recreateCreatedFragment() {
var numOfInstantiation = 0
- with(launchFragment {
+ with(launchFragment(initialState = State.CREATED) {
++numOfInstantiation
SimpleDialogFragment()
}) {
assertThat(numOfInstantiation).isEqualTo(1)
- moveToState(State.CREATED)
recreate()
assertThat(numOfInstantiation).isEqualTo(2)
onFragment { fragment ->
@@ -231,12 +222,11 @@
@Test
fun recreateStartedFragment() {
var numOfInstantiation = 0
- with(launchFragment {
+ with(launchFragment(initialState = State.STARTED) {
++numOfInstantiation
SimpleDialogFragment()
}) {
assertThat(numOfInstantiation).isEqualTo(1)
- moveToState(State.STARTED)
recreate()
assertThat(numOfInstantiation).isEqualTo(2)
onFragment { fragment ->
diff --git a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
index 80534a4..6d46dce 100644
--- a/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
+++ b/fragment/fragment-testing/src/androidTest/java/androidx/fragment/app/testing/FragmentScenarioTest.kt
@@ -283,8 +283,7 @@
@Test
fun fromCreatedToCreated() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.CREATED)) {
moveToState(State.CREATED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.CREATED)
@@ -295,8 +294,7 @@
@Test
fun fromCreatedToStarted() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.CREATED)) {
moveToState(State.STARTED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.STARTED)
@@ -307,8 +305,7 @@
@Test
fun fromCreatedToResumed() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.CREATED)) {
moveToState(State.RESUMED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.RESUMED)
@@ -319,16 +316,14 @@
@Test
fun fromCreatedToDestroyed() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.CREATED)) {
moveToState(State.DESTROYED)
}
}
@Test
fun fromStartedToCreated() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.STARTED)) {
moveToState(State.CREATED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.CREATED)
@@ -339,8 +334,7 @@
@Test
fun fromStartedToStarted() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.STARTED)) {
moveToState(State.STARTED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.STARTED)
@@ -351,8 +345,7 @@
@Test
fun fromStartedToResumed() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.STARTED)) {
moveToState(State.RESUMED)
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.RESUMED)
@@ -363,8 +356,7 @@
@Test
fun fromStartedToDestroyed() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.STARTED)) {
moveToState(State.DESTROYED)
}
}
@@ -379,8 +371,7 @@
@Test
fun recreateCreatedFragment() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.CREATED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.CREATED)) {
recreate()
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.CREATED)
@@ -391,8 +382,7 @@
@Test
fun recreateStartedFragment() {
- with(launchFragmentInContainer<StateRecordingFragment>()) {
- moveToState(State.STARTED)
+ with(launchFragmentInContainer<StateRecordingFragment>(initialState = State.STARTED)) {
recreate()
onFragment { fragment ->
assertThat(fragment.state).isEqualTo(State.STARTED)
diff --git a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
index 206f7cc..64ff90b 100644
--- a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
+++ b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.java
@@ -36,6 +36,7 @@
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentFactory;
import androidx.fragment.testing.R;
+import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.Lifecycle.State;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
@@ -209,7 +210,31 @@
public static <F extends Fragment> FragmentScenario<F> launch(
@NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
@StyleRes int themeResId, @Nullable FragmentFactory factory) {
- return internalLaunch(fragmentClass, fragmentArgs, themeResId, factory,
+ return launch(fragmentClass, fragmentArgs, themeResId, Lifecycle.State.RESUMED,
+ factory);
+ }
+
+ /**
+ * Launches a Fragment with given arguments hosted by an empty {@link FragmentActivity} themed
+ * by {@code themeResId}, using the given {@link FragmentFactory} and waits for it to reach
+ * {@code initialState}.
+ * <p>
+ * This method cannot be called from the main thread.
+ *
+ * @param fragmentClass a fragment class to instantiate
+ * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState The initial {@link Lifecycle.State}. This must be one of
+ * {@link State#CREATED CREATED}, {@link State#STARTED STARTED}, and
+ * {@link State#RESUMED RESUMED}.
+ * @param factory a fragment factory to use or null to use default factory
+ */
+ @NonNull
+ public static <F extends Fragment> FragmentScenario<F> launch(
+ @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
+ @StyleRes int themeResId, @NonNull Lifecycle.State initialState,
+ @Nullable FragmentFactory factory) {
+ return internalLaunch(fragmentClass, fragmentArgs, themeResId, initialState, factory,
/*containerViewId=*/ 0);
}
@@ -278,15 +303,41 @@
public static <F extends Fragment> FragmentScenario<F> launchInContainer(
@NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
@StyleRes int themeResId, @Nullable FragmentFactory factory) {
+ return launchInContainer(fragmentClass, fragmentArgs, themeResId, Lifecycle.State.RESUMED,
+ factory);
+ }
+
+ /**
+ * Launches a Fragment in the Activity's root view container {@code android.R.id.content}, with
+ * given arguments hosted by an empty {@link FragmentActivity} themed by {@code themeResId},
+ * using the given {@link FragmentFactory} and waits for it to reach {@code initialState}.
+ * <p>
+ * This method cannot be called from the main thread.
+ *
+ * @param fragmentClass a fragment class to instantiate
+ * @param fragmentArgs a bundle to passed into fragment
+ * @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState The initial {@link Lifecycle.State}. This must be one of
+ * {@link State#CREATED CREATED}, {@link State#STARTED STARTED}, and
+ * {@link State#RESUMED RESUMED}.
+ * @param factory a fragment factory to use or null to use default factory
+ */
+ @NonNull
+ public static <F extends Fragment> FragmentScenario<F> launchInContainer(
+ @NonNull Class<F> fragmentClass, @Nullable Bundle fragmentArgs,
+ @StyleRes int themeResId, @NonNull Lifecycle.State initialState,
+ @Nullable FragmentFactory factory) {
return internalLaunch(
- fragmentClass, fragmentArgs, themeResId, factory, android.R.id.content);
+ fragmentClass, fragmentArgs, themeResId, initialState, factory,
+ android.R.id.content);
}
@NonNull
@SuppressLint("RestrictedApi")
private static <F extends Fragment> FragmentScenario<F> internalLaunch(
@NonNull final Class<F> fragmentClass, final @Nullable Bundle fragmentArgs,
- @StyleRes int themeResId, @Nullable final FragmentFactory factory,
+ @StyleRes int themeResId, @NonNull Lifecycle.State initialState,
+ @Nullable final FragmentFactory factory,
@IdRes final int containerViewId) {
Intent startActivityIntent =
Intent.makeMainActivity(
@@ -310,6 +361,7 @@
activity.getSupportFragmentManager()
.beginTransaction()
.add(containerViewId, fragment, FRAGMENT_TAG)
+ .setMaxLifecycle(fragment, initialState)
.commitNow();
});
return scenario;
diff --git a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
index 4766100..0854cfa 100644
--- a/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
+++ b/fragment/fragment-testing/src/main/java/androidx/fragment/app/testing/FragmentScenario.kt
@@ -22,74 +22,122 @@
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentFactory
import androidx.fragment.testing.R
+import androidx.lifecycle.Lifecycle
+
+@Deprecated("Superseded by launchFragment that takes an initialState",
+ level = DeprecationLevel.HIDDEN) // Binary API compatibility.
+inline fun <reified F : Fragment> launchFragment(
+ fragmentArgs: Bundle? = null,
+ @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ factory: FragmentFactory? = null
+) = launchFragment<F>(fragmentArgs, themeResId, Lifecycle.State.RESUMED, factory)
+
+@Deprecated("Superseded by launchFragment that takes an initialState",
+ level = DeprecationLevel.HIDDEN) // Binary API compatibility.
+inline fun <reified F : Fragment> launchFragment(
+ fragmentArgs: Bundle? = null,
+ @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ crossinline instantiate: () -> F
+) = launchFragment(fragmentArgs, themeResId) {
+ instantiate()
+}
+
+@Deprecated("Superseded by launchFragmentInContainer that takes an initialState",
+ level = DeprecationLevel.HIDDEN) // Binary API compatibility.
+inline fun <reified F : Fragment> launchFragmentInContainer(
+ fragmentArgs: Bundle? = null,
+ @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ factory: FragmentFactory? = null
+) = launchFragmentInContainer<F>(fragmentArgs, themeResId, Lifecycle.State.RESUMED, factory)
+
+@Deprecated("Superseded by launchFragmentInContainer that takes an initialState",
+ level = DeprecationLevel.HIDDEN) // Binary API compatibility.
+inline fun <reified F : Fragment> launchFragmentInContainer(
+ fragmentArgs: Bundle? = null,
+ @StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ crossinline instantiate: () -> F
+) = launchFragmentInContainer(fragmentArgs, themeResId) {
+ instantiate()
+}
/**
* Launches a Fragment with given arguments hosted by an empty [FragmentActivity] using
- * given [FragmentFactory] and waits for it to reach a resumed state.
+ * given [FragmentFactory] and waits for it to reach [initialState].
*
* This method cannot be called from the main thread.
*
* @param fragmentArgs a bundle to passed into fragment
* @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState the initial [Lifecycle.State]. This must be one of
+ * [Lifecycle.State.CREATED], [Lifecycle.State.STARTED], or [Lifecycle.State.RESUMED].
* @param factory a fragment factory to use or null to use default factory
*/
inline fun <reified F : Fragment> launchFragment(
fragmentArgs: Bundle? = null,
@StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ initialState: Lifecycle.State = Lifecycle.State.RESUMED,
factory: FragmentFactory? = null
-) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, factory)
+) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, initialState, factory)
/**
* Launches a Fragment with given arguments hosted by an empty [FragmentActivity] using
- * [instantiate] to create the Fragment and waits for it to reach a resumed state.
+ * [instantiate] to create the Fragment and waits for it to reach [initialState].
*
* This method cannot be called from the main thread.
*
* @param fragmentArgs a bundle to passed into fragment
* @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState the initial [Lifecycle.State]. This must be one of
+ * [Lifecycle.State.CREATED], [Lifecycle.State.STARTED], or [Lifecycle.State.RESUMED].
* @param instantiate method which will be used to instantiate the Fragment.
*/
inline fun <reified F : Fragment> launchFragment(
fragmentArgs: Bundle? = null,
@StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ initialState: Lifecycle.State = Lifecycle.State.RESUMED,
crossinline instantiate: () -> F
-) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, object : FragmentFactory() {
- override fun instantiate(
- classLoader: ClassLoader,
- className: String
- ) = when (className) {
- F::class.java.name -> instantiate()
- else -> super.instantiate(classLoader, className)
- }
-})
+) = FragmentScenario.launch(F::class.java, fragmentArgs, themeResId, initialState,
+ object : FragmentFactory() {
+ override fun instantiate(
+ classLoader: ClassLoader,
+ className: String
+ ) = when (className) {
+ F::class.java.name -> instantiate()
+ else -> super.instantiate(classLoader, className)
+ }
+ })
/**
* Launches a Fragment in the Activity's root view container `android.R.id.content`, with
- * given arguments hosted by an empty [FragmentActivity] and waits for it to reach a
- * resumed state.
+ * given arguments hosted by an empty [FragmentActivity] and waits for it to reach [initialState].
*
* This method cannot be called from the main thread.
*
* @param fragmentArgs a bundle to passed into fragment
* @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState the initial [Lifecycle.State]. This must be one of
+ * [Lifecycle.State.CREATED], [Lifecycle.State.STARTED], or [Lifecycle.State.RESUMED].
* @param factory a fragment factory to use or null to use default factory
*/
inline fun <reified F : Fragment> launchFragmentInContainer(
fragmentArgs: Bundle? = null,
@StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ initialState: Lifecycle.State = Lifecycle.State.RESUMED,
factory: FragmentFactory? = null
-) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory)
+) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, initialState,
+ factory)
/**
* Launches a Fragment in the Activity's root view container `android.R.id.content`, with
* given arguments hosted by an empty [FragmentActivity] using
- * [instantiate] to create the Fragment and waits for it to reach a
- * resumed state.
+ * [instantiate] to create the Fragment and waits for it to reach [initialState].
*
* This method cannot be called from the main thread.
*
* @param fragmentArgs a bundle to passed into fragment
* @param themeResId a style resource id to be set to the host activity's theme
+ * @param initialState the initial [Lifecycle.State]. This must be one of
+ * [Lifecycle.State.CREATED], [Lifecycle.State.STARTED], or [Lifecycle.State.RESUMED].
* @param instantiate method which will be used to instantiate the Fragment. This is a
* simplification of the [FragmentFactory] interface for cases where only a single class
* needs a custom constructor called.
@@ -97,8 +145,9 @@
inline fun <reified F : Fragment> launchFragmentInContainer(
fragmentArgs: Bundle? = null,
@StyleRes themeResId: Int = R.style.FragmentScenarioEmptyFragmentActivityTheme,
+ initialState: Lifecycle.State = Lifecycle.State.RESUMED,
crossinline instantiate: () -> F
-) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId,
+) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, initialState,
object : FragmentFactory() {
override fun instantiate(
classLoader: ClassLoader,
diff --git a/jetifier/jetifier/core/src/main/resources/default.config b/jetifier/jetifier/core/src/main/resources/default.config
index 9b14a9d..3669e48 100644
--- a/jetifier/jetifier/core/src/main/resources/default.config
+++ b/jetifier/jetifier/core/src/main/resources/default.config
@@ -1266,6 +1266,10 @@
"to" : "androidx/room/rxjava2"
},
{
+ "from" : "android/arch/persistence/room/rxjava3",
+ "to" : "androidx/room/rxjava3"
+ },
+ {
"from" : "android/arch/persistence/room/guava",
"to" : "androidx/room/guava"
},
diff --git a/jetifier/jetifier/core/src/main/resources/default.generated.config b/jetifier/jetifier/core/src/main/resources/default.generated.config
index 4887f7c..031a53c 100644
--- a/jetifier/jetifier/core/src/main/resources/default.generated.config
+++ b/jetifier/jetifier/core/src/main/resources/default.generated.config
@@ -1217,6 +1217,10 @@
"to": "androidx/room/rxjava2"
},
{
+ "from": "android/arch/persistence/room/rxjava3",
+ "to": "androidx/room/rxjava3"
+ },
+ {
"from": "android/arch/persistence/room/guava",
"to": "androidx/room/guava"
},
diff --git a/jetifier/jetifier/migration.config b/jetifier/jetifier/migration.config
index 0e7bb80..527d14e 100644
--- a/jetifier/jetifier/migration.config
+++ b/jetifier/jetifier/migration.config
@@ -1247,6 +1247,10 @@
"to": "androidx/room/rxjava2"
},
{
+ "from": "android/arch/persistence/room/rxjava3",
+ "to": "androidx/room/rxjava3"
+ },
+ {
"from": "android/arch/persistence/room/guava",
"to": "androidx/room/guava"
},
@@ -2827,6 +2831,18 @@
{
"from": {
"groupId": "android.arch.persistence.room",
+ "artifactId": "rxjava3",
+ "version": "{oldRoomVersion}"
+ },
+ "to": {
+ "groupId": "androidx.room",
+ "artifactId": "room-rxjava3",
+ "version": "{newRoomVersion}"
+ }
+ },
+ {
+ "from": {
+ "groupId": "android.arch.persistence.room",
"artifactId": "testing",
"version": "{oldRoomVersion}"
},
diff --git a/leanback/leanback/api/1.1.0-alpha04.txt b/leanback/leanback/api/1.1.0-alpha04.txt
index ea90aa3..733f94f 100644
--- a/leanback/leanback/api/1.1.0-alpha04.txt
+++ b/leanback/leanback/api/1.1.0-alpha04.txt
@@ -1530,7 +1530,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/leanback/leanback/api/current.txt b/leanback/leanback/api/current.txt
index ea90aa3..733f94f 100644
--- a/leanback/leanback/api/current.txt
+++ b/leanback/leanback/api/current.txt
@@ -1530,7 +1530,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/leanback/leanback/api/public_plus_experimental_1.1.0-alpha04.txt b/leanback/leanback/api/public_plus_experimental_1.1.0-alpha04.txt
index ea90aa3..733f94f 100644
--- a/leanback/leanback/api/public_plus_experimental_1.1.0-alpha04.txt
+++ b/leanback/leanback/api/public_plus_experimental_1.1.0-alpha04.txt
@@ -1530,7 +1530,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/leanback/leanback/api/public_plus_experimental_current.txt b/leanback/leanback/api/public_plus_experimental_current.txt
index ea90aa3..733f94f 100644
--- a/leanback/leanback/api/public_plus_experimental_current.txt
+++ b/leanback/leanback/api/public_plus_experimental_current.txt
@@ -1530,7 +1530,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/leanback/leanback/api/restricted_1.1.0-alpha04.txt b/leanback/leanback/api/restricted_1.1.0-alpha04.txt
index 0606e63..dc22fe8 100644
--- a/leanback/leanback/api/restricted_1.1.0-alpha04.txt
+++ b/leanback/leanback/api/restricted_1.1.0-alpha04.txt
@@ -1740,7 +1740,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/leanback/leanback/api/restricted_current.txt b/leanback/leanback/api/restricted_current.txt
index 0606e63..dc22fe8 100644
--- a/leanback/leanback/api/restricted_current.txt
+++ b/leanback/leanback/api/restricted_current.txt
@@ -1740,7 +1740,7 @@
field public static final int VIEW_TYPE_EXTRA = 2; // 0x2
field public static final int VIEW_TYPE_INFO = 1; // 0x1
field public static final int VIEW_TYPE_MAIN = 0; // 0x0
- field @android.view.ViewDebug.ExportedProperty(category="layout", mapping={@android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_MAIN, to="MAIN"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_INFO, to="INFO"), @android.view.ViewDebug.IntToString(from=androidx.leanback.widget.BaseCardView.LayoutParams.VIEW_TYPE_EXTRA, to="EXTRA")}) public int viewType;
+ field public int viewType;
}
public abstract class BaseGridView extends androidx.recyclerview.widget.RecyclerView {
diff --git a/lifecycle/lifecycle-common-java8/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-common-java8/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..498d3a9
--- /dev/null
+++ b/lifecycle/lifecycle-common-java8/api/2.3.0-alpha06.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public interface DefaultLifecycleObserver extends androidx.lifecycle.LifecycleObserver androidx.lifecycle.LifecycleObserver {
+ method public default void onCreate(androidx.lifecycle.LifecycleOwner);
+ method public default void onDestroy(androidx.lifecycle.LifecycleOwner);
+ method public default void onPause(androidx.lifecycle.LifecycleOwner);
+ method public default void onResume(androidx.lifecycle.LifecycleOwner);
+ method public default void onStart(androidx.lifecycle.LifecycleOwner);
+ method public default void onStop(androidx.lifecycle.LifecycleOwner);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-common-java8/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-common-java8/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..498d3a9
--- /dev/null
+++ b/lifecycle/lifecycle-common-java8/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public interface DefaultLifecycleObserver extends androidx.lifecycle.LifecycleObserver androidx.lifecycle.LifecycleObserver {
+ method public default void onCreate(androidx.lifecycle.LifecycleOwner);
+ method public default void onDestroy(androidx.lifecycle.LifecycleOwner);
+ method public default void onPause(androidx.lifecycle.LifecycleOwner);
+ method public default void onResume(androidx.lifecycle.LifecycleOwner);
+ method public default void onStart(androidx.lifecycle.LifecycleOwner);
+ method public default void onStop(androidx.lifecycle.LifecycleOwner);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-common-java8/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-common-java8/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..498d3a9
--- /dev/null
+++ b/lifecycle/lifecycle-common-java8/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public interface DefaultLifecycleObserver extends androidx.lifecycle.LifecycleObserver androidx.lifecycle.LifecycleObserver {
+ method public default void onCreate(androidx.lifecycle.LifecycleOwner);
+ method public default void onDestroy(androidx.lifecycle.LifecycleOwner);
+ method public default void onPause(androidx.lifecycle.LifecycleOwner);
+ method public default void onResume(androidx.lifecycle.LifecycleOwner);
+ method public default void onStart(androidx.lifecycle.LifecycleOwner);
+ method public default void onStop(androidx.lifecycle.LifecycleOwner);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-common/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-common/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..615f457
--- /dev/null
+++ b/lifecycle/lifecycle-common/api/2.3.0-alpha06.txt
@@ -0,0 +1,51 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class Lifecycle {
+ ctor public Lifecycle();
+ method @MainThread public abstract void addObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public abstract androidx.lifecycle.Lifecycle.State getCurrentState();
+ method @MainThread public abstract void removeObserver(androidx.lifecycle.LifecycleObserver);
+ }
+
+ public enum Lifecycle.Event {
+ method public static androidx.lifecycle.Lifecycle.Event? downFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? downTo(androidx.lifecycle.Lifecycle.State);
+ method public androidx.lifecycle.Lifecycle.State getTargetState();
+ method public static androidx.lifecycle.Lifecycle.Event? upFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? upTo(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_DESTROY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_PAUSE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_RESUME;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_START;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_STOP;
+ }
+
+ public enum Lifecycle.State {
+ method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State RESUMED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State STARTED;
+ }
+
+ public interface LifecycleEventObserver extends androidx.lifecycle.LifecycleObserver {
+ method public void onStateChanged(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.Event);
+ }
+
+ public interface LifecycleObserver {
+ }
+
+ public interface LifecycleOwner {
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface OnLifecycleEvent {
+ method public abstract androidx.lifecycle.Lifecycle.Event! value();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-common/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-common/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..615f457
--- /dev/null
+++ b/lifecycle/lifecycle-common/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,51 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class Lifecycle {
+ ctor public Lifecycle();
+ method @MainThread public abstract void addObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public abstract androidx.lifecycle.Lifecycle.State getCurrentState();
+ method @MainThread public abstract void removeObserver(androidx.lifecycle.LifecycleObserver);
+ }
+
+ public enum Lifecycle.Event {
+ method public static androidx.lifecycle.Lifecycle.Event? downFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? downTo(androidx.lifecycle.Lifecycle.State);
+ method public androidx.lifecycle.Lifecycle.State getTargetState();
+ method public static androidx.lifecycle.Lifecycle.Event? upFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? upTo(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_DESTROY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_PAUSE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_RESUME;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_START;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_STOP;
+ }
+
+ public enum Lifecycle.State {
+ method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State RESUMED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State STARTED;
+ }
+
+ public interface LifecycleEventObserver extends androidx.lifecycle.LifecycleObserver {
+ method public void onStateChanged(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.Event);
+ }
+
+ public interface LifecycleObserver {
+ }
+
+ public interface LifecycleOwner {
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface OnLifecycleEvent {
+ method public abstract androidx.lifecycle.Lifecycle.Event! value();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-common/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-common/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..0e3bc8a
--- /dev/null
+++ b/lifecycle/lifecycle-common/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,67 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface GeneratedAdapter {
+ method public void callMethods(androidx.lifecycle.LifecycleOwner!, androidx.lifecycle.Lifecycle.Event!, boolean, androidx.lifecycle.MethodCallsLogger!);
+ }
+
+ @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface GenericLifecycleObserver extends androidx.lifecycle.LifecycleEventObserver {
+ }
+
+ public abstract class Lifecycle {
+ ctor public Lifecycle();
+ method @MainThread public abstract void addObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public abstract androidx.lifecycle.Lifecycle.State getCurrentState();
+ method @MainThread public abstract void removeObserver(androidx.lifecycle.LifecycleObserver);
+ }
+
+ public enum Lifecycle.Event {
+ method public static androidx.lifecycle.Lifecycle.Event? downFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? downTo(androidx.lifecycle.Lifecycle.State);
+ method public androidx.lifecycle.Lifecycle.State getTargetState();
+ method public static androidx.lifecycle.Lifecycle.Event? upFrom(androidx.lifecycle.Lifecycle.State);
+ method public static androidx.lifecycle.Lifecycle.Event? upTo(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_ANY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_CREATE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_DESTROY;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_PAUSE;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_RESUME;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_START;
+ enum_constant public static final androidx.lifecycle.Lifecycle.Event ON_STOP;
+ }
+
+ public enum Lifecycle.State {
+ method public boolean isAtLeast(androidx.lifecycle.Lifecycle.State);
+ enum_constant public static final androidx.lifecycle.Lifecycle.State CREATED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State DESTROYED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State INITIALIZED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State RESUMED;
+ enum_constant public static final androidx.lifecycle.Lifecycle.State STARTED;
+ }
+
+ public interface LifecycleEventObserver extends androidx.lifecycle.LifecycleObserver {
+ method public void onStateChanged(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.Event);
+ }
+
+ public interface LifecycleObserver {
+ }
+
+ public interface LifecycleOwner {
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class Lifecycling {
+ method public static String! getAdapterName(String!);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class MethodCallsLogger {
+ ctor public MethodCallsLogger();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean approveCall(String!, int);
+ }
+
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD) public @interface OnLifecycleEvent {
+ method public abstract androidx.lifecycle.Lifecycle.Event! value();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core-ktx/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core-ktx/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..b1e79f4
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core-ktx/api/2.3.0-alpha06.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataKt {
+ method @MainThread public static inline <T> androidx.lifecycle.Observer<T> observe(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner owner, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core-ktx/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..b1e79f4
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataKt {
+ method @MainThread public static inline <T> androidx.lifecycle.Observer<T> observe(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner owner, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core-ktx/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core-ktx/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core-ktx/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-livedata-core-ktx/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core-ktx/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..b1e79f4
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core-ktx/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataKt {
+ method @MainThread public static inline <T> androidx.lifecycle.Observer<T> observe(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner owner, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onChanged);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..f0db7db
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core/api/2.3.0-alpha06.txt
@@ -0,0 +1,32 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LiveData<T> {
+ ctor public LiveData(T!);
+ ctor public LiveData();
+ method public T? getValue();
+ method public boolean hasActiveObservers();
+ method public boolean hasObservers();
+ method @MainThread public void observe(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void observeForever(androidx.lifecycle.Observer<? super T>);
+ method protected void onActive();
+ method protected void onInactive();
+ method protected void postValue(T!);
+ method @MainThread public void removeObserver(androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void removeObservers(androidx.lifecycle.LifecycleOwner);
+ method @MainThread protected void setValue(T!);
+ }
+
+ public class MutableLiveData<T> extends androidx.lifecycle.LiveData<T> {
+ ctor public MutableLiveData(T!);
+ ctor public MutableLiveData();
+ method public void postValue(T!);
+ method public void setValue(T!);
+ }
+
+ public interface Observer<T> {
+ method public void onChanged(T!);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..f0db7db
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,32 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LiveData<T> {
+ ctor public LiveData(T!);
+ ctor public LiveData();
+ method public T? getValue();
+ method public boolean hasActiveObservers();
+ method public boolean hasObservers();
+ method @MainThread public void observe(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void observeForever(androidx.lifecycle.Observer<? super T>);
+ method protected void onActive();
+ method protected void onInactive();
+ method protected void postValue(T!);
+ method @MainThread public void removeObserver(androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void removeObservers(androidx.lifecycle.LifecycleOwner);
+ method @MainThread protected void setValue(T!);
+ }
+
+ public class MutableLiveData<T> extends androidx.lifecycle.LiveData<T> {
+ ctor public MutableLiveData(T!);
+ ctor public MutableLiveData();
+ method public void postValue(T!);
+ method public void setValue(T!);
+ }
+
+ public interface Observer<T> {
+ method public void onChanged(T!);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-core/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-livedata-core/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-core/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..f0db7db
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-core/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,32 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LiveData<T> {
+ ctor public LiveData(T!);
+ ctor public LiveData();
+ method public T? getValue();
+ method public boolean hasActiveObservers();
+ method public boolean hasObservers();
+ method @MainThread public void observe(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void observeForever(androidx.lifecycle.Observer<? super T>);
+ method protected void onActive();
+ method protected void onInactive();
+ method protected void postValue(T!);
+ method @MainThread public void removeObserver(androidx.lifecycle.Observer<? super T>);
+ method @MainThread public void removeObservers(androidx.lifecycle.LifecycleOwner);
+ method @MainThread protected void setValue(T!);
+ }
+
+ public class MutableLiveData<T> extends androidx.lifecycle.LiveData<T> {
+ ctor public MutableLiveData(T!);
+ ctor public MutableLiveData();
+ method public void postValue(T!);
+ method public void setValue(T!);
+ }
+
+ public interface Observer<T> {
+ method public void onChanged(T!);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-ktx/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-ktx/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..409e721
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-ktx/api/2.3.0-alpha06.txt
@@ -0,0 +1,31 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class CoroutineLiveDataKt {
+ method public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class FlowLiveDataConversions {
+ method public static <T> kotlinx.coroutines.flow.Flow<T> asFlow(androidx.lifecycle.LiveData<T>);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout);
+ }
+
+ public interface LiveDataScope<T> {
+ method public suspend Object? emit(T? value, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? emitSource(androidx.lifecycle.LiveData<T> source, kotlin.coroutines.Continuation<? super kotlinx.coroutines.DisposableHandle> p);
+ method public T? getLatestValue();
+ property public abstract T? latestValue;
+ }
+
+ public final class TransformationsKt {
+ method public static inline <X> androidx.lifecycle.LiveData<X> distinctUntilChanged(androidx.lifecycle.LiveData<X>);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> map(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends Y> transform);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> switchMap(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends androidx.lifecycle.LiveData<Y>> transform);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-ktx/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..409e721
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,31 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class CoroutineLiveDataKt {
+ method public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class FlowLiveDataConversions {
+ method public static <T> kotlinx.coroutines.flow.Flow<T> asFlow(androidx.lifecycle.LiveData<T>);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout);
+ }
+
+ public interface LiveDataScope<T> {
+ method public suspend Object? emit(T? value, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? emitSource(androidx.lifecycle.LiveData<T> source, kotlin.coroutines.Continuation<? super kotlinx.coroutines.DisposableHandle> p);
+ method public T? getLatestValue();
+ property public abstract T? latestValue;
+ }
+
+ public final class TransformationsKt {
+ method public static inline <X> androidx.lifecycle.LiveData<X> distinctUntilChanged(androidx.lifecycle.LiveData<X>);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> map(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends Y> transform);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> switchMap(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends androidx.lifecycle.LiveData<Y>> transform);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata-ktx/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-ktx/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-ktx/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-livedata-ktx/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata-ktx/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..409e721
--- /dev/null
+++ b/lifecycle/lifecycle-livedata-ktx/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,31 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class CoroutineLiveDataKt {
+ method public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> liveData(kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout, @kotlin.BuilderInference kotlin.jvm.functions.Function2<? super androidx.lifecycle.LiveDataScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class FlowLiveDataConversions {
+ method public static <T> kotlinx.coroutines.flow.Flow<T> asFlow(androidx.lifecycle.LiveData<T>);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, long timeoutInMs = 5000L);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext);
+ method public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static <T> androidx.lifecycle.LiveData<T> asLiveData(kotlinx.coroutines.flow.Flow<? extends T>, kotlin.coroutines.CoroutineContext context = EmptyCoroutineContext, java.time.Duration timeout);
+ }
+
+ public interface LiveDataScope<T> {
+ method public suspend Object? emit(T? value, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
+ method public suspend Object? emitSource(androidx.lifecycle.LiveData<T> source, kotlin.coroutines.Continuation<? super kotlinx.coroutines.DisposableHandle> p);
+ method public T? getLatestValue();
+ property public abstract T? latestValue;
+ }
+
+ public final class TransformationsKt {
+ method public static inline <X> androidx.lifecycle.LiveData<X> distinctUntilChanged(androidx.lifecycle.LiveData<X>);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> map(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends Y> transform);
+ method public static inline <X, Y> androidx.lifecycle.LiveData<Y> switchMap(androidx.lifecycle.LiveData<X>, kotlin.jvm.functions.Function1<? super X,? extends androidx.lifecycle.LiveData<Y>> transform);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..b9a2837
--- /dev/null
+++ b/lifecycle/lifecycle-livedata/api/2.3.0-alpha06.txt
@@ -0,0 +1,17 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class MediatorLiveData<T> extends androidx.lifecycle.MutableLiveData<T> {
+ ctor public MediatorLiveData();
+ method @MainThread public <S> void addSource(androidx.lifecycle.LiveData<S!>, androidx.lifecycle.Observer<? super S>);
+ method @MainThread public <S> void removeSource(androidx.lifecycle.LiveData<S!>);
+ }
+
+ public class Transformations {
+ method @MainThread public static <X> androidx.lifecycle.LiveData<X!> distinctUntilChanged(androidx.lifecycle.LiveData<X!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> map(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,Y!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> switchMap(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,androidx.lifecycle.LiveData<Y!>!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..b9a2837
--- /dev/null
+++ b/lifecycle/lifecycle-livedata/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,17 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class MediatorLiveData<T> extends androidx.lifecycle.MutableLiveData<T> {
+ ctor public MediatorLiveData();
+ method @MainThread public <S> void addSource(androidx.lifecycle.LiveData<S!>, androidx.lifecycle.Observer<? super S>);
+ method @MainThread public <S> void removeSource(androidx.lifecycle.LiveData<S!>);
+ }
+
+ public class Transformations {
+ method @MainThread public static <X> androidx.lifecycle.LiveData<X!> distinctUntilChanged(androidx.lifecycle.LiveData<X!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> map(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,Y!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> switchMap(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,androidx.lifecycle.LiveData<Y!>!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-livedata/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-livedata/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-livedata/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-livedata/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..5d2ddfa
--- /dev/null
+++ b/lifecycle/lifecycle-livedata/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ComputableLiveData<T> {
+ ctor public ComputableLiveData();
+ ctor public ComputableLiveData(java.util.concurrent.Executor);
+ method @WorkerThread protected abstract T! compute();
+ method public androidx.lifecycle.LiveData<T!> getLiveData();
+ method public void invalidate();
+ }
+
+ public class MediatorLiveData<T> extends androidx.lifecycle.MutableLiveData<T> {
+ ctor public MediatorLiveData();
+ method @MainThread public <S> void addSource(androidx.lifecycle.LiveData<S!>, androidx.lifecycle.Observer<? super S>);
+ method @MainThread public <S> void removeSource(androidx.lifecycle.LiveData<S!>);
+ }
+
+ public class Transformations {
+ method @MainThread public static <X> androidx.lifecycle.LiveData<X!> distinctUntilChanged(androidx.lifecycle.LiveData<X!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> map(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,Y!>);
+ method @MainThread public static <X, Y> androidx.lifecycle.LiveData<Y!> switchMap(androidx.lifecycle.LiveData<X!>, androidx.arch.core.util.Function<X!,androidx.lifecycle.LiveData<Y!>!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-process/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-process/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..beea619
--- /dev/null
+++ b/lifecycle/lifecycle-process/api/2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class ProcessLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner get();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-process/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-process/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..beea619
--- /dev/null
+++ b/lifecycle/lifecycle-process/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class ProcessLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner get();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-process/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-process/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-process/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-process/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-process/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..ba282a3
--- /dev/null
+++ b/lifecycle/lifecycle-process/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,20 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class ProcessLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner get();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ProcessLifecycleOwnerInitializer extends android.content.ContentProvider {
+ ctor public ProcessLifecycleOwnerInitializer();
+ method public int delete(android.net.Uri, String!, String![]!);
+ method public String? getType(android.net.Uri);
+ method public android.net.Uri? insert(android.net.Uri, android.content.ContentValues!);
+ method public boolean onCreate();
+ method public android.database.Cursor? query(android.net.Uri, String![]!, String!, String![]!, String!);
+ method public int update(android.net.Uri, android.content.ContentValues!, String!, String![]!);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams-ktx/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams-ktx/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..0f61097
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams-ktx/api/2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveSteamsKt {
+ method public static inline <T> androidx.lifecycle.LiveData<T> toLiveData(org.reactivestreams.Publisher<T>);
+ method public static inline <T> org.reactivestreams.Publisher<T> toPublisher(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner lifecycle);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams-ktx/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..0f61097
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveSteamsKt {
+ method public static inline <T> androidx.lifecycle.LiveData<T> toLiveData(org.reactivestreams.Publisher<T>);
+ method public static inline <T> org.reactivestreams.Publisher<T> toPublisher(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner lifecycle);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams-ktx/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams-ktx/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams-ktx/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-reactivestreams-ktx/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams-ktx/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..0f61097
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams-ktx/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveSteamsKt {
+ method public static inline <T> androidx.lifecycle.LiveData<T> toLiveData(org.reactivestreams.Publisher<T>);
+ method public static inline <T> org.reactivestreams.Publisher<T> toPublisher(androidx.lifecycle.LiveData<T>, androidx.lifecycle.LifecycleOwner lifecycle);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..518fc95
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams/api/2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveStreams {
+ method public static <T> androidx.lifecycle.LiveData<T!> fromPublisher(org.reactivestreams.Publisher<T!>);
+ method public static <T> org.reactivestreams.Publisher<T!> toPublisher(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.LiveData<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..518fc95
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveStreams {
+ method public static <T> androidx.lifecycle.LiveData<T!> fromPublisher(org.reactivestreams.Publisher<T!>);
+ method public static <T> org.reactivestreams.Publisher<T!> toPublisher(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.LiveData<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-reactivestreams/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-reactivestreams/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-reactivestreams/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..518fc95
--- /dev/null
+++ b/lifecycle/lifecycle-reactivestreams/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,10 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class LiveDataReactiveStreams {
+ method public static <T> androidx.lifecycle.LiveData<T!> fromPublisher(org.reactivestreams.Publisher<T!>);
+ method public static <T> org.reactivestreams.Publisher<T!> toPublisher(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.LiveData<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha05.txt b/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha05.txt
index 60b6383..2635d16 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha05.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha05.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,16 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..2635d16
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/api/2.3.0-alpha06.txt
@@ -0,0 +1,48 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LifecycleCoroutineScope implements kotlinx.coroutines.CoroutineScope {
+ method public final kotlinx.coroutines.Job launchWhenCreated(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenResumed(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
+ public final class LifecycleKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
+ }
+
+ public final class LifecycleOwnerKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getLifecycleScope(androidx.lifecycle.LifecycleOwner);
+ }
+
+ public final class PausingDispatcherKt {
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State minState, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+ public final class ViewKt {
+ method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
+ }
+
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-ktx/api/current.txt b/lifecycle/lifecycle-runtime-ktx/api/current.txt
index 60b6383..2635d16 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/current.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/current.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,16 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha05.txt b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha05.txt
index 60b6383..2635d16 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha05.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha05.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,16 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..2635d16
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,48 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LifecycleCoroutineScope implements kotlinx.coroutines.CoroutineScope {
+ method public final kotlinx.coroutines.Job launchWhenCreated(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenResumed(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
+ public final class LifecycleKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
+ }
+
+ public final class LifecycleOwnerKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getLifecycleScope(androidx.lifecycle.LifecycleOwner);
+ }
+
+ public final class PausingDispatcherKt {
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State minState, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+ public final class ViewKt {
+ method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
+ }
+
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_current.txt b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_current.txt
index 60b6383..2635d16 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_current.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/public_plus_experimental_current.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,16 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-ktx/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha05.txt b/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha05.txt
index 60b6383..3d7a81d 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha05.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha05.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,18 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method @kotlin.PublishedApi internal static suspend <R> Object? suspendWithStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, boolean dispatchNeeded, kotlinx.coroutines.CoroutineDispatcher lifecycleDispatcher, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method @kotlin.PublishedApi internal static suspend inline <R> Object? withStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..3d7a81d
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,50 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class LifecycleCoroutineScope implements kotlinx.coroutines.CoroutineScope {
+ method public final kotlinx.coroutines.Job launchWhenCreated(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenResumed(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
+ }
+
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
+ public final class LifecycleKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
+ }
+
+ public final class LifecycleOwnerKt {
+ method public static androidx.lifecycle.LifecycleCoroutineScope getLifecycleScope(androidx.lifecycle.LifecycleOwner);
+ }
+
+ public final class PausingDispatcherKt {
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ method public static suspend <T> Object? whenStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State minState, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T> p);
+ }
+
+ public final class ViewKt {
+ method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
+ }
+
+ public final class WithLifecycleStateKt {
+ method @kotlin.PublishedApi internal static suspend <R> Object? suspendWithStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, boolean dispatchNeeded, kotlinx.coroutines.CoroutineDispatcher lifecycleDispatcher, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method @kotlin.PublishedApi internal static suspend inline <R> Object? withStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-ktx/api/restricted_current.txt b/lifecycle/lifecycle-runtime-ktx/api/restricted_current.txt
index 60b6383..3d7a81d 100644
--- a/lifecycle/lifecycle-runtime-ktx/api/restricted_current.txt
+++ b/lifecycle/lifecycle-runtime-ktx/api/restricted_current.txt
@@ -7,6 +7,10 @@
method public final kotlinx.coroutines.Job launchWhenStarted(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block);
}
+ public final class LifecycleDestroyedException extends java.util.concurrent.CancellationException {
+ ctor public LifecycleDestroyedException();
+ }
+
public final class LifecycleKt {
method public static androidx.lifecycle.LifecycleCoroutineScope getCoroutineScope(androidx.lifecycle.Lifecycle);
}
@@ -29,5 +33,18 @@
method public static androidx.lifecycle.LifecycleOwner? findViewTreeLifecycleOwner(android.view.View);
}
+ public final class WithLifecycleStateKt {
+ method @kotlin.PublishedApi internal static suspend <R> Object? suspendWithStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, boolean dispatchNeeded, kotlinx.coroutines.CoroutineDispatcher lifecycleDispatcher, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withCreated(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withResumed(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.Lifecycle, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStarted(androidx.lifecycle.LifecycleOwner, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method public static suspend inline <R> Object? withStateAtLeast(androidx.lifecycle.LifecycleOwner, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ method @kotlin.PublishedApi internal static suspend inline <R> Object? withStateAtLeastUnchecked(androidx.lifecycle.Lifecycle, androidx.lifecycle.Lifecycle.State state, kotlin.jvm.functions.Function0<? extends R> block, kotlin.coroutines.Continuation<? super R> p);
+ }
+
}
diff --git a/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/WithLifecycleStateTest.kt b/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/WithLifecycleStateTest.kt
new file mode 100644
index 0000000..fadcc5d
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/src/androidTest/java/androidx/lifecycle/WithLifecycleStateTest.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright 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 androidx.lifecycle
+
+import androidx.test.filters.SmallTest
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.yield
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.Test
+
+@SmallTest
+class WithLifecycleStateTest {
+ @Test
+ fun testInitialResumed() = runBlocking(Dispatchers.Main) {
+ val owner = FakeLifecycleOwner(Lifecycle.State.RESUMED)
+
+ val expected = "initial value"
+ var toRead = expected
+ launch { toRead = "value set by launch" }
+ val readByWithStarted = owner.withStarted { toRead }
+ assertEquals(expected, readByWithStarted)
+ }
+
+ @Test
+ fun testBlockRunsWithLifecycleStateChange() = runBlocking(Dispatchers.Main) {
+ val owner = FakeLifecycleOwner()
+
+ val initial = "initial value"
+ val afterSetState = "value set after setState"
+ var toRead = initial
+ launch {
+ owner.setState(Lifecycle.State.RESUMED)
+ toRead = afterSetState
+ }
+ val readByWithStarted = owner.withStarted { toRead }
+ val readAfterResumed = toRead
+ assertEquals(initial, readByWithStarted)
+ assertEquals(afterSetState, readAfterResumed)
+ }
+
+ @Test
+ fun testBlockCancelledWhenInitiallyDestroyed() = runBlocking(Dispatchers.Main) {
+ val owner = FakeLifecycleOwner(Lifecycle.State.DESTROYED)
+
+ val result = runCatching {
+ owner.withStarted {}
+ }
+
+ assertTrue("withStarted threw LifecycleDestroyedException",
+ result.exceptionOrNull() is LifecycleDestroyedException)
+ }
+
+ @Test
+ fun testBlockCancelledWhenDestroyedWhileSuspended() = runBlocking(Dispatchers.Main) {
+ val owner = FakeLifecycleOwner(Lifecycle.State.CREATED)
+
+ var launched = false
+ val resultTask = async {
+ launched = true
+ runCatching { owner.withStarted {} }
+ }
+ yield()
+
+ assertTrue("test ran to first suspension after successfully launching", launched)
+ assertTrue("withStarted is still active", resultTask.isActive)
+
+ owner.setState(Lifecycle.State.DESTROYED)
+
+ assertTrue("result threw LifecycleDestroyedException",
+ resultTask.await().exceptionOrNull() is LifecycleDestroyedException)
+ }
+}
diff --git a/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt
new file mode 100644
index 0000000..ac741f5
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-ktx/src/main/java/androidx/lifecycle/WithLifecycleState.kt
@@ -0,0 +1,205 @@
+/*
+ * Copyright 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 androidx.lifecycle
+
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlin.coroutines.EmptyCoroutineContext
+import kotlin.coroutines.coroutineContext
+import kotlin.coroutines.resumeWithException
+
+/**
+ * A [CancellationException] that indicates that the [Lifecycle] associated with an operation
+ * reached the [Lifecycle.State.DESTROYED] state before the operation could complete.
+ */
+class LifecycleDestroyedException : CancellationException()
+
+/**
+ * Run [block] with this [Lifecycle] in a [Lifecycle.State] of at least [state] and
+ * resume with the result. Throws the [CancellationException] [LifecycleDestroyedException]
+ * if the lifecycle has reached [Lifecycle.State.DESTROYED] by the time of the call or before
+ * [block] is able to run.
+ */
+suspend inline fun <R> Lifecycle.withStateAtLeast(
+ state: Lifecycle.State,
+ crossinline block: () -> R
+): R {
+ require(state >= Lifecycle.State.CREATED) {
+ "target state must be CREATED or greater, found $state"
+ }
+
+ return withStateAtLeastUnchecked(state, block)
+}
+
+/**
+ * Run [block] with this [Lifecycle] in a [Lifecycle.State] of at least [Lifecycle.State.CREATED]
+ * and resume with the result. Throws the [CancellationException] [LifecycleDestroyedException]
+ * if the lifecycle has reached [Lifecycle.State.DESTROYED] by the time of the call or before
+ * [block] is able to run.
+ */
+suspend inline fun <R> Lifecycle.withCreated(
+ crossinline block: () -> R
+): R = withStateAtLeastUnchecked(
+ state = Lifecycle.State.CREATED,
+ block = block
+)
+
+/**
+ * Run [block] with this [Lifecycle] in a [Lifecycle.State] of at least [Lifecycle.State.STARTED]
+ * and resume with the result. Throws the [CancellationException] [LifecycleDestroyedException]
+ * if the lifecycle has reached [Lifecycle.State.DESTROYED] by the time of the call or before
+ * [block] is able to run.
+ */
+suspend inline fun <R> Lifecycle.withStarted(
+ crossinline block: () -> R
+): R = withStateAtLeastUnchecked(
+ state = Lifecycle.State.STARTED,
+ block = block
+)
+
+/**
+ * Run [block] with this [Lifecycle] in a [Lifecycle.State] of at least [Lifecycle.State.RESUMED]
+ * and resume with the result. Throws the [CancellationException] [LifecycleDestroyedException]
+ * if the lifecycle has reached [Lifecycle.State.DESTROYED] by the time of the call or before
+ * [block] is able to run.
+ */
+suspend inline fun <R> Lifecycle.withResumed(
+ crossinline block: () -> R
+): R = withStateAtLeastUnchecked(
+ state = Lifecycle.State.RESUMED,
+ block = block
+)
+
+/**
+ * Run [block] with this [LifecycleOwner]'s [Lifecycle] in a [Lifecycle.State] of at least [state]
+ * and resume with the result. Throws the [CancellationException] [LifecycleDestroyedException]
+ * if the lifecycle has reached [Lifecycle.State.DESTROYED] by the time of the call or before
+ * [block] is able to run.
+ */
+suspend inline fun <R> LifecycleOwner.withStateAtLeast(
+ state: Lifecycle.State,
+ crossinline block: () -> R
+): R = lifecycle.withStateAtLeast(
+ state = state,
+ block = block
+)
+
+/**
+ * Run [block] with this [LifecycleOwner]'s [Lifecycle] in a [Lifecycle.State] of at least
+ * [Lifecycle.State.CREATED] and resume with the result.
+ * Throws the [CancellationException] [LifecycleDestroyedException] if the lifecycle has reached
+ * [Lifecycle.State.DESTROYED] by the time of the call or before [block] is able to run.
+ */
+suspend inline fun <R> LifecycleOwner.withCreated(
+ crossinline block: () -> R
+): R = lifecycle.withStateAtLeastUnchecked(
+ state = Lifecycle.State.CREATED,
+ block = block
+)
+
+/**
+ * Run [block] with this [LifecycleOwner]'s [Lifecycle] in a [Lifecycle.State] of at least
+ * [Lifecycle.State.STARTED] and resume with the result.
+ * Throws the [CancellationException] [LifecycleDestroyedException] if the lifecycle has reached
+ * [Lifecycle.State.DESTROYED] by the time of the call or before [block] is able to run.
+ */
+suspend inline fun <R> LifecycleOwner.withStarted(
+ crossinline block: () -> R
+): R = lifecycle.withStateAtLeastUnchecked(
+ state = Lifecycle.State.STARTED,
+ block = block
+)
+
+/**
+ * Run [block] with this [LifecycleOwner]'s [Lifecycle] in a [Lifecycle.State] of at least
+ * [Lifecycle.State.RESUMED] and resume with the result.
+ * Throws the [CancellationException] [LifecycleDestroyedException] if the lifecycle has reached
+ * [Lifecycle.State.DESTROYED] by the time of the call or before [block] is able to run.
+ */
+suspend inline fun <R> LifecycleOwner.withResumed(
+ crossinline block: () -> R
+): R = lifecycle.withStateAtLeastUnchecked(
+ state = Lifecycle.State.RESUMED,
+ block = block
+)
+
+/**
+ * The inlined check for whether dispatch is necessary to perform [Lifecycle.withStateAtLeast]
+ * operations that does not bounds-check [state]. Used internally when we know the target state
+ * is already in bounds. Runs [block] inline without allocating if possible.
+ */
+@PublishedApi
+internal suspend inline fun <R> Lifecycle.withStateAtLeastUnchecked(
+ state: Lifecycle.State,
+ crossinline block: () -> R
+): R {
+ // Fast path: if our lifecycle dispatcher doesn't require dispatch we can check
+ // the current lifecycle state and decide if we can run synchronously
+ val lifecycleDispatcher = Dispatchers.Main.immediate
+ val dispatchNeeded = lifecycleDispatcher.isDispatchNeeded(coroutineContext)
+ if (!dispatchNeeded) {
+ if (currentState == Lifecycle.State.DESTROYED) throw LifecycleDestroyedException()
+ if (currentState >= state) return block()
+ }
+
+ return suspendWithStateAtLeastUnchecked(state, dispatchNeeded, lifecycleDispatcher) {
+ block()
+ }
+}
+
+/**
+ * The "slow" code path for [Lifecycle.withStateAtLeast] operations that requires allocating
+ * and suspending, factored into a non-inlined function to avoid inflating code size at call sites
+ * or exposing too many implementation details as inlined code.
+ */
+@PublishedApi
+internal suspend fun <R> Lifecycle.suspendWithStateAtLeastUnchecked(
+ state: Lifecycle.State,
+ dispatchNeeded: Boolean,
+ lifecycleDispatcher: CoroutineDispatcher,
+ block: () -> R
+): R = suspendCancellableCoroutine { co ->
+ val observer = object : LifecycleEventObserver {
+ override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+ if (event == Lifecycle.Event.upTo(state)) {
+ removeObserver(this)
+ co.resumeWith(runCatching(block))
+ } else if (event == Lifecycle.Event.ON_DESTROY) {
+ removeObserver(this)
+ co.resumeWithException(LifecycleDestroyedException())
+ }
+ }
+ }
+
+ if (dispatchNeeded) {
+ lifecycleDispatcher.dispatch(
+ EmptyCoroutineContext,
+ Runnable { addObserver(observer) }
+ )
+ } else addObserver(observer)
+
+ co.invokeOnCancellation {
+ if (lifecycleDispatcher.isDispatchNeeded(EmptyCoroutineContext)) {
+ lifecycleDispatcher.dispatch(
+ EmptyCoroutineContext,
+ Runnable { removeObserver(observer) }
+ )
+ } else removeObserver(observer)
+ }
+}
diff --git a/lifecycle/lifecycle-runtime-testing/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-testing/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..edbcffd
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-testing/api/2.3.0-alpha06.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.lifecycle.testing {
+
+ public final class TestLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState, kotlinx.coroutines.CoroutineDispatcher coroutineDispatcher);
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState);
+ ctor public TestLifecycleOwner();
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event event);
+ method public void setCurrentState(androidx.lifecycle.Lifecycle.State value);
+ property public final androidx.lifecycle.Lifecycle.State currentState;
+ property public final int observerCount;
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-testing/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-testing/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..edbcffd
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-testing/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.lifecycle.testing {
+
+ public final class TestLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState, kotlinx.coroutines.CoroutineDispatcher coroutineDispatcher);
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState);
+ ctor public TestLifecycleOwner();
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event event);
+ method public void setCurrentState(androidx.lifecycle.Lifecycle.State value);
+ property public final androidx.lifecycle.Lifecycle.State currentState;
+ property public final int observerCount;
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime-testing/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-testing/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-testing/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-runtime-testing/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime-testing/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..edbcffd
--- /dev/null
+++ b/lifecycle/lifecycle-runtime-testing/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.lifecycle.testing {
+
+ public final class TestLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState, kotlinx.coroutines.CoroutineDispatcher coroutineDispatcher);
+ ctor public TestLifecycleOwner(androidx.lifecycle.Lifecycle.State initialState);
+ ctor public TestLifecycleOwner();
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event event);
+ method public void setCurrentState(androidx.lifecycle.Lifecycle.State value);
+ property public final androidx.lifecycle.Lifecycle.State currentState;
+ property public final int observerCount;
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..af2571b
--- /dev/null
+++ b/lifecycle/lifecycle-runtime/api/2.3.0-alpha06.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleRegistry extends androidx.lifecycle.Lifecycle {
+ ctor public LifecycleRegistry(androidx.lifecycle.LifecycleOwner);
+ method public void addObserver(androidx.lifecycle.LifecycleObserver);
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event);
+ method @Deprecated @MainThread public void markState(androidx.lifecycle.Lifecycle.State);
+ method public void removeObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public void setCurrentState(androidx.lifecycle.Lifecycle.State);
+ }
+
+ @Deprecated public interface LifecycleRegistryOwner extends androidx.lifecycle.LifecycleOwner {
+ method @Deprecated public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ }
+
+ public class ViewTreeLifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.LifecycleOwner?);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..af2571b
--- /dev/null
+++ b/lifecycle/lifecycle-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleRegistry extends androidx.lifecycle.Lifecycle {
+ ctor public LifecycleRegistry(androidx.lifecycle.LifecycleOwner);
+ method public void addObserver(androidx.lifecycle.LifecycleObserver);
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event);
+ method @Deprecated @MainThread public void markState(androidx.lifecycle.Lifecycle.State);
+ method public void removeObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public void setCurrentState(androidx.lifecycle.Lifecycle.State);
+ }
+
+ @Deprecated public interface LifecycleRegistryOwner extends androidx.lifecycle.LifecycleOwner {
+ method @Deprecated public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ }
+
+ public class ViewTreeLifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.LifecycleOwner?);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-runtime/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-runtime/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-runtime/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-runtime/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..36010e4
--- /dev/null
+++ b/lifecycle/lifecycle-runtime/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,36 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleRegistry extends androidx.lifecycle.Lifecycle {
+ ctor public LifecycleRegistry(androidx.lifecycle.LifecycleOwner);
+ method public void addObserver(androidx.lifecycle.LifecycleObserver);
+ method public androidx.lifecycle.Lifecycle.State getCurrentState();
+ method public int getObserverCount();
+ method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event);
+ method @Deprecated @MainThread public void markState(androidx.lifecycle.Lifecycle.State);
+ method public void removeObserver(androidx.lifecycle.LifecycleObserver);
+ method @MainThread public void setCurrentState(androidx.lifecycle.Lifecycle.State);
+ }
+
+ @Deprecated public interface LifecycleRegistryOwner extends androidx.lifecycle.LifecycleOwner {
+ method @Deprecated public androidx.lifecycle.LifecycleRegistry getLifecycle();
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ReportFragment extends android.app.Fragment {
+ ctor public ReportFragment();
+ method public static void injectIfNeededIn(android.app.Activity!);
+ method public void onActivityCreated(android.os.Bundle!);
+ method public void onDestroy();
+ method public void onPause();
+ method public void onResume();
+ method public void onStart();
+ method public void onStop();
+ }
+
+ public class ViewTreeLifecycleOwner {
+ method public static androidx.lifecycle.LifecycleOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.LifecycleOwner?);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-service/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-service/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..e3c2893
--- /dev/null
+++ b/lifecycle/lifecycle-service/api/2.3.0-alpha06.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleService extends android.app.Service implements androidx.lifecycle.LifecycleOwner {
+ ctor public LifecycleService();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method @CallSuper public android.os.IBinder? onBind(android.content.Intent);
+ method @CallSuper public void onStart(android.content.Intent?, int);
+ }
+
+ public class ServiceLifecycleDispatcher {
+ ctor public ServiceLifecycleDispatcher(androidx.lifecycle.LifecycleOwner);
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method public void onServicePreSuperOnBind();
+ method public void onServicePreSuperOnCreate();
+ method public void onServicePreSuperOnDestroy();
+ method public void onServicePreSuperOnStart();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-service/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-service/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..e3c2893
--- /dev/null
+++ b/lifecycle/lifecycle-service/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleService extends android.app.Service implements androidx.lifecycle.LifecycleOwner {
+ ctor public LifecycleService();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method @CallSuper public android.os.IBinder? onBind(android.content.Intent);
+ method @CallSuper public void onStart(android.content.Intent?, int);
+ }
+
+ public class ServiceLifecycleDispatcher {
+ ctor public ServiceLifecycleDispatcher(androidx.lifecycle.LifecycleOwner);
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method public void onServicePreSuperOnBind();
+ method public void onServicePreSuperOnCreate();
+ method public void onServicePreSuperOnDestroy();
+ method public void onServicePreSuperOnStart();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-service/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-service/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-service/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-service/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-service/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..e3c2893
--- /dev/null
+++ b/lifecycle/lifecycle-service/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,21 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class LifecycleService extends android.app.Service implements androidx.lifecycle.LifecycleOwner {
+ ctor public LifecycleService();
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method @CallSuper public android.os.IBinder? onBind(android.content.Intent);
+ method @CallSuper public void onStart(android.content.Intent?, int);
+ }
+
+ public class ServiceLifecycleDispatcher {
+ ctor public ServiceLifecycleDispatcher(androidx.lifecycle.LifecycleOwner);
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method public void onServicePreSuperOnBind();
+ method public void onServicePreSuperOnCreate();
+ method public void onServicePreSuperOnDestroy();
+ method public void onServicePreSuperOnStart();
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-ktx/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-ktx/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..4fb6e5a
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-ktx/api/2.3.0-alpha06.txt
@@ -0,0 +1,24 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class ViewModelKt {
+ method public static kotlinx.coroutines.CoroutineScope getViewModelScope(androidx.lifecycle.ViewModel);
+ }
+
+ public final class ViewModelLazy<VM extends androidx.lifecycle.ViewModel> implements kotlin.Lazy<VM> {
+ ctor public ViewModelLazy(kotlin.reflect.KClass<VM> viewModelClass, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelStore> storeProducer, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory> factoryProducer);
+ method public VM getValue();
+ method public boolean isInitialized();
+ property public VM value;
+ }
+
+ public final class ViewModelProviderKt {
+ method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! get(androidx.lifecycle.ViewModelProvider);
+ }
+
+ public final class ViewTreeViewModelKt {
+ method public static androidx.lifecycle.ViewModelStoreOwner? findViewTreeViewModelStoreOwner(android.view.View);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-ktx/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..4fb6e5a
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-ktx/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,24 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class ViewModelKt {
+ method public static kotlinx.coroutines.CoroutineScope getViewModelScope(androidx.lifecycle.ViewModel);
+ }
+
+ public final class ViewModelLazy<VM extends androidx.lifecycle.ViewModel> implements kotlin.Lazy<VM> {
+ ctor public ViewModelLazy(kotlin.reflect.KClass<VM> viewModelClass, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelStore> storeProducer, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory> factoryProducer);
+ method public VM getValue();
+ method public boolean isInitialized();
+ property public VM value;
+ }
+
+ public final class ViewModelProviderKt {
+ method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! get(androidx.lifecycle.ViewModelProvider);
+ }
+
+ public final class ViewTreeViewModelKt {
+ method public static androidx.lifecycle.ViewModelStoreOwner? findViewTreeViewModelStoreOwner(android.view.View);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-ktx/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-ktx/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-ktx/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-viewmodel-ktx/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-ktx/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..4fb6e5a
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-ktx/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,24 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public final class ViewModelKt {
+ method public static kotlinx.coroutines.CoroutineScope getViewModelScope(androidx.lifecycle.ViewModel);
+ }
+
+ public final class ViewModelLazy<VM extends androidx.lifecycle.ViewModel> implements kotlin.Lazy<VM> {
+ ctor public ViewModelLazy(kotlin.reflect.KClass<VM> viewModelClass, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelStore> storeProducer, kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory> factoryProducer);
+ method public VM getValue();
+ method public boolean isInitialized();
+ property public VM value;
+ }
+
+ public final class ViewModelProviderKt {
+ method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! get(androidx.lifecycle.ViewModelProvider);
+ }
+
+ public final class ViewTreeViewModelKt {
+ method public static androidx.lifecycle.ViewModelStoreOwner? findViewTreeViewModelStoreOwner(android.view.View);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-savedstate/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..d1638a6
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-savedstate/api/2.3.0-alpha06.txt
@@ -0,0 +1,32 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class AbstractSavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public AbstractSavedStateViewModelFactory(androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method public final <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ method protected abstract <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>, androidx.lifecycle.SavedStateHandle);
+ }
+
+ public final class SavedStateHandle {
+ ctor public SavedStateHandle(java.util.Map<java.lang.String!,java.lang.Object!>);
+ ctor public SavedStateHandle();
+ method @MainThread public void clearSavedStateProvider(String);
+ method @MainThread public boolean contains(String);
+ method @MainThread public <T> T? get(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String, T!);
+ method @MainThread public java.util.Set<java.lang.String!> keys();
+ method @MainThread public <T> T? remove(String);
+ method @MainThread public <T> void set(String, T?);
+ method @MainThread public void setSavedStateProvider(String, androidx.savedstate.SavedStateRegistry.SavedStateProvider);
+ }
+
+ public final class SavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner);
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method public <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>);
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-savedstate/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..d1638a6
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-savedstate/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,32 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class AbstractSavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public AbstractSavedStateViewModelFactory(androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method public final <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ method protected abstract <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>, androidx.lifecycle.SavedStateHandle);
+ }
+
+ public final class SavedStateHandle {
+ ctor public SavedStateHandle(java.util.Map<java.lang.String!,java.lang.Object!>);
+ ctor public SavedStateHandle();
+ method @MainThread public void clearSavedStateProvider(String);
+ method @MainThread public boolean contains(String);
+ method @MainThread public <T> T? get(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String, T!);
+ method @MainThread public java.util.Set<java.lang.String!> keys();
+ method @MainThread public <T> T? remove(String);
+ method @MainThread public <T> void set(String, T?);
+ method @MainThread public void setSavedStateProvider(String, androidx.savedstate.SavedStateRegistry.SavedStateProvider);
+ }
+
+ public final class SavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner);
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method public <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>);
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-savedstate/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-savedstate/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel-savedstate/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..ec77411
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-savedstate/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,33 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public abstract class AbstractSavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public AbstractSavedStateViewModelFactory(androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public final <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>);
+ method public final <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ method protected abstract <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>, androidx.lifecycle.SavedStateHandle);
+ }
+
+ public final class SavedStateHandle {
+ ctor public SavedStateHandle(java.util.Map<java.lang.String!,java.lang.Object!>);
+ ctor public SavedStateHandle();
+ method @MainThread public void clearSavedStateProvider(String);
+ method @MainThread public boolean contains(String);
+ method @MainThread public <T> T? get(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String);
+ method @MainThread public <T> androidx.lifecycle.MutableLiveData<T!> getLiveData(String, T!);
+ method @MainThread public java.util.Set<java.lang.String!> keys();
+ method @MainThread public <T> T? remove(String);
+ method @MainThread public <T> void set(String, T?);
+ method @MainThread public void setSavedStateProvider(String, androidx.savedstate.SavedStateRegistry.SavedStateProvider);
+ }
+
+ public final class SavedStateViewModelFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner);
+ ctor public SavedStateViewModelFactory(android.app.Application?, androidx.savedstate.SavedStateRegistryOwner, android.os.Bundle?);
+ method public <T extends androidx.lifecycle.ViewModel> T create(String, Class<T!>);
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel/api/2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel/api/2.3.0-alpha06.txt
new file mode 100644
index 0000000..7df8caf
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/api/2.3.0-alpha06.txt
@@ -0,0 +1,55 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class AndroidViewModel extends androidx.lifecycle.ViewModel {
+ ctor public AndroidViewModel(android.app.Application);
+ method public <T extends android.app.Application> T getApplication();
+ }
+
+ public interface HasDefaultViewModelProviderFactory {
+ method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ }
+
+ public abstract class ViewModel {
+ ctor public ViewModel();
+ method protected void onCleared();
+ }
+
+ public class ViewModelProvider {
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner, androidx.lifecycle.ViewModelProvider.Factory);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore, androidx.lifecycle.ViewModelProvider.Factory);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(Class<T!>);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(String, Class<T!>);
+ }
+
+ public static class ViewModelProvider.AndroidViewModelFactory extends androidx.lifecycle.ViewModelProvider.NewInstanceFactory {
+ ctor public ViewModelProvider.AndroidViewModelFactory(android.app.Application);
+ method public static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory getInstance(android.app.Application);
+ }
+
+ public static interface ViewModelProvider.Factory {
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public static class ViewModelProvider.NewInstanceFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public ViewModelProvider.NewInstanceFactory();
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public class ViewModelStore {
+ ctor public ViewModelStore();
+ method public final void clear();
+ }
+
+ public interface ViewModelStoreOwner {
+ method public androidx.lifecycle.ViewModelStore getViewModelStore();
+ }
+
+ public class ViewTreeViewModelStoreOwner {
+ method public static androidx.lifecycle.ViewModelStoreOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.ViewModelStoreOwner?);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_2.3.0-alpha06.txt
new file mode 100644
index 0000000..7df8caf
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_2.3.0-alpha06.txt
@@ -0,0 +1,55 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class AndroidViewModel extends androidx.lifecycle.ViewModel {
+ ctor public AndroidViewModel(android.app.Application);
+ method public <T extends android.app.Application> T getApplication();
+ }
+
+ public interface HasDefaultViewModelProviderFactory {
+ method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ }
+
+ public abstract class ViewModel {
+ ctor public ViewModel();
+ method protected void onCleared();
+ }
+
+ public class ViewModelProvider {
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner, androidx.lifecycle.ViewModelProvider.Factory);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore, androidx.lifecycle.ViewModelProvider.Factory);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(Class<T!>);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(String, Class<T!>);
+ }
+
+ public static class ViewModelProvider.AndroidViewModelFactory extends androidx.lifecycle.ViewModelProvider.NewInstanceFactory {
+ ctor public ViewModelProvider.AndroidViewModelFactory(android.app.Application);
+ method public static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory getInstance(android.app.Application);
+ }
+
+ public static interface ViewModelProvider.Factory {
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public static class ViewModelProvider.NewInstanceFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public ViewModelProvider.NewInstanceFactory();
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public class ViewModelStore {
+ ctor public ViewModelStore();
+ method public final void clear();
+ }
+
+ public interface ViewModelStoreOwner {
+ method public androidx.lifecycle.ViewModelStore getViewModelStore();
+ }
+
+ public class ViewTreeViewModelStoreOwner {
+ method public static androidx.lifecycle.ViewModelStoreOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.ViewModelStoreOwner?);
+ }
+
+}
+
diff --git a/lifecycle/lifecycle-viewmodel/api/res-2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel/api/res-2.3.0-alpha06.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/api/res-2.3.0-alpha06.txt
diff --git a/lifecycle/lifecycle-viewmodel/api/restricted_2.3.0-alpha06.txt b/lifecycle/lifecycle-viewmodel/api/restricted_2.3.0-alpha06.txt
new file mode 100644
index 0000000..7df8caf
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/api/restricted_2.3.0-alpha06.txt
@@ -0,0 +1,55 @@
+// Signature format: 3.0
+package androidx.lifecycle {
+
+ public class AndroidViewModel extends androidx.lifecycle.ViewModel {
+ ctor public AndroidViewModel(android.app.Application);
+ method public <T extends android.app.Application> T getApplication();
+ }
+
+ public interface HasDefaultViewModelProviderFactory {
+ method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ }
+
+ public abstract class ViewModel {
+ ctor public ViewModel();
+ method protected void onCleared();
+ }
+
+ public class ViewModelProvider {
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStoreOwner, androidx.lifecycle.ViewModelProvider.Factory);
+ ctor public ViewModelProvider(androidx.lifecycle.ViewModelStore, androidx.lifecycle.ViewModelProvider.Factory);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(Class<T!>);
+ method @MainThread public <T extends androidx.lifecycle.ViewModel> T get(String, Class<T!>);
+ }
+
+ public static class ViewModelProvider.AndroidViewModelFactory extends androidx.lifecycle.ViewModelProvider.NewInstanceFactory {
+ ctor public ViewModelProvider.AndroidViewModelFactory(android.app.Application);
+ method public static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory getInstance(android.app.Application);
+ }
+
+ public static interface ViewModelProvider.Factory {
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public static class ViewModelProvider.NewInstanceFactory implements androidx.lifecycle.ViewModelProvider.Factory {
+ ctor public ViewModelProvider.NewInstanceFactory();
+ method public <T extends androidx.lifecycle.ViewModel> T create(Class<T!>);
+ }
+
+ public class ViewModelStore {
+ ctor public ViewModelStore();
+ method public final void clear();
+ }
+
+ public interface ViewModelStoreOwner {
+ method public androidx.lifecycle.ViewModelStore getViewModelStore();
+ }
+
+ public class ViewTreeViewModelStoreOwner {
+ method public static androidx.lifecycle.ViewModelStoreOwner? get(android.view.View);
+ method public static void set(android.view.View, androidx.lifecycle.ViewModelStoreOwner?);
+ }
+
+}
+
diff --git a/media/media/api/1.2.0-alpha04.txt b/media/media/api/1.2.0-alpha04.txt
index 72d9f06..f02957a 100644
--- a/media/media/api/1.2.0-alpha04.txt
+++ b/media/media/api/1.2.0-alpha04.txt
@@ -709,6 +709,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/api/current.txt b/media/media/api/current.txt
index 72d9f06..f02957a 100644
--- a/media/media/api/current.txt
+++ b/media/media/api/current.txt
@@ -709,6 +709,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/api/public_plus_experimental_1.2.0-alpha04.txt b/media/media/api/public_plus_experimental_1.2.0-alpha04.txt
index db47a1b..51cf446 100644
--- a/media/media/api/public_plus_experimental_1.2.0-alpha04.txt
+++ b/media/media/api/public_plus_experimental_1.2.0-alpha04.txt
@@ -709,6 +709,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/api/public_plus_experimental_current.txt b/media/media/api/public_plus_experimental_current.txt
index db47a1b..51cf446 100644
--- a/media/media/api/public_plus_experimental_current.txt
+++ b/media/media/api/public_plus_experimental_current.txt
@@ -709,6 +709,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/api/restricted_1.2.0-alpha04.txt b/media/media/api/restricted_1.2.0-alpha04.txt
index 37b65c8..8fe55c0 100644
--- a/media/media/api/restricted_1.2.0-alpha04.txt
+++ b/media/media/api/restricted_1.2.0-alpha04.txt
@@ -741,6 +741,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/api/restricted_current.txt b/media/media/api/restricted_current.txt
index 37b65c8..8fe55c0 100644
--- a/media/media/api/restricted_current.txt
+++ b/media/media/api/restricted_current.txt
@@ -741,6 +741,7 @@
package androidx.media.utils {
public final class MediaConstants {
+ field public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID = "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_NAME = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_NAME";
field public static final String SESSION_EXTRAS_KEY_ACCOUNT_TYPE = "androidx.media.MediaSessionCompat.Extras.KEY_ACCOUNT_TYPE";
}
diff --git a/media/media/src/main/java/androidx/media/utils/MediaConstants.java b/media/media/src/main/java/androidx/media/utils/MediaConstants.java
index 0724be6..28281d9 100644
--- a/media/media/src/main/java/androidx/media/utils/MediaConstants.java
+++ b/media/media/src/main/java/androidx/media/utils/MediaConstants.java
@@ -19,8 +19,10 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import android.annotation.SuppressLint;
+import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaControllerCompat;
import android.support.v4.media.session.MediaSessionCompat;
+import android.support.v4.media.session.PlaybackStateCompat;
import androidx.annotation.RestrictTo;
@@ -67,5 +69,19 @@
public static final String SESSION_EXTRAS_KEY_AUTHTOKEN =
"androidx.media.MediaSessionCompat.Extras.KEY_AUTHTOKEN";
+ /**
+ * Bundle key used for the media id in {@link PlaybackStateCompat playback state} extras. It's
+ * for associating the playback state with the media being played so the value is expected to be
+ * same with {@link MediaMetadataCompat#METADATA_KEY_MEDIA_ID media id} of the current metadata.
+ *
+ * <p>TYPE: String</p>
+ *
+ * @see PlaybackStateCompat#getExtras
+ * @see PlaybackStateCompat.Builder#setExtras
+ */
+ @SuppressLint("IntentName")
+ public static final String PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID =
+ "androidx.media.PlaybackStateCompat.Extras.KEY_MEDIA_ID";
+
private MediaConstants() {}
}
diff --git a/media2/common/api/api_lint.ignore b/media2/common/api/api_lint.ignore
index d2bb9aa..d3d06d5 100644
--- a/media2/common/api/api_lint.ignore
+++ b/media2/common/api/api_lint.ignore
@@ -13,9 +13,5 @@
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.media2.common.MediaMetadata.Builder.putText(String,CharSequence)
-GenericException: androidx.media2.common.SessionPlayer#close():
- Methods must not throw generic exceptions (`java.lang.Exception`)
-
-
IntentName: androidx.media2.common.MediaMetadata#METADATA_KEY_EXTRAS:
Intent extra constant name must be EXTRA_FOO: METADATA_KEY_EXTRAS
diff --git a/media2/player/api/api_lint.ignore b/media2/player/api/api_lint.ignore
index f6d216c..bc67ff2 100644
--- a/media2/player/api/api_lint.ignore
+++ b/media2/player/api/api_lint.ignore
@@ -7,9 +7,5 @@
Must avoid boxed primitives (`java.lang.Float`)
-GenericException: androidx.media2.player.MediaPlayer#close():
- Methods must not throw generic exceptions (`java.lang.Exception`)
-
-
MissingNullability: androidx.media2.player.TimedMetaData#getMetaData():
Missing nullability on method `getMetaData` return
diff --git a/media2/session/src/main/java/androidx/media2/session/MediaSessionLegacyStub.java b/media2/session/src/main/java/androidx/media2/session/MediaSessionLegacyStub.java
index f756bbf..87d9346 100644
--- a/media2/session/src/main/java/androidx/media2/session/MediaSessionLegacyStub.java
+++ b/media2/session/src/main/java/androidx/media2/session/MediaSessionLegacyStub.java
@@ -845,6 +845,8 @@
int nextIdx) throws RemoteException {
mSessionImpl.getSessionCompat().setMetadata(item == null ? null
: MediaUtils.convertToMediaMetadataCompat(item.getMetadata()));
+ mSessionImpl.getSessionCompat().setPlaybackState(
+ mSessionImpl.createPlaybackStateCompat());
}
@Override
diff --git a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
similarity index 94%
rename from media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java
rename to media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
index 1ab31ca..5a31569 100644
--- a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java
+++ b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
@@ -68,8 +68,8 @@
* Tests whether {@link MediaBrowserCompat} works well with {@link MediaLibraryService}.
*/
@LargeTest
-public class MediaBrowserCompatTestWithMediaLibraryService extends
- MediaBrowserCompatTestWithMediaSessionService {
+public class MediaBrowserCompatWithMediaLibraryServiceTest extends
+ MediaBrowserCompatWithMediaSessionServiceTest {
@Override
public void setUp() throws Exception {
super.setUp();
@@ -86,7 +86,7 @@
}
@Test
- public void testGetRoot() throws InterruptedException {
+ public void getRoot() throws InterruptedException {
// The MockMediaLibraryService gives MediaBrowserConstants.ROOT_ID as root ID, and
// MediaBrowserConstants.ROOT_EXTRAS as extras.
sHandler.postAndSync(new Runnable() {
@@ -105,7 +105,7 @@
}
@Test
- public void testGetItem() throws InterruptedException {
+ public void getItem() throws InterruptedException {
final String mediaId = MEDIA_ID_GET_ITEM;
connectAndWait();
@@ -122,7 +122,7 @@
}
@Test
- public void testGetItem_nullResult() throws InterruptedException {
+ public void getItem_nullResult() throws InterruptedException {
final String mediaId = "random_media_id";
connectAndWait();
@@ -143,7 +143,7 @@
}
@Test
- public void testGetChildren() throws InterruptedException {
+ public void getChildren() throws InterruptedException {
final String testParentId = PARENT_ID;
connectAndWait();
@@ -173,7 +173,7 @@
}
@Test
- public void testGetChildren_withLongList() throws InterruptedException {
+ public void getChildren_withLongList() throws InterruptedException {
final String testParentId = PARENT_ID_LONG_LIST;
connectAndWait();
@@ -203,7 +203,7 @@
}
@Test
- public void testGetChildren_withPagination() throws InterruptedException {
+ public void getChildren_withPagination() throws InterruptedException {
final String testParentId = PARENT_ID;
final int page = 4;
final int pageSize = 10;
@@ -246,7 +246,7 @@
}
@Test
- public void testGetChildren_emptyResult() throws InterruptedException {
+ public void getChildren_emptyResult() throws InterruptedException {
final String testParentId = PARENT_ID_NO_CHILDREN;
connectAndWait();
@@ -264,7 +264,7 @@
}
@Test
- public void testGetChildren_nullResult() throws InterruptedException {
+ public void getChildren_nullResult() throws InterruptedException {
final String testParentId = PARENT_ID_ERROR;
connectAndWait();
@@ -286,7 +286,7 @@
}
@Test
- public void testSearch() throws InterruptedException {
+ public void search() throws InterruptedException {
final String testQuery = SEARCH_QUERY;
final int page = 4;
final int pageSize = 10;
@@ -325,7 +325,7 @@
}
@Test
- public void testSearch_withLongList() throws InterruptedException {
+ public void search_withLongList() throws InterruptedException {
final String testQuery = SEARCH_QUERY_LONG_LIST;
final int page = 0;
final int pageSize = Integer.MAX_VALUE;
@@ -355,7 +355,7 @@
}
@Test
- public void testSearch_emptyResult() throws InterruptedException {
+ public void search_emptyResult() throws InterruptedException {
final String testQuery = SEARCH_QUERY_EMPTY_RESULT;
final Bundle testExtras = new Bundle();
testExtras.putString(testQuery, testQuery);
@@ -377,7 +377,7 @@
}
@Test
- public void testSearch_error() throws InterruptedException {
+ public void search_error() throws InterruptedException {
final String testQuery = SEARCH_QUERY_ERROR;
final Bundle testExtras = new Bundle();
testExtras.putString(testQuery, testQuery);
@@ -403,7 +403,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe() throws InterruptedException {
+ public void subscribe() throws InterruptedException {
// final String testParentId = "testSubscribeId";
// final List<MediaItem> testList = TestUtils.createMediaItems(3);
//
@@ -448,7 +448,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe_withExtras() throws InterruptedException {
+ public void subscribe_withExtras() throws InterruptedException {
// final String testParentId = "testSubscribe_withExtras";
// final Bundle testExtras = new Bundle();
// testExtras.putString(testParentId, testParentId);
@@ -499,7 +499,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe_withPagination() throws InterruptedException {
+ public void subscribe_withPagination() throws InterruptedException {
// final String testParentId = "testSubscribe_pagination_ID";
// final List<MediaItem> testList = TestUtils.createMediaItems(3);
// final int testPage = 2;
@@ -565,7 +565,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribeAndUnsubscribe() throws InterruptedException {
+ public void subscribeAndUnsubscribe() throws InterruptedException {
// final String testParentId = "testUnsubscribe";
// final Bundle testExtras = new Bundle();
// testExtras.putString(testParentId, testParentId);
@@ -605,7 +605,7 @@
@Ignore("TODO: Split this test to here and MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testNotifyChildrenChanged() throws InterruptedException {
+ public void notifyChildrenChanged() throws InterruptedException {
// final String testSubscribedParentId = "testNotifyChildrenChanged";
// final String testUnsubscribedParentId = "testNotifyChildrenChanged22";
// final Bundle testExtras = new Bundle();
@@ -658,7 +658,7 @@
// TODO: Add test for onCustomCommand() in MediaLibrarySessionLegacyCallbackTest.
@Test
- public void testCustomAction() throws InterruptedException {
+ public void customAction() throws InterruptedException {
final Bundle testArgs = new Bundle();
testArgs.putString("args_key", "args_value");
@@ -678,7 +678,7 @@
// TODO: Add test for onCustomCommand() in MediaLibrarySessionLegacyCallbackTest.
@Test
- public void testCustomAction_rejected() throws InterruptedException {
+ public void customAction_rejected() throws InterruptedException {
// This action will not be allowed by the library session.
final String testAction = "random_custom_action";
diff --git a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
similarity index 93%
rename from media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java
rename to media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
index 41c0cea..07fd59f 100644
--- a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java
+++ b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
@@ -41,7 +41,7 @@
* Tests whether {@link MediaBrowserCompat} works well with {@link MediaSessionService}.
*/
@LargeTest
-public class MediaBrowserCompatTestWithMediaSessionService extends MediaSessionTestBase {
+public class MediaBrowserCompatWithMediaSessionServiceTest extends MediaSessionTestBase {
MediaBrowserCompat mBrowserCompat;
TestConnectionCallback mConnectionCallback;
@@ -79,21 +79,21 @@
}
@Test
- public void testConnect() throws InterruptedException {
+ public void connect() throws InterruptedException {
connectAndWait();
assertNotEquals(0, mConnectionCallback.mFailedLatch.getCount());
}
@Ignore
@Test
- public void testConnect_rejected() throws InterruptedException {
+ public void connect_rejected() throws InterruptedException {
// TODO: Connect the browser to the session service whose onConnect() returns null.
assertTrue(mConnectionCallback.mFailedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
assertNotEquals(0, mConnectionCallback.mConnectedLatch.getCount());
}
@Test
- public void testGetSessionToken() throws Exception {
+ public void getSessionToken() throws Exception {
connectAndWait();
MediaControllerCompat controller = new MediaControllerCompat(mContext,
mBrowserCompat.getSessionToken());
diff --git a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java
deleted file mode 100644
index e5d1fd7..0000000
--- a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java
+++ /dev/null
@@ -1,692 +0,0 @@
-/*
- * Copyright 2018 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 androidx.media2.test.client.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.media.AudioManager;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.ParcelFileDescriptor;
-import android.support.v4.media.MediaMetadataCompat;
-import android.support.v4.media.session.MediaControllerCompat;
-import android.support.v4.media.session.MediaSessionCompat.QueueItem;
-import android.support.v4.media.session.PlaybackStateCompat;
-
-import androidx.media.AudioAttributesCompat;
-import androidx.media.VolumeProviderCompat;
-import androidx.media2.common.FileMediaItem;
-import androidx.media2.common.MediaItem;
-import androidx.media2.common.MediaMetadata;
-import androidx.media2.common.SessionPlayer;
-import androidx.media2.session.MediaSession;
-import androidx.media2.session.MediaUtils;
-import androidx.media2.session.RemoteSessionPlayer;
-import androidx.media2.test.client.MediaTestUtils;
-import androidx.media2.test.client.RemoteMediaSession;
-import androidx.media2.test.common.TestUtils;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.LargeTest;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Tests {@link MediaSession}.
- */
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class MediaControllerCompatCallbackTestWithMediaSession extends MediaSessionTestBase {
- private static final String TAG = "MCCCallbackTestWithMS2";
-
- private static final long TIMEOUT_MS = 1000L;
-
- private RemoteMediaSession mSession;
- private MediaControllerCompat mControllerCompat;
-
- @Before
- @Override
- public void setUp() throws Exception {
- super.setUp();
- mSession = new RemoteMediaSession(TAG, mContext, null);
- mControllerCompat = new MediaControllerCompat(mContext, mSession.getCompatToken());
- }
-
- @After
- @Override
- public void cleanUp() throws Exception {
- super.cleanUp();
- mSession.close();
- }
-
- @Test
- public void testRepeatModeChange() throws Exception {
- final int testRepeatMode = SessionPlayer.REPEAT_MODE_GROUP;
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setRepeatMode(testRepeatMode);
- mSession.getMockPlayer().notifyRepeatModeChanged();
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnRepeatModeChangedCalled);
- assertEquals(testRepeatMode, mControllerCompat.getRepeatMode());
- }
-
- @Test
- public void testShuffleModeChange() throws Exception {
- final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setShuffleMode(testShuffleMode);
- mSession.getMockPlayer().notifyShuffleModeChanged();
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnShuffleModeChangedCalled);
- assertEquals(testShuffleMode, mControllerCompat.getShuffleMode());
- }
-
- @Test
- public void testClose() throws Exception {
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.close();
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnSessionDestroyedCalled);
- }
-
- @Test
- public void testUpdatePlayer() throws Exception {
- final int testState = SessionPlayer.PLAYER_STATE_PLAYING;
- final int testBufferingPosition = 1500;
- final float testSpeed = 1.5f;
- final List<MediaItem> testPlaylist = MediaTestUtils.createFileMediaItems(3);
- final String testPlaylistTitle = "testPlaylistTitle";
- final MediaMetadata testPlaylistMetadata = new MediaMetadata.Builder()
- .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, testPlaylistTitle).build();
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- // TODO: Make each callback method use their own CountDownLatch.
- if (Build.VERSION.SDK_INT < 21) {
- controllerCallback.reset(7);
- } else {
- // On API 21+, MediaControllerCompat.Callback.onAudioInfoChanged() is called
- // only when the playback type is changed. Since this test method does not change
- // the playback type (local -> local), onAudioInfoChanged will not be called.
- controllerCallback.reset(6);
- }
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setPlayerState(testState)
- .setBufferedPosition(testBufferingPosition)
- .setPlaybackSpeed(testSpeed)
- .setPlaylist(testPlaylist)
- .setPlaylistMetadata(testPlaylistMetadata)
- .setCurrentMediaItem(testPlaylist.get(0))
- .build();
- mSession.updatePlayer(playerConfig);
-
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnPlaybackStateChangedCalled);
- assertEquals(testState,
- MediaUtils.convertToPlayerState(controllerCallback.mPlaybackState));
- assertEquals(testBufferingPosition,
- controllerCallback.mPlaybackState.getBufferedPosition());
- assertEquals(testSpeed, controllerCallback.mPlaybackState.getPlaybackSpeed(), 0.0f);
-
- assertTrue(controllerCallback.mOnMetadataChangedCalled);
- assertTrue(controllerCallback.mOnQueueChangedCalled);
- assertTrue(controllerCallback.mOnQueueTitleChangedCalled);
- List<QueueItem> queue = mControllerCompat.getQueue();
- assertNotNull(queue);
- assertEquals(testPlaylist.size(), queue.size());
- for (int i = 0; i < testPlaylist.size(); i++) {
- assertEquals(testPlaylist.get(i).getMediaId(),
- queue.get(i).getDescription().getMediaId());
- }
- assertEquals(testPlaylistTitle, controllerCallback.mTitle);
- }
-
- @Test
- public void testUpdatePlayer_playbackTypeChangedToRemote() throws Exception {
- final int controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
- final int maxVolume = 25;
- final int currentVolume = 10;
-
- final CountDownLatch latch = new CountDownLatch(1);
- final MediaControllerCompat.Callback controllerCallback =
- new MediaControllerCompat.Callback() {
- @Override
- public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
- info.getPlaybackType());
- assertEquals(controlType, info.getVolumeControl());
- assertEquals(maxVolume, info.getMaxVolume(), 0.0f);
- latch.countDown();
- }
- };
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setVolumeControlType(controlType)
- .setMaxVolume(maxVolume)
- .setCurrentVolume(currentVolume)
- .build();
- mSession.updatePlayer(playerConfig);
- assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
- MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
- info.getPlaybackType());
- assertEquals(controlType, info.getVolumeControl());
- assertEquals(maxVolume, info.getMaxVolume());
- assertEquals(currentVolume, info.getCurrentVolume());
- }
-
- @Test
- public void testUpdatePlayer_playbackTypeChangedToLocal() throws Exception {
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setVolumeControlType(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE)
- .setMaxVolume(10)
- .setCurrentVolume(1)
- .build();
- mSession.updatePlayer(playerConfig);
-
- final int legacyStream = AudioManager.STREAM_RING;
- final AudioAttributesCompat attrs = new AudioAttributesCompat.Builder()
- .setLegacyStreamType(legacyStream).build();
-
- final CountDownLatch latch = new CountDownLatch(1);
- final MediaControllerCompat.Callback controllerCallback =
- new MediaControllerCompat.Callback() {
- @Override
- public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
- if (MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL
- == info.getPlaybackType()
- && legacyStream == info.getAudioStream()) {
- latch.countDown();
- }
- }
- };
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- Bundle playerConfigToUpdate = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setPlaybackSpeed(1)
- .setAudioAttributes(attrs)
- .build();
- mSession.updatePlayer(playerConfigToUpdate);
-
- // In API 21 and 22, onAudioInfoChanged is not called when playback is changed to local.
- if (Build.VERSION.SDK_INT == 21 || Build.VERSION.SDK_INT == 22) {
- Thread.sleep(TIMEOUT_MS);
- } else {
- assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- }
-
- MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
- info.getPlaybackType());
- assertEquals(legacyStream, info.getAudioStream());
- }
-
- @Test
- public void testUpdatePlayer_playbackTypeNotChanged_local() throws Exception {
- final int legacyStream = AudioManager.STREAM_RING;
- final AudioAttributesCompat attrs = new AudioAttributesCompat.Builder()
- .setLegacyStreamType(legacyStream).build();
-
- final CountDownLatch latch = new CountDownLatch(1);
- final MediaControllerCompat.Callback controllerCallback =
- new MediaControllerCompat.Callback() {
- @Override
- public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
- info.getPlaybackType());
- assertEquals(legacyStream, info.getAudioStream());
- latch.countDown();
- }
- };
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setPlaybackSpeed(1)
- .setAudioAttributes(attrs)
- .build();
- mSession.updatePlayer(playerConfig);
-
- // In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
- if (Build.VERSION.SDK_INT >= 21) {
- Thread.sleep(TIMEOUT_MS);
- } else {
- assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- }
-
- MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
- info.getPlaybackType());
- assertEquals(legacyStream, info.getAudioStream());
- }
-
- @Test
- public void testUpdatePlayer_playbackTypeNotChanged_remote() throws Exception {
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setVolumeControlType(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE)
- .setMaxVolume(10)
- .setCurrentVolume(1)
- .build();
- mSession.updatePlayer(playerConfig);
-
- final int controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
- final int maxVolume = 25;
- final int currentVolume = 10;
-
- final CountDownLatch latch = new CountDownLatch(1);
- final MediaControllerCompat.Callback controllerCallback =
- new MediaControllerCompat.Callback() {
- @Override
- public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
- if (MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE
- == info.getPlaybackType()
- && controlType == info.getVolumeControl()
- && maxVolume == info.getMaxVolume()
- && currentVolume == info.getCurrentVolume()) {
- latch.countDown();
- }
- }
- };
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- Bundle playerConfigToUpdate = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setVolumeControlType(controlType)
- .setMaxVolume(maxVolume)
- .setCurrentVolume(currentVolume)
- .build();
- mSession.updatePlayer(playerConfigToUpdate);
-
- // In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
- if (Build.VERSION.SDK_INT >= 21) {
- Thread.sleep(TIMEOUT_MS);
- } else {
- assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
- }
-
- MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
- assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
- info.getPlaybackType());
- assertEquals(controlType, info.getVolumeControl());
- assertEquals(maxVolume, info.getMaxVolume(), 0.0f);
- assertEquals(currentVolume, info.getCurrentVolume(), 0.0f);
- }
-
- @Test
- public void testPlayerStateChange() throws Exception {
- final int targetState = SessionPlayer.PLAYER_STATE_PLAYING;
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().notifyPlayerStateChanged(targetState);
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnSessionReadyCalled);
- assertTrue(controllerCallback.mOnPlaybackStateChangedCalled);
- assertEquals(targetState,
- MediaUtils.convertToPlayerState(controllerCallback.mPlaybackState));
- }
-
- @Test
- public void testPlaybackSpeedChange() throws Exception {
- final float speed = 1.5f;
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setPlaybackSpeed(speed);
- mSession.getMockPlayer().notifyPlaybackSpeedChanged(speed);
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnPlaybackStateChangedCalled);
- assertEquals(speed, controllerCallback.mPlaybackState.getPlaybackSpeed(), 0.0f);
- }
-
- @Test
- public void testBufferingStateChange() throws Exception {
- final List<MediaItem> testPlaylist = MediaTestUtils.createFileMediaItems(3);
- final int testItemIndex = 0;
- final int testBufferingState = SessionPlayer.BUFFERING_STATE_BUFFERING_AND_PLAYABLE;
- final long testBufferingPosition = 500;
- mSession.getMockPlayer().setPlaylistWithDummyItem(testPlaylist);
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setBufferedPosition(testBufferingPosition);
- mSession.getMockPlayer().notifyBufferingStateChanged(testItemIndex, testBufferingState);
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnPlaybackStateChangedCalled);
- assertEquals(testBufferingPosition,
- controllerCallback.mPlaybackState.getBufferedPosition(), 0.0f);
- }
-
- @Test
- public void testSeekComplete() throws Exception {
- final long testSeekPosition = 1300;
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setCurrentPosition(testSeekPosition);
- mSession.getMockPlayer().setPlayerState(SessionPlayer.PLAYER_STATE_PAUSED);
- mSession.getMockPlayer().notifySeekCompleted(testSeekPosition);
- assertTrue(controllerCallback.await(MediaSessionTestBase.TIMEOUT_MS));
- assertTrue(controllerCallback.mOnPlaybackStateChangedCalled);
- assertEquals(testSeekPosition, controllerCallback.mPlaybackState.getPosition());
- }
-
- @Test
- public void testCurrentMediaItemChange() throws Exception {
- String displayTitle = "displayTitle";
- MediaMetadata metadata = new MediaMetadata.Builder()
- .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, displayTitle).build();
- MediaItem currentMediaItem = new FileMediaItem.Builder(ParcelFileDescriptor.adoptFd(-1))
- .setMetadata(metadata)
- .build();
-
- List<MediaItem> playlist = MediaTestUtils.createFileMediaItems(5);
- final int testItemIndex = 3;
- playlist.set(testItemIndex, currentMediaItem);
- mSession.getMockPlayer().setPlaylistWithDummyItem(playlist);
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setCurrentMediaItem(testItemIndex);
- mSession.getMockPlayer().notifyCurrentMediaItemChanged(testItemIndex);
-
- assertTrue(controllerCallback.await(MediaSessionTestBase.TIMEOUT_MS));
- assertTrue(controllerCallback.mOnMetadataChangedCalled);
- assertEquals(displayTitle, controllerCallback.mMediaMetadata
- .getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE));
- }
-
- @Test
- public void testPlaylistAndPlaylistMetadataChange() throws Exception {
- final List<MediaItem> playlist = MediaTestUtils.createFileMediaItems(5);
- final String playlistTitle = "playlistTitle";
- MediaMetadata playlistMetadata = new MediaMetadata.Builder()
- .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(2);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setPlaylist(playlist);
- mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
- mSession.getMockPlayer().notifyPlaylistChanged();
-
- assertTrue(controllerCallback.await(MediaSessionTestBase.TIMEOUT_MS));
- assertTrue(controllerCallback.mOnQueueChangedCalled);
- assertTrue(controllerCallback.mOnQueueTitleChangedCalled);
-
- List<QueueItem> queue = mControllerCompat.getQueue();
- assertNotNull(queue);
- assertEquals(playlist.size(), queue.size());
- for (int i = 0; i < playlist.size(); i++) {
- assertEquals(playlist.get(i).getMediaId(), queue.get(i).getDescription().getMediaId());
- }
- assertEquals(playlistTitle, controllerCallback.mTitle);
- }
-
- @Test
- public void testPlaylistAndPlaylistMetadataChange_longList() throws Exception {
- final String playlistTitle = "playlistTitle";
- MediaMetadata playlistMetadata = new MediaMetadata.Builder()
- .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(2);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- final int listSize = 5000;
- mSession.getMockPlayer().createAndSetDummyPlaylist(listSize);
- mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
- mSession.getMockPlayer().notifyPlaylistChanged();
-
- assertTrue(controllerCallback.await(TimeUnit.SECONDS.toMillis(3)));
- assertTrue(controllerCallback.mOnQueueChangedCalled);
- assertTrue(controllerCallback.mOnQueueTitleChangedCalled);
-
- List<QueueItem> queue = mControllerCompat.getQueue();
- assertNotNull(queue);
-
- if (Build.VERSION.SDK_INT >= 21) {
- assertEquals(listSize, queue.size());
- } else {
- // Below API 21, only the initial part of the playlist is sent to the
- // MediaControllerCompat when the list is too long.
- assertTrue(queue.size() < listSize);
- }
- for (int i = 0; i < queue.size(); i++) {
- assertEquals(TestUtils.getMediaIdInDummyList(i),
- queue.get(i).getDescription().getMediaId());
- }
- assertEquals(playlistTitle, controllerCallback.mTitle);
- }
-
- @Test
- public void testPlaylistMetadataChange() throws Exception {
- final String playlistTitle = "playlistTitle";
- MediaMetadata playlistMetadata = new MediaMetadata.Builder()
- .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
-
- final MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
- mSession.getMockPlayer().notifyPlaylistMetadataChanged();
-
- assertTrue(controllerCallback.await(MediaSessionTestBase.TIMEOUT_MS));
- assertTrue(controllerCallback.mOnQueueTitleChangedCalled);
- assertEquals(playlistTitle, controllerCallback.mTitle);
- }
-
- @Test
- public void onAudioInfoChanged_isCalled_byVolumeChange() throws Exception {
- if (!MediaTestUtils.isServiceToT()) {
- // media2-session 1.0.x didn't notify volume changes of RemoteSessionPlayer
- // (b/155059866).
- return;
- }
-
- Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
- .setVolumeControlType(RemoteSessionPlayer.VOLUME_CONTROL_ABSOLUTE)
- .setMaxVolume(10)
- .setCurrentVolume(1)
- .build();
- mSession.updatePlayer(playerConfig);
-
- MediaControllerCallback controllerCallback = new MediaControllerCallback();
- controllerCallback.reset(1);
- mControllerCompat.registerCallback(controllerCallback, sHandler);
-
- int targetVolume = 3;
- mSession.getMockPlayer().notifyVolumeChanged(targetVolume);
- assertTrue(controllerCallback.await(TIMEOUT_MS));
- assertTrue(controllerCallback.mOnAudioInfoChangedCalled);
- assertEquals(targetVolume, controllerCallback.mPlaybackInfo.getCurrentVolume());
- }
-
- private class MediaControllerCallback extends MediaControllerCompat.Callback {
- private CountDownLatch mLatch;
-
- private boolean mOnPlaybackStateChangedCalled;
- private boolean mOnMetadataChangedCalled;
- private boolean mOnQueueChangedCalled;
- private boolean mOnQueueTitleChangedCalled;
- private boolean mOnExtraChangedCalled;
- private boolean mOnAudioInfoChangedCalled;
- private boolean mOnSessionDestroyedCalled;
- private boolean mOnSessionEventCalled;
- private boolean mOnCaptioningEnabledChangedCalled;
- private boolean mOnRepeatModeChangedCalled;
- private boolean mOnShuffleModeChangedCalled;
- private boolean mOnSessionReadyCalled;
-
- private PlaybackStateCompat mPlaybackState;
- private MediaMetadataCompat mMediaMetadata;
- private List<QueueItem> mQueue;
- private CharSequence mTitle;
- private String mEvent;
- private Bundle mExtras;
- private MediaControllerCompat.PlaybackInfo mPlaybackInfo;
- private boolean mCaptioningEnabled;
- private int mRepeatMode;
- private int mShuffleMode;
-
- public void reset(int count) {
- mLatch = new CountDownLatch(count);
- mOnPlaybackStateChangedCalled = false;
- mOnMetadataChangedCalled = false;
- mOnQueueChangedCalled = false;
- mOnQueueTitleChangedCalled = false;
- mOnExtraChangedCalled = false;
- mOnAudioInfoChangedCalled = false;
- mOnSessionDestroyedCalled = false;
- mOnSessionEventCalled = false;
- mOnRepeatModeChangedCalled = false;
- mOnShuffleModeChangedCalled = false;
-
- mPlaybackState = null;
- mMediaMetadata = null;
- mQueue = null;
- mTitle = null;
- mExtras = null;
- mPlaybackInfo = null;
- mCaptioningEnabled = false;
- mRepeatMode = PlaybackStateCompat.REPEAT_MODE_NONE;
- mShuffleMode = PlaybackStateCompat.SHUFFLE_MODE_NONE;
- }
-
- public boolean await(long timeoutMs) {
- try {
- return mLatch.await(timeoutMs, TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- return false;
- }
- }
-
- @Override
- public void onPlaybackStateChanged(PlaybackStateCompat state) {
- mOnPlaybackStateChangedCalled = true;
- mPlaybackState = state;
- mLatch.countDown();
- }
-
- @Override
- public void onMetadataChanged(MediaMetadataCompat metadata) {
- mOnMetadataChangedCalled = true;
- mMediaMetadata = metadata;
- mLatch.countDown();
- }
-
- @Override
- public void onQueueChanged(List<QueueItem> queue) {
- mOnQueueChangedCalled = true;
- mQueue = queue;
- mLatch.countDown();
- }
-
- @Override
- public void onQueueTitleChanged(CharSequence title) {
- mOnQueueTitleChangedCalled = true;
- mTitle = title;
- mLatch.countDown();
- }
-
- @Override
- public void onExtrasChanged(Bundle extras) {
- mOnExtraChangedCalled = true;
- mExtras = extras;
- mLatch.countDown();
- }
-
- @Override
- public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
- mOnAudioInfoChangedCalled = true;
- mPlaybackInfo = info;
- mLatch.countDown();
- }
-
- @Override
- public void onSessionDestroyed() {
- mOnSessionDestroyedCalled = true;
- mLatch.countDown();
- }
-
- @Override
- public void onSessionEvent(String event, Bundle extras) {
- mOnSessionEventCalled = true;
- mEvent = event;
- mExtras = (Bundle) extras.clone();
- mLatch.countDown();
- }
-
- @Override
- public void onCaptioningEnabledChanged(boolean enabled) {
- mOnCaptioningEnabledChangedCalled = true;
- mCaptioningEnabled = enabled;
- mLatch.countDown();
- }
-
- @Override
- public void onRepeatModeChanged(int repeatMode) {
- mOnRepeatModeChangedCalled = true;
- mRepeatMode = repeatMode;
- mLatch.countDown();
- }
-
- @Override
- public void onShuffleModeChanged(int shuffleMode) {
- mOnShuffleModeChangedCalled = true;
- mShuffleMode = shuffleMode;
- mLatch.countDown();
- }
-
- @Override
- public void onSessionReady() {
- mOnSessionReadyCalled = true;
- }
- }
-}
diff --git a/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java
new file mode 100644
index 0000000..d482c8e
--- /dev/null
+++ b/media2/session/version-compat-tests/current/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java
@@ -0,0 +1,690 @@
+/*
+ * Copyright 2018 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 androidx.media2.test.client.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.media.AudioManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.support.v4.media.MediaMetadataCompat;
+import android.support.v4.media.session.MediaControllerCompat;
+import android.support.v4.media.session.MediaSessionCompat.QueueItem;
+import android.support.v4.media.session.PlaybackStateCompat;
+
+import androidx.media.AudioAttributesCompat;
+import androidx.media.VolumeProviderCompat;
+import androidx.media2.common.FileMediaItem;
+import androidx.media2.common.MediaItem;
+import androidx.media2.common.MediaMetadata;
+import androidx.media2.common.SessionPlayer;
+import androidx.media2.session.MediaSession;
+import androidx.media2.session.MediaUtils;
+import androidx.media2.session.RemoteSessionPlayer;
+import androidx.media2.test.client.MediaTestUtils;
+import androidx.media2.test.client.RemoteMediaSession;
+import androidx.media2.test.common.PollingCheck;
+import androidx.media2.test.common.TestUtils;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Tests for {@link MediaControllerCompat.Callback} with {@link MediaSession}.
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class MediaControllerCompatCallbackWithMediaSessionTest extends MediaSessionTestBase {
+ private static final String TAG = "MCCCallbackTestWithMS2";
+
+ private static final long TIMEOUT_MS = 1000L;
+ private static final float EPSILON = 1e-6f;
+
+ private RemoteMediaSession mSession;
+ private MediaControllerCompat mControllerCompat;
+
+ @Before
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ mSession = new RemoteMediaSession(TAG, mContext, null);
+ mControllerCompat = new MediaControllerCompat(mContext, mSession.getCompatToken());
+ }
+
+ @After
+ @Override
+ public void cleanUp() throws Exception {
+ super.cleanUp();
+ mSession.close();
+ }
+
+ @Test
+ public void repeatModeChange() throws Exception {
+ int testRepeatMode = SessionPlayer.REPEAT_MODE_GROUP;
+
+ CountDownLatch latch = new CountDownLatch(1);
+ AtomicInteger repeatModeRef = new AtomicInteger();
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onRepeatModeChanged(int repeatMode) {
+ repeatModeRef.set(repeatMode);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setRepeatMode(testRepeatMode);
+ mSession.getMockPlayer().notifyRepeatModeChanged();
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testRepeatMode, repeatModeRef.get());
+ assertEquals(testRepeatMode, mControllerCompat.getRepeatMode());
+ }
+
+ @Test
+ public void shuffleModeChange() throws Exception {
+ int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
+
+ CountDownLatch latch = new CountDownLatch(1);
+ AtomicInteger shuffleModeRef = new AtomicInteger();
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onShuffleModeChanged(int shuffleMode) {
+ shuffleModeRef.set(shuffleMode);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setShuffleMode(testShuffleMode);
+ mSession.getMockPlayer().notifyShuffleModeChanged();
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testShuffleMode, shuffleModeRef.get());
+ assertEquals(testShuffleMode, mControllerCompat.getShuffleMode());
+ }
+
+ @Test
+ public void close() throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onSessionDestroyed() {
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.close();
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ }
+
+ @Test
+ public void updatePlayer() throws Exception {
+ int testState = SessionPlayer.PLAYER_STATE_PLAYING;
+ int testBufferingPosition = 1500;
+ float testSpeed = 1.5f;
+ List<MediaItem> testPlaylist = MediaTestUtils.createFileMediaItems(3);
+ int testItemIndex = 0;
+ String testPlaylistTitle = "testPlaylistTitle";
+ MediaMetadata testPlaylistMetadata = new MediaMetadata.Builder()
+ .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, testPlaylistTitle).build();
+
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ AtomicReference<MediaMetadataCompat> metadataRef = new AtomicReference<>();
+ AtomicReference<CharSequence> queueTitleRef = new AtomicReference<>();
+ CountDownLatch latchForPlaybackState = new CountDownLatch(1);
+ CountDownLatch latchForMetadata = new CountDownLatch(1);
+ CountDownLatch latchForQueue = new CountDownLatch(2);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latchForPlaybackState.countDown();
+ }
+
+ @Override
+ public void onMetadataChanged(MediaMetadataCompat metadata) {
+ metadataRef.set(metadata);
+ latchForMetadata.countDown();
+ }
+
+ @Override
+ public void onQueueChanged(List<QueueItem> queue) {
+ latchForQueue.countDown();
+ }
+
+ @Override
+ public void onQueueTitleChanged(CharSequence title) {
+ queueTitleRef.set(title);
+ latchForQueue.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setPlayerState(testState)
+ .setBufferedPosition(testBufferingPosition)
+ .setPlaybackSpeed(testSpeed)
+ .setPlaylist(testPlaylist)
+ .setPlaylistMetadata(testPlaylistMetadata)
+ .setCurrentMediaItem(testPlaylist.get(testItemIndex))
+ .build();
+ mSession.updatePlayer(playerConfig);
+
+ assertTrue(latchForPlaybackState.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testState, MediaUtils.convertToPlayerState(playbackStateRef.get()));
+ assertEquals(testBufferingPosition, playbackStateRef.get().getBufferedPosition());
+ assertEquals(testSpeed, playbackStateRef.get().getPlaybackSpeed(), EPSILON);
+
+ assertTrue(latchForMetadata.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testPlaylist.get(testItemIndex).getMediaId(),
+ metadataRef.get().getString(MediaMetadata.METADATA_KEY_MEDIA_ID));
+
+ assertTrue(latchForQueue.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ List<QueueItem> queue = mControllerCompat.getQueue();
+ assertNotNull(queue);
+ assertEquals(testPlaylist.size(), queue.size());
+ for (int i = 0; i < testPlaylist.size(); i++) {
+ assertEquals(testPlaylist.get(i).getMediaId(),
+ queue.get(i).getDescription().getMediaId());
+ }
+ assertEquals(testPlaylistTitle, queueTitleRef.get().toString());
+ }
+
+ @Test
+ public void updatePlayer_playbackTypeChangedToRemote() throws Exception {
+ int controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
+ int maxVolume = 25;
+ int currentVolume = 10;
+
+ AtomicReference<MediaControllerCompat.PlaybackInfo> infoRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
+ infoRef.set(info);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setVolumeControlType(controlType)
+ .setMaxVolume(maxVolume)
+ .setCurrentVolume(currentVolume)
+ .build();
+ mSession.updatePlayer(playerConfig);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
+ infoRef.get().getPlaybackType());
+ assertEquals(controlType, infoRef.get().getVolumeControl());
+ assertEquals(maxVolume, infoRef.get().getMaxVolume());
+
+ MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
+ info.getPlaybackType());
+ assertEquals(controlType, info.getVolumeControl());
+ assertEquals(maxVolume, info.getMaxVolume());
+ assertEquals(currentVolume, info.getCurrentVolume());
+ }
+
+ @Test
+ public void updatePlayer_playbackTypeChangedToLocal() throws Exception {
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setVolumeControlType(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE)
+ .setMaxVolume(10)
+ .setCurrentVolume(1)
+ .build();
+ mSession.updatePlayer(playerConfig);
+
+ int legacyStream = AudioManager.STREAM_RING;
+ AudioAttributesCompat attrs = new AudioAttributesCompat.Builder()
+ .setLegacyStreamType(legacyStream).build();
+
+ AtomicReference<MediaControllerCompat.PlaybackInfo> infoRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
+ infoRef.set(info);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ Bundle playerConfigToUpdate = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setPlaybackSpeed(1)
+ .setAudioAttributes(attrs)
+ .build();
+ mSession.updatePlayer(playerConfigToUpdate);
+
+ // In API 21 and 22, onAudioInfoChanged is not called when playback is changed to local.
+ if (Build.VERSION.SDK_INT == 21 || Build.VERSION.SDK_INT == 22) {
+ PollingCheck.waitFor(TIMEOUT_MS,
+ () -> mControllerCompat.getPlaybackInfo().getPlaybackType()
+ == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL);
+ } else {
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
+ infoRef.get().getPlaybackType());
+ assertEquals(legacyStream, infoRef.get().getAudioAttributes().getLegacyStreamType());
+ }
+
+ MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
+ info.getPlaybackType());
+ assertEquals(legacyStream, info.getAudioAttributes().getLegacyStreamType());
+ }
+
+ @Test
+ public void updatePlayer_playbackTypeNotChanged_local() throws Exception {
+ int legacyStream = AudioManager.STREAM_RING;
+ AudioAttributesCompat attrs = new AudioAttributesCompat.Builder()
+ .setLegacyStreamType(legacyStream).build();
+
+ AtomicReference<MediaControllerCompat.PlaybackInfo> infoRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
+ infoRef.set(info);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setPlaybackSpeed(1)
+ .setAudioAttributes(attrs)
+ .build();
+ mSession.updatePlayer(playerConfig);
+
+ // In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
+ if (Build.VERSION.SDK_INT >= 21) {
+ PollingCheck.waitFor(TIMEOUT_MS,
+ () -> mControllerCompat.getPlaybackInfo().getPlaybackType()
+ == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL);
+ } else {
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
+ infoRef.get().getPlaybackType());
+ assertEquals(legacyStream, infoRef.get().getAudioAttributes().getLegacyStreamType());
+ }
+
+ MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_LOCAL,
+ info.getPlaybackType());
+ assertEquals(legacyStream, info.getAudioAttributes().getLegacyStreamType());
+ }
+
+ @Test
+ public void updatePlayer_playbackTypeNotChanged_remote() throws Exception {
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setVolumeControlType(VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE)
+ .setMaxVolume(10)
+ .setCurrentVolume(1)
+ .build();
+ mSession.updatePlayer(playerConfig);
+
+ int controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
+ int maxVolume = 25;
+ int currentVolume = 10;
+
+ AtomicReference<MediaControllerCompat.PlaybackInfo> infoRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
+ infoRef.set(info);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ Bundle playerConfigToUpdate = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setVolumeControlType(controlType)
+ .setMaxVolume(maxVolume)
+ .setCurrentVolume(currentVolume)
+ .build();
+ mSession.updatePlayer(playerConfigToUpdate);
+
+ // In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
+ if (Build.VERSION.SDK_INT >= 21) {
+ PollingCheck.waitFor(TIMEOUT_MS,
+ () -> mControllerCompat.getPlaybackInfo().getPlaybackType()
+ == MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE);
+ } else {
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
+ infoRef.get().getPlaybackType());
+ assertEquals(controlType, infoRef.get().getVolumeControl());
+ assertEquals(maxVolume, infoRef.get().getMaxVolume());
+ assertEquals(currentVolume, infoRef.get().getCurrentVolume());
+ }
+
+ MediaControllerCompat.PlaybackInfo info = mControllerCompat.getPlaybackInfo();
+ assertEquals(MediaControllerCompat.PlaybackInfo.PLAYBACK_TYPE_REMOTE,
+ info.getPlaybackType());
+ assertEquals(controlType, info.getVolumeControl());
+ assertEquals(maxVolume, info.getMaxVolume());
+ assertEquals(currentVolume, info.getCurrentVolume());
+ }
+
+ @Test
+ public void playerStateChange() throws Exception {
+ int targetState = SessionPlayer.PLAYER_STATE_PLAYING;
+
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(2);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onSessionReady() {
+ latch.countDown();
+ }
+
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().notifyPlayerStateChanged(targetState);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(targetState, MediaUtils.convertToPlayerState(playbackStateRef.get()));
+ assertEquals(targetState,
+ MediaUtils.convertToPlayerState(mControllerCompat.getPlaybackState()));
+ }
+
+ @Test
+ public void playbackSpeedChange() throws Exception {
+ float speed = 1.5f;
+
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setPlaybackSpeed(speed);
+ mSession.getMockPlayer().notifyPlaybackSpeedChanged(speed);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(speed, playbackStateRef.get().getPlaybackSpeed(), EPSILON);
+ assertEquals(speed, mControllerCompat.getPlaybackState().getPlaybackSpeed(), EPSILON);
+ }
+
+ @Test
+ public void bufferingStateChange() throws Exception {
+ List<MediaItem> testPlaylist = MediaTestUtils.createFileMediaItems(3);
+ int testItemIndex = 0;
+ int testBufferingState = SessionPlayer.BUFFERING_STATE_BUFFERING_AND_PLAYABLE;
+ long testBufferingPosition = 500;
+ mSession.getMockPlayer().setPlaylistWithDummyItem(testPlaylist);
+
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setBufferedPosition(testBufferingPosition);
+ mSession.getMockPlayer().notifyBufferingStateChanged(testItemIndex, testBufferingState);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testBufferingPosition, playbackStateRef.get().getBufferedPosition());
+ assertEquals(testBufferingPosition,
+ mControllerCompat.getPlaybackState().getBufferedPosition());
+ }
+
+ @Test
+ public void seekComplete() throws Exception {
+ long testSeekPosition = 1300;
+
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setCurrentPosition(testSeekPosition);
+ mSession.getMockPlayer().setPlayerState(SessionPlayer.PLAYER_STATE_PAUSED);
+ mSession.getMockPlayer().notifySeekCompleted(testSeekPosition);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testSeekPosition, playbackStateRef.get().getPosition());
+ assertEquals(testSeekPosition, mControllerCompat.getPlaybackState().getPosition());
+ }
+
+ @Test
+ public void currentMediaItemChange() throws Exception {
+ int testItemIndex = 3;
+ long testPosition = 1234;
+ String displayTitle = "displayTitle";
+ MediaMetadata metadata = new MediaMetadata.Builder()
+ .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, displayTitle).build();
+ MediaItem currentMediaItem = new FileMediaItem.Builder(ParcelFileDescriptor.adoptFd(-1))
+ .setMetadata(metadata)
+ .build();
+
+ List<MediaItem> playlist = MediaTestUtils.createFileMediaItems(5);
+ playlist.set(testItemIndex, currentMediaItem);
+ mSession.getMockPlayer().setPlaylistWithDummyItem(playlist);
+
+ AtomicReference<MediaMetadataCompat> metadataRef = new AtomicReference<>();
+ AtomicReference<PlaybackStateCompat> playbackStateRef = new AtomicReference<>();
+ CountDownLatch latchForMetadata = new CountDownLatch(1);
+ CountDownLatch latchForPlaybackState = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onMetadataChanged(MediaMetadataCompat metadata) {
+ metadataRef.set(metadata);
+ latchForMetadata.countDown();
+ }
+
+ @Override
+ public void onPlaybackStateChanged(PlaybackStateCompat state) {
+ playbackStateRef.set(state);
+ latchForPlaybackState.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setCurrentMediaItem(testItemIndex);
+ mSession.getMockPlayer().setCurrentPosition(testPosition);
+ mSession.getMockPlayer().notifyCurrentMediaItemChanged(testItemIndex);
+
+ assertTrue(latchForMetadata.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(displayTitle,
+ metadataRef.get().getString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE));
+ assertEquals(displayTitle,
+ mControllerCompat.getMetadata().getString(
+ MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE));
+ if (MediaTestUtils.isServiceToT()) {
+ // TODO(b/156594425): Move these assertions out of this condition once the
+ // previous session is updated to have the fix of b/159147455.
+ assertTrue(latchForPlaybackState.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(testPosition, playbackStateRef.get().getPosition());
+ assertEquals(testPosition, mControllerCompat.getPlaybackState().getPosition());
+ }
+ }
+
+ @Test
+ public void playlistAndPlaylistMetadataChange() throws Exception {
+ List<MediaItem> playlist = MediaTestUtils.createFileMediaItems(5);
+ String playlistTitle = "playlistTitle";
+ MediaMetadata playlistMetadata = new MediaMetadata.Builder()
+ .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
+
+ AtomicReference<CharSequence> queueTitleRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(2);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onQueueChanged(List<QueueItem> queue) {
+ latch.countDown();
+ }
+
+ @Override
+ public void onQueueTitleChanged(CharSequence title) {
+ queueTitleRef.set(title);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setPlaylist(playlist);
+ mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
+ mSession.getMockPlayer().notifyPlaylistChanged();
+
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+ List<QueueItem> queue = mControllerCompat.getQueue();
+ assertNotNull(queue);
+ assertEquals(playlist.size(), queue.size());
+ for (int i = 0; i < playlist.size(); i++) {
+ assertEquals(playlist.get(i).getMediaId(), queue.get(i).getDescription().getMediaId());
+ }
+ assertEquals(playlistTitle, queueTitleRef.get().toString());
+ }
+
+ @Test
+ public void playlistAndPlaylistMetadataChange_longList() throws Exception {
+ String playlistTitle = "playlistTitle";
+ MediaMetadata playlistMetadata = new MediaMetadata.Builder()
+ .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
+
+ AtomicReference<CharSequence> queueTitleRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(2);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onQueueChanged(List<QueueItem> queue) {
+ latch.countDown();
+ }
+
+ @Override
+ public void onQueueTitleChanged(CharSequence title) {
+ queueTitleRef.set(title);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ int listSize = 5000;
+ mSession.getMockPlayer().createAndSetDummyPlaylist(listSize);
+ mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
+ mSession.getMockPlayer().notifyPlaylistChanged();
+
+ assertTrue(latch.await(3, TimeUnit.SECONDS));
+
+ List<QueueItem> queue = mControllerCompat.getQueue();
+ assertNotNull(queue);
+
+ if (Build.VERSION.SDK_INT >= 21) {
+ assertEquals(listSize, queue.size());
+ } else {
+ // Below API 21, only the initial part of the playlist is sent to the
+ // MediaControllerCompat when the list is too long.
+ assertTrue(queue.size() < listSize);
+ }
+ for (int i = 0; i < queue.size(); i++) {
+ assertEquals(TestUtils.getMediaIdInDummyList(i),
+ queue.get(i).getDescription().getMediaId());
+ }
+ assertEquals(playlistTitle, queueTitleRef.get().toString());
+ }
+
+ @Test
+ public void playlistMetadataChange() throws Exception {
+ String playlistTitle = "playlistTitle";
+ MediaMetadata playlistMetadata = new MediaMetadata.Builder()
+ .putText(MediaMetadata.METADATA_KEY_DISPLAY_TITLE, playlistTitle).build();
+
+ AtomicReference<CharSequence> queueTitleRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onQueueTitleChanged(CharSequence title) {
+ queueTitleRef.set(title);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ mSession.getMockPlayer().setPlaylistMetadata(playlistMetadata);
+ mSession.getMockPlayer().notifyPlaylistMetadataChanged();
+
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(playlistTitle, queueTitleRef.get().toString());
+ }
+
+ @Test
+ public void onAudioInfoChanged_isCalled_byVolumeChange() throws Exception {
+ if (!MediaTestUtils.isServiceToT()) {
+ // TODO(b/156594425): Remove this condition once the previous session becomes to notify
+ // volume changes of RemoteSessionPlayer (b/155059866).
+ return;
+ }
+
+ Bundle playerConfig = new RemoteMediaSession.MockPlayerConfigBuilder()
+ .setVolumeControlType(RemoteSessionPlayer.VOLUME_CONTROL_ABSOLUTE)
+ .setMaxVolume(10)
+ .setCurrentVolume(1)
+ .build();
+ mSession.updatePlayer(playerConfig);
+
+ AtomicReference<MediaControllerCompat.PlaybackInfo> infoRef = new AtomicReference<>();
+ CountDownLatch latch = new CountDownLatch(1);
+ MediaControllerCompat.Callback callback = new MediaControllerCompat.Callback() {
+ @Override
+ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
+ infoRef.set(info);
+ latch.countDown();
+ }
+ };
+ mControllerCompat.registerCallback(callback, sHandler);
+
+ int targetVolume = 3;
+ mSession.getMockPlayer().notifyVolumeChanged(targetVolume);
+ assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ assertEquals(targetVolume, infoRef.get().getCurrentVolume());
+ }
+}
diff --git a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
similarity index 93%
rename from media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java
rename to media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
index e52d782..9e39b4b 100644
--- a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java
+++ b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
@@ -53,7 +53,7 @@
* Tests {@link MediaBrowser} with {@link MediaBrowserServiceCompat}.
*/
@LargeTest
-public class MediaBrowserServiceCompatCallbackTestWithMediaBrowser extends MediaSessionTestBase {
+public class MediaBrowserServiceCompatCallbackWithMediaBrowserTest extends MediaSessionTestBase {
private SessionToken mToken;
@Before
@@ -71,7 +71,7 @@
}
@Test
- public void testOnGetRootCalledByGetLibraryRoot() throws InterruptedException {
+ public void onGetRootCalledByGetLibraryRoot() throws InterruptedException {
final String testMediaId = "testOnGetRootCalledByGetLibraryRoot";
final Bundle testExtras = new Bundle();
testExtras.putString(testMediaId, testMediaId);
@@ -100,7 +100,7 @@
}
@Test
- public void testOnLoadItemCalledByGetItem() throws InterruptedException {
+ public void onLoadItemCalledByGetItem() throws InterruptedException {
final String testMediaId = "test_media_item";
final MediaItem testItem = createMediaItem(testMediaId);
final CountDownLatch latch = new CountDownLatch(1);
@@ -119,7 +119,7 @@
}
@Test
- public void testOnLoadChildrenWithoutOptionsCalledByGetChildren() throws InterruptedException {
+ public void onLoadChildrenWithoutOptionsCalledByGetChildren() throws InterruptedException {
final String testParentId = "test_media_parent";
final int testPage = 2;
final int testPageSize = 4;
@@ -140,7 +140,7 @@
}
@Test
- public void testOnLoadChildrenWithOptionsCalledByGetChildren() throws InterruptedException {
+ public void onLoadChildrenWithOptionsCalledByGetChildren() throws InterruptedException {
final String testParentId = "test_media_parent";
final int testPage = 2;
final int testPageSize = 4;
@@ -169,7 +169,7 @@
}
@Test
- public void testOnLoadChildrenCalledBySubscribe() throws InterruptedException {
+ public void onLoadChildrenCalledBySubscribe() throws InterruptedException {
final String testParentId = "testOnLoadChildrenCalledBySubscribe";
final LibraryParams testParams = MediaTestUtils.createLibraryParams();
final CountDownLatch subscribeLatch = new CountDownLatch(1);
@@ -189,7 +189,7 @@
}
@Test
- public void testOnSearchCalledBySearch() throws InterruptedException {
+ public void onSearchCalledBySearch() throws InterruptedException {
final String testQuery = "search_query";
final int testPage = 2;
final int testPageSize = 4;
@@ -214,7 +214,7 @@
}
@Test
- public void testOnSearchCalledByGetSearchResult() throws InterruptedException {
+ public void onSearchCalledByGetSearchResult() throws InterruptedException {
final String testQuery = "search_query";
final int testPage = 2;
final int testPageSize = 4;
diff --git a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
similarity index 94%
rename from media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java
rename to media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
index 4f1b9f7..40db1de 100644
--- a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java
+++ b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
@@ -81,7 +81,7 @@
*/
@RunWith(AndroidJUnit4.class)
@LargeTest
-public class MediaSessionCallbackTestWithMediaControllerCompat extends MediaSessionTestBase {
+public class MediaSessionCallbackWithMediaControllerCompatTest extends MediaSessionTestBase {
private static final String TAG = "MediaSessionCallbackTestWithMediaControllerCompat";
private static final long VOLUME_CHANGE_TIMEOUT_MS = 5000L;
@@ -153,7 +153,7 @@
}
@Test
- public void testDisconnectedAfterTimeout() throws InterruptedException {
+ public void disconnectedAfterTimeout() throws InterruptedException {
CountDownLatch disconnectedLatch = new CountDownLatch(1);
try (MediaSession session = new MediaSession.Builder(mContext, mPlayer)
.setId("testDisconnectedAfterTimeout")
@@ -186,7 +186,7 @@
}
@Test
- public void testConnectedCallbackAfterDisconnectedByTimeout() throws InterruptedException {
+ public void connectedCallbackAfterDisconnectedByTimeout() throws InterruptedException {
CountDownLatch connectedLatch = new CountDownLatch(1);
CountDownLatch disconnectedLatch = new CountDownLatch(1);
try (MediaSession session = new MediaSession.Builder(mContext, mPlayer)
@@ -227,7 +227,7 @@
}
@Test
- public void testPlay() {
+ public void play() {
mController.getTransportControls().play();
try {
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -238,7 +238,7 @@
}
@Test
- public void testPause() {
+ public void pause() {
mController.getTransportControls().pause();
try {
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -249,7 +249,7 @@
}
@Test
- public void testStop() {
+ public void stop() {
// MediaControllerCompat#stop() will call MediaSession#pause() and MediaSession#seekTo(0).
// Therefore, the latch's initial count is 2.
MockPlayer player = new MockPlayer(2);
@@ -268,7 +268,7 @@
}
@Test
- public void testPrepare() {
+ public void prepare() {
mController.getTransportControls().prepare();
try {
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -279,7 +279,7 @@
}
@Test
- public void testSeekTo() {
+ public void seekTo() {
final long seekPosition = 12125L;
mController.getTransportControls().seekTo(seekPosition);
try {
@@ -292,7 +292,7 @@
}
@Test
- public void testSetPlaybackSpeed() {
+ public void setPlaybackSpeed() {
final float testSpeed = 2.0f;
mController.getTransportControls().setPlaybackSpeed(testSpeed);
try {
@@ -305,7 +305,7 @@
}
@Test
- public void testAddQueueItem() throws InterruptedException {
+ public void addQueueItem() throws InterruptedException {
final int playlistSize = 10;
List<MediaItem> playlist = MediaTestUtils.createPlaylist(playlistSize);
@@ -327,7 +327,7 @@
}
@Test
- public void testAddQueueItemWithIndex() throws InterruptedException {
+ public void addQueueItemWithIndex() throws InterruptedException {
final int playlistSize = 10;
List<MediaItem> playlist = MediaTestUtils.createPlaylist(playlistSize);
@@ -351,7 +351,7 @@
}
@Test
- public void testRemoveQueueItem() throws InterruptedException {
+ public void removeQueueItem() throws InterruptedException {
final int playlistSize = 10;
List<MediaItem> playlist = MediaTestUtils.createPlaylist(playlistSize);
@@ -374,21 +374,21 @@
}
@Test
- public void testSkipToPrevious() throws InterruptedException {
+ public void skipToPrevious() throws InterruptedException {
mController.getTransportControls().skipToPrevious();
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
assertTrue(mPlayer.mSkipToPreviousItemCalled);
}
@Test
- public void testSkipToNext() throws InterruptedException {
+ public void skipToNext() throws InterruptedException {
mController.getTransportControls().skipToNext();
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
assertTrue(mPlayer.mSkipToNextItemCalled);
}
@Test
- public void testSkipToQueueItem() throws InterruptedException {
+ public void skipToQueueItem() throws InterruptedException {
final int playlistSize = 10;
List<MediaItem> playlist = MediaTestUtils.createPlaylist(playlistSize);
@@ -408,7 +408,7 @@
}
@Test
- public void testSetShuffleMode() throws InterruptedException {
+ public void setShuffleMode() throws InterruptedException {
final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
mController.getTransportControls().setShuffleMode(testShuffleMode);
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -418,7 +418,7 @@
}
@Test
- public void testSetRepeatMode() throws InterruptedException {
+ public void setRepeatMode() throws InterruptedException {
final int testRepeatMode = SessionPlayer.REPEAT_MODE_GROUP;
mController.getTransportControls().setRepeatMode(testRepeatMode);
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -428,7 +428,7 @@
}
@Test
- public void testSetVolumeTo() throws Exception {
+ public void setVolumeTo() throws Exception {
final int maxVolume = 100;
final int currentVolume = 23;
final int volumeControlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
@@ -445,7 +445,7 @@
}
@Test
- public void testAdjustVolume() throws Exception {
+ public void adjustVolume() throws Exception {
final int maxVolume = 100;
final int currentVolume = 23;
final int volumeControlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
@@ -462,7 +462,7 @@
}
@Test
- public void testSetVolumeWithLocalVolume() throws Exception {
+ public void setVolumeWithLocalVolume() throws Exception {
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
return;
@@ -504,7 +504,7 @@
}
@Test
- public void testAdjustVolumeWithLocalVolume() throws Exception {
+ public void adjustVolumeWithLocalVolume() throws Exception {
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
return;
@@ -547,7 +547,7 @@
}
@Test
- public void testSendCommand() throws InterruptedException {
+ public void sendCommand() throws InterruptedException {
// TODO(jaewan): Need to revisit with the permission.
final String testCommand = "test_command";
final Bundle testArgs = new Bundle();
@@ -586,7 +586,7 @@
}
@Test
- public void testControllerCallback_sessionRejects() throws Exception {
+ public void controllerCallback_sessionRejects() throws Exception {
final SessionCallback sessionCallback = new SessionCallback() {
@Override
public SessionCommandGroup onConnect(@NonNull MediaSession session,
@@ -611,7 +611,7 @@
}
@Test
- public void testFastForward() throws InterruptedException {
+ public void fastForward() throws InterruptedException {
final CountDownLatch latch = new CountDownLatch(1);
final SessionCallback callback = new SessionCallback() {
@Override
@@ -633,7 +633,7 @@
}
@Test
- public void testRewind() throws InterruptedException {
+ public void rewind() throws InterruptedException {
final CountDownLatch latch = new CountDownLatch(1);
final SessionCallback callback = new SessionCallback() {
@Override
@@ -654,7 +654,7 @@
}
@Test
- public void testPrepareFromMediaUri() throws InterruptedException {
+ public void prepareFromMediaUri() throws InterruptedException {
final Uri mediaId = Uri.parse("foo://bar");
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -683,7 +683,7 @@
}
@Test
- public void testPlayFromMediaUri() throws InterruptedException {
+ public void playFromMediaUri() throws InterruptedException {
final Uri request = Uri.parse("foo://bar");
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -712,7 +712,7 @@
}
@Test
- public void testPrepareFromMediaId() throws InterruptedException {
+ public void prepareFromMediaId() throws InterruptedException {
final String request = "media_id";
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -742,7 +742,7 @@
}
@Test
- public void testPlayFromMediaId() throws InterruptedException {
+ public void playFromMediaId() throws InterruptedException {
final String mediaId = "media_id";
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -772,7 +772,7 @@
}
@Test
- public void testPrepareFromSearch() throws InterruptedException {
+ public void prepareFromSearch() throws InterruptedException {
final String query = "test_query";
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -802,7 +802,7 @@
}
@Test
- public void testPlayFromSearch() throws InterruptedException {
+ public void playFromSearch() throws InterruptedException {
final String query = "test_query";
final Bundle bundle = new Bundle();
bundle.putString("key", "value");
@@ -832,7 +832,7 @@
}
@Test
- public void testSetRating() throws InterruptedException {
+ public void setRating() throws InterruptedException {
final int ratingType = RatingCompat.RATING_5_STARS;
final float ratingValue = 3.5f;
final RatingCompat rating = RatingCompat.newStarRating(ratingType, ratingValue);
@@ -864,7 +864,7 @@
}
@Test
- public void testOnCommandCallback() throws InterruptedException {
+ public void onCommandCallback() throws InterruptedException {
final ArrayList<SessionCommand> commands = new ArrayList<>();
final CountDownLatch latchForPause = new CountDownLatch(1);
final SessionCallback callback = new SessionCallback() {
@@ -917,7 +917,7 @@
*/
@Test
@LargeTest
- public void testDeadlock() throws InterruptedException {
+ public void deadlock() throws InterruptedException {
sHandler.postAndSync(new Runnable() {
@Override
public void run() {
@@ -995,7 +995,7 @@
@Test
@LargeTest
- public void testControllerAfterSessionIsGone() throws InterruptedException {
+ public void controllerAfterSessionIsGone() throws InterruptedException {
mSession.close();
testSessionCallbackIsNotCalled();
diff --git a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
similarity index 95%
rename from media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java
rename to media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
index c075943..3c3f329 100644
--- a/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java
+++ b/media2/session/version-compat-tests/current/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
@@ -70,7 +70,7 @@
*/
@RunWith(AndroidJUnit4.class)
@SmallTest
-public class MediaSessionCompatCallbackTestWithMediaController extends MediaSessionTestBase {
+public class MediaSessionCompatCallbackWithMediaControllerTest extends MediaSessionTestBase {
private static final String TAG = "MediaControllerTest";
// The maximum time to wait for an operation.
@@ -123,7 +123,7 @@
}
@Test
- public void testPlay() throws Exception {
+ public void play() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -133,7 +133,7 @@
}
@Test
- public void testPause() throws Exception {
+ public void pause() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -143,7 +143,7 @@
}
@Test
- public void testPrepare() throws Exception {
+ public void prepare() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -153,7 +153,7 @@
}
@Test
- public void testSeekTo() throws Exception {
+ public void seekTo() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -165,7 +165,7 @@
}
@Test
- public void testSetPlaybackSpeed() throws Exception {
+ public void setPlaybackSpeed() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -177,7 +177,7 @@
}
@Test
- public void testAddPlaylistItem() throws Exception {
+ public void addPlaylistItem() throws Exception {
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
final List<QueueItem> testQueue = MediaUtils.convertToQueueItemList(testList);
final String testMediaId = "testAddPlaylistItem";
@@ -197,7 +197,7 @@
}
@Test
- public void testRemovePlaylistItem() throws Exception {
+ public void removePlaylistItem() throws Exception {
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
final List<QueueItem> testQueue = MediaUtils.convertToQueueItemList(testList);
@@ -216,7 +216,7 @@
}
@Test
- public void testReplacePlaylistItem() throws Exception {
+ public void replacePlaylistItem() throws Exception {
final int testReplaceIndex = 1;
// replace = remove + add
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
@@ -242,7 +242,7 @@
}
@Test
- public void testSkipToPreviousItem() throws Exception {
+ public void skipToPreviousItem() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -252,7 +252,7 @@
}
@Test
- public void testSkipToNextItem() throws Exception {
+ public void skipToNextItem() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -262,7 +262,7 @@
}
@Test
- public void testSkipToPlaylistItem() throws Exception {
+ public void skipToPlaylistItem() throws Exception {
final int testSkipToIndex = 1;
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
final List<QueueItem> testQueue = MediaUtils.convertToQueueItemList(testList);
@@ -279,7 +279,7 @@
}
@Test
- public void testSetShuffleMode() throws Exception {
+ public void setShuffleMode() throws Exception {
final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
mSession.setShuffleMode(PlaybackStateCompat.SHUFFLE_MODE_NONE);
@@ -293,7 +293,7 @@
}
@Test
- public void testSetRepeatMode() throws Exception {
+ public void setRepeatMode() throws Exception {
final int testRepeatMode = SessionPlayer.REPEAT_MODE_ALL;
mSession.setRepeatMode(PlaybackStateCompat.REPEAT_MODE_NONE);
@@ -307,7 +307,7 @@
}
@Test
- public void testSetVolumeTo() throws Exception {
+ public void setVolumeTo() throws Exception {
final int maxVolume = 100;
final int currentVolume = 23;
final int volumeControlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
@@ -324,7 +324,7 @@
}
@Test
- public void testAdjustVolume() throws Exception {
+ public void adjustVolume() throws Exception {
final int maxVolume = 100;
final int currentVolume = 23;
final int volumeControlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
@@ -341,7 +341,7 @@
}
@Test
- public void testSetVolumeWithLocalVolume() throws Exception {
+ public void setVolumeWithLocalVolume() throws Exception {
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
return;
@@ -378,7 +378,7 @@
}
@Test
- public void testAdjustVolumeWithLocalVolume() throws Exception {
+ public void adjustVolumeWithLocalVolume() throws Exception {
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
return;
@@ -417,7 +417,7 @@
}
@Test
- public void testSendCustomCommand() throws Exception {
+ public void sendCustomCommand() throws Exception {
final String command = "test_custom_command";
final Bundle testArgs = new Bundle();
testArgs.putString("args", "test_args");
@@ -433,7 +433,7 @@
}
@Test
- public void testFastForward() throws Exception {
+ public void fastForward() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -443,7 +443,7 @@
}
@Test
- public void testRewind() throws Exception {
+ public void rewind() throws Exception {
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -453,7 +453,7 @@
}
@Test
- public void testSetRating() throws Exception {
+ public void setRating() throws Exception {
final float ratingValue = 3.5f;
final Rating rating2 = new StarRating(5, ratingValue);
final String mediaId = "media_id";
diff --git a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
similarity index 94%
rename from media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java
rename to media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
index 17a9dfd..1331de22 100644
--- a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaLibraryService.java
+++ b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaLibraryServiceTest.java
@@ -67,8 +67,8 @@
* Tests whether {@link MediaBrowserCompat} works well with {@link MediaLibraryService}.
*/
@LargeTest
-public class MediaBrowserCompatTestWithMediaLibraryService extends
- MediaBrowserCompatTestWithMediaSessionService {
+public class MediaBrowserCompatWithMediaLibraryServiceTest extends
+ MediaBrowserCompatWithMediaSessionServiceTest {
@Override
public void setUp() throws Exception {
super.setUp();
@@ -85,7 +85,7 @@
}
@Test
- public void testGetRoot() throws InterruptedException {
+ public void getRoot() throws InterruptedException {
prepareLooper();
// The MockMediaLibraryService gives MediaBrowserConstants.ROOT_ID as root ID, and
// MediaBrowserConstants.ROOT_EXTRAS as extras.
@@ -105,7 +105,7 @@
}
@Test
- public void testGetItem() throws InterruptedException {
+ public void getItem() throws InterruptedException {
prepareLooper();
final String mediaId = MEDIA_ID_GET_ITEM;
@@ -123,7 +123,7 @@
}
@Test
- public void testGetItem_nullResult() throws InterruptedException {
+ public void getItem_nullResult() throws InterruptedException {
prepareLooper();
final String mediaId = "random_media_id";
@@ -145,7 +145,7 @@
}
@Test
- public void testGetChildren() throws InterruptedException {
+ public void getChildren() throws InterruptedException {
prepareLooper();
final String testParentId = PARENT_ID;
@@ -174,7 +174,7 @@
}
@Test
- public void testGetChildren_withLongList() throws InterruptedException {
+ public void getChildren_withLongList() throws InterruptedException {
prepareLooper();
final String testParentId = PARENT_ID_LONG_LIST;
@@ -203,7 +203,7 @@
}
@Test
- public void testGetChildren_withPagination() throws InterruptedException {
+ public void getChildren_withPagination() throws InterruptedException {
prepareLooper();
final String testParentId = PARENT_ID;
final int page = 4;
@@ -246,7 +246,7 @@
}
@Test
- public void testGetChildren_emptyResult() throws InterruptedException {
+ public void getChildren_emptyResult() throws InterruptedException {
prepareLooper();
final String testParentId = PARENT_ID_NO_CHILDREN;
@@ -264,7 +264,7 @@
}
@Test
- public void testGetChildren_nullResult() throws InterruptedException {
+ public void getChildren_nullResult() throws InterruptedException {
prepareLooper();
final String testParentId = PARENT_ID_ERROR;
@@ -287,7 +287,7 @@
}
@Test
- public void testSearch() throws InterruptedException {
+ public void search() throws InterruptedException {
prepareLooper();
final String testQuery = SEARCH_QUERY;
final int page = 4;
@@ -326,7 +326,7 @@
}
@Test
- public void testSearch_withLongList() throws InterruptedException {
+ public void search_withLongList() throws InterruptedException {
prepareLooper();
final String testQuery = SEARCH_QUERY_LONG_LIST;
final int page = 0;
@@ -356,7 +356,7 @@
}
@Test
- public void testSearch_emptyResult() throws InterruptedException {
+ public void search_emptyResult() throws InterruptedException {
prepareLooper();
final String testQuery = SEARCH_QUERY_EMPTY_RESULT;
final Bundle testExtras = new Bundle();
@@ -378,7 +378,7 @@
}
@Test
- public void testSearch_error() throws InterruptedException {
+ public void search_error() throws InterruptedException {
prepareLooper();
final String testQuery = SEARCH_QUERY_ERROR;
final Bundle testExtras = new Bundle();
@@ -404,7 +404,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe() throws InterruptedException {
+ public void subscribe() throws InterruptedException {
// prepareLooper();
// final String testParentId = "testSubscribeId";
// final List<MediaItem> testList = TestUtils.createMediaItems(3);
@@ -450,7 +450,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe_withExtras() throws InterruptedException {
+ public void subscribe_withExtras() throws InterruptedException {
// prepareLooper();
// final String testParentId = "testSubscribe_withExtras";
// final Bundle testExtras = new Bundle();
@@ -502,7 +502,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribe_withPagination() throws InterruptedException {
+ public void subscribe_withPagination() throws InterruptedException {
// prepareLooper();
// final String testParentId = "testSubscribe_pagination_ID";
// final List<MediaItem> testList = TestUtils.createMediaItems(3);
@@ -569,7 +569,7 @@
@Ignore("TODO: Move this test to MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testSubscribeAndUnsubscribe() throws InterruptedException {
+ public void subscribeAndUnsubscribe() throws InterruptedException {
// prepareLooper();
// final String testParentId = "testUnsubscribe";
// final Bundle testExtras = new Bundle();
@@ -610,7 +610,7 @@
@Ignore("TODO: Split this test to here and MediaLibrarySessionLegacyCallbackTest.")
@Test
- public void testNotifyChildrenChanged() throws InterruptedException {
+ public void notifyChildrenChanged() throws InterruptedException {
// prepareLooper();
// final String testSubscribedParentId = "testNotifyChildrenChanged";
// final String testUnsubscribedParentId = "testNotifyChildrenChanged22";
@@ -664,7 +664,7 @@
// TODO: Add test for onCustomCommand() in MediaLibrarySessionLegacyCallbackTest.
@Test
- public void testCustomAction() throws InterruptedException {
+ public void customAction() throws InterruptedException {
prepareLooper();
final Bundle testArgs = new Bundle();
testArgs.putString("args_key", "args_value");
@@ -685,7 +685,7 @@
// TODO: Add test for onCustomCommand() in MediaLibrarySessionLegacyCallbackTest.
@Test
- public void testCustomAction_rejected() throws InterruptedException {
+ public void customAction_rejected() throws InterruptedException {
prepareLooper();
// This action will not be allowed by the library session.
final String testAction = "random_custom_action";
diff --git a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
similarity index 93%
rename from media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java
rename to media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
index 7c04129..94d3f10 100644
--- a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatTestWithMediaSessionService.java
+++ b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaBrowserCompatWithMediaSessionServiceTest.java
@@ -41,7 +41,7 @@
* Tests whether {@link MediaBrowserCompat} works well with {@link MediaSessionService}.
*/
@LargeTest
-public class MediaBrowserCompatTestWithMediaSessionService extends MediaSessionTestBase {
+public class MediaBrowserCompatWithMediaSessionServiceTest extends MediaSessionTestBase {
MediaBrowserCompat mBrowserCompat;
TestConnectionCallback mConnectionCallback;
@@ -79,7 +79,7 @@
}
@Test
- public void testConnect() throws InterruptedException {
+ public void connect() throws InterruptedException {
prepareLooper();
connectAndWait();
assertNotEquals(0, mConnectionCallback.mFailedLatch.getCount());
@@ -87,7 +87,7 @@
@Ignore
@Test
- public void testConnect_rejected() throws InterruptedException {
+ public void connect_rejected() throws InterruptedException {
prepareLooper();
// TODO: Connect the browser to the session service whose onConnect() returns null.
assertTrue(mConnectionCallback.mFailedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -95,7 +95,7 @@
}
@Test
- public void testGetSessionToken() throws Exception {
+ public void getSessionToken() throws Exception {
prepareLooper();
connectAndWait();
MediaControllerCompat controller = new MediaControllerCompat(mContext,
diff --git a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java
similarity index 95%
rename from media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java
rename to media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java
index 0532b3c..407d7ca 100644
--- a/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackTestWithMediaSession.java
+++ b/media2/session/version-compat-tests/previous/client/src/androidTest/java/androidx/media2/test/client/tests/MediaControllerCompatCallbackWithMediaSessionTest.java
@@ -57,7 +57,7 @@
*/
@RunWith(AndroidJUnit4.class)
@LargeTest
-public class MediaControllerCompatCallbackTestWithMediaSession extends MediaSessionTestBase {
+public class MediaControllerCompatCallbackWithMediaSessionTest extends MediaSessionTestBase {
private static final String TAG = "MCCCallbackTestWithMS2";
private static final long TIMEOUT_MS = 1000L;
@@ -81,7 +81,7 @@
}
@Test
- public void testRepeatModeChange() throws Exception {
+ public void repeatModeChange() throws Exception {
prepareLooper();
final int testRepeatMode = SessionPlayer.REPEAT_MODE_GROUP;
@@ -97,7 +97,7 @@
}
@Test
- public void testShuffleModeChange() throws Exception {
+ public void shuffleModeChange() throws Exception {
prepareLooper();
final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
@@ -113,7 +113,7 @@
}
@Test
- public void testClose() throws Exception {
+ public void close() throws Exception {
prepareLooper();
final MediaControllerCallback controllerCallback = new MediaControllerCallback();
controllerCallback.reset(1);
@@ -125,7 +125,7 @@
}
@Test
- public void testUpdatePlayer() throws Exception {
+ public void updatePlayer() throws Exception {
prepareLooper();
final int testState = SessionPlayer.PLAYER_STATE_PLAYING;
final int testBufferingPosition = 1500;
@@ -175,7 +175,7 @@
}
@Test
- public void testUpdatePlayer_playbackTypeChangedToRemote() throws Exception {
+ public void updatePlayer_playbackTypeChangedToRemote() throws Exception {
prepareLooper();
final int controlType = VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE;
final int maxVolume = 25;
@@ -209,7 +209,7 @@
}
@Test
- public void testUpdatePlayer_playbackTypeChangedToLocal() throws Exception {
+ public void updatePlayer_playbackTypeChangedToLocal() throws Exception {
prepareLooper();
Bundle prevPlayerConfig = RemoteMediaSession.createMockPlayerConnectorConfig(
VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE, 10 /* maxVolume */,
@@ -253,7 +253,7 @@
}
@Test
- public void testUpdatePlayer_playbackTypeNotChanged_local() throws Exception {
+ public void updatePlayer_playbackTypeNotChanged_local() throws Exception {
final int legacyStream = AudioManager.STREAM_RING;
final AudioAttributesCompat attrs = new AudioAttributesCompat.Builder()
.setLegacyStreamType(legacyStream).build();
@@ -290,7 +290,7 @@
}
@Test
- public void testUpdatePlayer_playbackTypeNotChanged_remote() throws Exception {
+ public void updatePlayer_playbackTypeNotChanged_remote() throws Exception {
prepareLooper();
Bundle prevPlayerConfig = RemoteMediaSession.createMockPlayerConnectorConfig(
VolumeProviderCompat.VOLUME_CONTROL_ABSOLUTE, 10 /* maxVolume */,
@@ -337,7 +337,7 @@
}
@Test
- public void testPlayerStateChange() throws Exception {
+ public void playerStateChange() throws Exception {
prepareLooper();
final int targetState = SessionPlayer.PLAYER_STATE_PLAYING;
@@ -354,7 +354,7 @@
}
@Test
- public void testPlaybackSpeedChange() throws Exception {
+ public void playbackSpeedChange() throws Exception {
prepareLooper();
final float speed = 1.5f;
@@ -370,7 +370,7 @@
}
@Test
- public void testBufferingStateChange() throws Exception {
+ public void bufferingStateChange() throws Exception {
prepareLooper();
final List<MediaItem> testPlaylist = MediaTestUtils.createFileMediaItems(3);
final int testItemIndex = 0;
@@ -391,7 +391,7 @@
}
@Test
- public void testSeekComplete() throws Exception {
+ public void seekComplete() throws Exception {
prepareLooper();
final long testSeekPosition = 1300;
@@ -408,7 +408,7 @@
}
@Test
- public void testCurrentMediaItemChange() throws Exception {
+ public void currentMediaItemChange() throws Exception {
prepareLooper();
String displayTitle = "displayTitle";
@@ -437,7 +437,7 @@
}
@Test
- public void testPlaylistAndPlaylistMetadataChange() throws Exception {
+ public void playlistAndPlaylistMetadataChange() throws Exception {
prepareLooper();
final List<MediaItem> playlist = MediaTestUtils.createFileMediaItems(5);
final String playlistTitle = "playlistTitle";
@@ -466,7 +466,7 @@
}
@Test
- public void testPlaylistAndPlaylistMetadataChange_longList() throws Exception {
+ public void playlistAndPlaylistMetadataChange_longList() throws Exception {
prepareLooper();
final String playlistTitle = "playlistTitle";
MediaMetadata playlistMetadata = new MediaMetadata.Builder()
@@ -503,7 +503,7 @@
}
@Test
- public void testPlaylistMetadataChange() throws Exception {
+ public void playlistMetadataChange() throws Exception {
prepareLooper();
final String playlistTitle = "playlistTitle";
MediaMetadata playlistMetadata = new MediaMetadata.Builder()
diff --git a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
similarity index 93%
rename from media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java
rename to media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
index c94f144..f0bd07f 100644
--- a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackTestWithMediaBrowser.java
+++ b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaBrowserServiceCompatCallbackWithMediaBrowserTest.java
@@ -53,7 +53,7 @@
* Tests {@link MediaBrowser} with {@link MediaBrowserServiceCompat}.
*/
@LargeTest
-public class MediaBrowserServiceCompatCallbackTestWithMediaBrowser extends MediaSessionTestBase {
+public class MediaBrowserServiceCompatCallbackWithMediaBrowserTest extends MediaSessionTestBase {
private SessionToken mToken;
@Before
@@ -71,7 +71,7 @@
}
@Test
- public void testOnGetRootCalledByGetLibraryRoot() throws InterruptedException {
+ public void onGetRootCalledByGetLibraryRoot() throws InterruptedException {
prepareLooper();
final String testMediaId = "testOnGetRootCalledByGetLibraryRoot";
final Bundle testExtras = new Bundle();
@@ -101,7 +101,7 @@
}
@Test
- public void testOnLoadItemCalledByGetItem() throws InterruptedException {
+ public void onLoadItemCalledByGetItem() throws InterruptedException {
prepareLooper();
final String testMediaId = "test_media_item";
final MediaItem testItem = createMediaItem(testMediaId);
@@ -121,7 +121,7 @@
}
@Test
- public void testOnLoadChildrenWithoutOptionsCalledByGetChildren() throws InterruptedException {
+ public void onLoadChildrenWithoutOptionsCalledByGetChildren() throws InterruptedException {
prepareLooper();
final String testParentId = "test_media_parent";
final int testPage = 2;
@@ -143,7 +143,7 @@
}
@Test
- public void testOnLoadChildrenWithOptionsCalledByGetChildren() throws InterruptedException {
+ public void onLoadChildrenWithOptionsCalledByGetChildren() throws InterruptedException {
prepareLooper();
final String testParentId = "test_media_parent";
final int testPage = 2;
@@ -173,7 +173,7 @@
}
@Test
- public void testOnLoadChildrenCalledBySubscribe() throws InterruptedException {
+ public void onLoadChildrenCalledBySubscribe() throws InterruptedException {
prepareLooper();
final String testParentId = "testOnLoadChildrenCalledBySubscribe";
final LibraryParams testParams = MediaTestUtils.createLibraryParams();
@@ -194,7 +194,7 @@
}
@Test
- public void testOnSearchCalledBySearch() throws InterruptedException {
+ public void onSearchCalledBySearch() throws InterruptedException {
prepareLooper();
final String testQuery = "search_query";
final int testPage = 2;
@@ -220,7 +220,7 @@
}
@Test
- public void testOnSearchCalledByGetSearchResult() throws InterruptedException {
+ public void onSearchCalledByGetSearchResult() throws InterruptedException {
prepareLooper();
final String testQuery = "search_query";
final int testPage = 2;
diff --git a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
similarity index 94%
rename from media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java
rename to media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
index 63c46aa..443d768 100644
--- a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackTestWithMediaControllerCompat.java
+++ b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCallbackWithMediaControllerCompatTest.java
@@ -80,7 +80,7 @@
*/
@RunWith(AndroidJUnit4.class)
@LargeTest
-public class MediaSessionCallbackTestWithMediaControllerCompat extends MediaSessionTestBase {
+public class MediaSessionCallbackWithMediaControllerCompatTest extends MediaSessionTestBase {
private static final String TAG = "MediaSessionCallbackTestWithMediaControllerCompat";
private static final long VOLUME_CHANGE_TIMEOUT_MS = 5000L;
@@ -145,7 +145,7 @@
}
@Test
- public void testPlay() {
+ public void play() {
prepareLooper();
mController.getTransportControls().play();
try {
@@ -157,7 +157,7 @@
}
@Test
- public void testPause() {
+ public void pause() {
prepareLooper();
mController.getTransportControls().pause();
try {
@@ -169,7 +169,7 @@
}
@Test
- public void testStop() {
+ public void stop() {
prepareLooper();
// MediaControllerCompat#stop() will call MediaSession#pause() and MediaSession#seekTo(0).
@@ -190,7 +190,7 @@
}
@Test
- public void testPrepare() {
+ public void prepare() {
prepareLooper();
mController.getTransportControls().prepare();
try {
@@ -202,7 +202,7 @@
}
@Test
- public void testSeekTo() {
+ public void seekTo() {
prepareLooper();
final long seekPosition = 12125L;
mController.getTransportControls().seekTo(seekPosition);
@@ -216,7 +216,7 @@
}
@Test
- public void testAddQueueItem() throws InterruptedException {
+ public void addQueueItem() throws InterruptedException {
prepareLooper();
final int playlistSize = 10;
@@ -239,7 +239,7 @@
}
@Test
- public void testAddQueueItemWithIndex() throws InterruptedException {
+ public void addQueueItemWithIndex() throws InterruptedException {
prepareLooper();
final int playlistSize = 10;
@@ -264,7 +264,7 @@
}
@Test
- public void testRemoveQueueItem() throws InterruptedException {
+ public void removeQueueItem() throws InterruptedException {
prepareLooper();
final int playlistSize = 10;
@@ -288,7 +288,7 @@
}
@Test
- public void testSkipToPrevious() throws InterruptedException {
+ public void skipToPrevious() throws InterruptedException {
prepareLooper();
mController.getTransportControls().skipToPrevious();
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -296,7 +296,7 @@
}
@Test
- public void testSkipToNext() throws InterruptedException {
+ public void skipToNext() throws InterruptedException {
prepareLooper();
mController.getTransportControls().skipToNext();
assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
@@ -304,7 +304,7 @@
}
@Test
- public void testSkipToQueueItem() throws InterruptedException {
+ public void skipToQueueItem() throws InterruptedException {
prepareLooper();
final int playlistSize = 10;
@@ -325,7 +325,7 @@
}
@Test
- public void testSetShuffleMode() throws InterruptedException {
+ public void setShuffleMode() throws InterruptedException {
prepareLooper();
final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
mController.getTransportControls().setShuffleMode(testShuffleMode);
@@ -336,7 +336,7 @@
}
@Test
- public void testSetRepeatMode() throws InterruptedException {
+ public void setRepeatMode() throws InterruptedException {
prepareLooper();
final int testRepeatMode = SessionPlayer.REPEAT_MODE_GROUP;
mController.getTransportControls().setRepeatMode(testRepeatMode);
@@ -347,7 +347,7 @@
}
@Test
- public void testSetVolumeTo() throws Exception {
+ public void setVolumeTo() throws Exception {
prepareLooper();
final int maxVolume = 100;
final int currentVolume = 23;
@@ -365,7 +365,7 @@
}
@Test
- public void testAdjustVolume() throws Exception {
+ public void adjustVolume() throws Exception {
prepareLooper();
final int maxVolume = 100;
final int currentVolume = 23;
@@ -383,7 +383,7 @@
}
@Test
- public void testSetVolumeWithLocalVolume() throws Exception {
+ public void setVolumeWithLocalVolume() throws Exception {
prepareLooper();
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
@@ -426,7 +426,7 @@
}
@Test
- public void testAdjustVolumeWithLocalVolume() throws Exception {
+ public void adjustVolumeWithLocalVolume() throws Exception {
prepareLooper();
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
@@ -470,7 +470,7 @@
}
@Test
- public void testSendCommand() throws InterruptedException {
+ public void sendCommand() throws InterruptedException {
prepareLooper();
// TODO(jaewan): Need to revisit with the permission.
final String testCommand = "test_command";
@@ -508,7 +508,7 @@
}
@Test
- public void testControllerCallback_sessionRejects() throws Exception {
+ public void controllerCallback_sessionRejects() throws Exception {
prepareLooper();
final SessionCallback sessionCallback = new SessionCallback() {
@Override
@@ -534,7 +534,7 @@
}
@Test
- public void testFastForward() throws InterruptedException {
+ public void fastForward() throws InterruptedException {
prepareLooper();
final CountDownLatch latch = new CountDownLatch(1);
final SessionCallback callback = new SessionCallback() {
@@ -556,7 +556,7 @@
}
@Test
- public void testRewind() throws InterruptedException {
+ public void rewind() throws InterruptedException {
prepareLooper();
final CountDownLatch latch = new CountDownLatch(1);
final SessionCallback callback = new SessionCallback() {
@@ -578,7 +578,7 @@
}
@Test
- public void testPlayFromSearch() throws InterruptedException {
+ public void playFromSearch() throws InterruptedException {
prepareLooper();
final String request = "random query";
final Bundle bundle = new Bundle();
@@ -607,7 +607,7 @@
}
@Test
- public void testPlayFromUri() throws InterruptedException {
+ public void playFromUri() throws InterruptedException {
prepareLooper();
final Uri request = Uri.parse("foo://boo");
final Bundle bundle = new Bundle();
@@ -635,7 +635,7 @@
}
@Test
- public void testPlayFromMediaId() throws InterruptedException {
+ public void playFromMediaId() throws InterruptedException {
prepareLooper();
final String request = "media_id";
final Bundle bundle = new Bundle();
@@ -663,7 +663,7 @@
}
@Test
- public void testPrepareFromSearch() throws InterruptedException {
+ public void prepareFromSearch() throws InterruptedException {
prepareLooper();
final String request = "random query";
final Bundle bundle = new Bundle();
@@ -691,7 +691,7 @@
}
@Test
- public void testPrepareFromUri() throws InterruptedException {
+ public void prepareFromUri() throws InterruptedException {
prepareLooper();
final Uri request = Uri.parse("foo://boo");
final Bundle bundle = new Bundle();
@@ -719,7 +719,7 @@
}
@Test
- public void testPrepareFromMediaId() throws InterruptedException {
+ public void prepareFromMediaId() throws InterruptedException {
prepareLooper();
final String request = "media_id";
final Bundle bundle = new Bundle();
@@ -747,7 +747,7 @@
}
@Test
- public void testSetRating() throws InterruptedException {
+ public void setRating() throws InterruptedException {
prepareLooper();
final int ratingType = RatingCompat.RATING_5_STARS;
final float ratingValue = 3.5f;
@@ -779,7 +779,7 @@
}
@Test
- public void testOnCommandCallback() throws InterruptedException {
+ public void onCommandCallback() throws InterruptedException {
prepareLooper();
final ArrayList<SessionCommand> commands = new ArrayList<>();
final CountDownLatch latchForPause = new CountDownLatch(1);
@@ -833,7 +833,7 @@
*/
@Test
@LargeTest
- public void testDeadlock() throws InterruptedException {
+ public void deadlock() throws InterruptedException {
prepareLooper();
sHandler.postAndSync(new Runnable() {
@Override
@@ -912,7 +912,7 @@
@Test
@LargeTest
- public void testControllerAfterSessionIsGone() throws InterruptedException {
+ public void controllerAfterSessionIsGone() throws InterruptedException {
prepareLooper();
mSession.close();
testSessionCallbackIsNotCalled();
diff --git a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
similarity index 95%
rename from media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java
rename to media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
index b45271c..34c30d96 100644
--- a/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackTestWithMediaController.java
+++ b/media2/session/version-compat-tests/previous/service/src/androidTest/java/androidx/media2/test/service/tests/MediaSessionCompatCallbackWithMediaControllerTest.java
@@ -70,7 +70,7 @@
*/
@RunWith(AndroidJUnit4.class)
@SmallTest
-public class MediaSessionCompatCallbackTestWithMediaController extends MediaSessionTestBase {
+public class MediaSessionCompatCallbackWithMediaControllerTest extends MediaSessionTestBase {
private static final String TAG = "MediaControllerTest";
// The maximum time to wait for an operation.
@@ -127,7 +127,7 @@
}
@Test
- public void testPlay() throws Exception {
+ public void play() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -138,7 +138,7 @@
}
@Test
- public void testPause() throws Exception {
+ public void pause() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -149,7 +149,7 @@
}
@Test
- public void testPrepare() throws Exception {
+ public void prepare() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -160,7 +160,7 @@
}
@Test
- public void testSeekTo() throws Exception {
+ public void seekTo() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -173,7 +173,7 @@
}
@Test
- public void testAddPlaylistItem() throws Exception {
+ public void addPlaylistItem() throws Exception {
prepareLooper();
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
final List<QueueItem> testQueue = MediaUtils.convertToQueueItemList(testList);
@@ -194,7 +194,7 @@
}
@Test
- public void testRemovePlaylistItem() throws Exception {
+ public void removePlaylistItem() throws Exception {
prepareLooper();
final List<MediaItem> testList = MediaTestUtils.createPlaylist(2);
final List<QueueItem> testQueue = MediaUtils.convertToQueueItemList(testList);
@@ -214,7 +214,7 @@
}
@Test
- public void testReplacePlaylistItem() throws Exception {
+ public void replacePlaylistItem() throws Exception {
prepareLooper();
final int testReplaceIndex = 1;
// replace = remove + add
@@ -241,7 +241,7 @@
}
@Test
- public void testSkipToPreviousItem() throws Exception {
+ public void skipToPreviousItem() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -252,7 +252,7 @@
}
@Test
- public void testSkipToNextItem() throws Exception {
+ public void skipToNextItem() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -263,7 +263,7 @@
}
@Test
- public void testSkipToPlaylistItem() throws Exception {
+ public void skipToPlaylistItem() throws Exception {
prepareLooper();
final int testSkipToIndex = 1;
@@ -282,7 +282,7 @@
}
@Test
- public void testSetShuffleMode() throws Exception {
+ public void setShuffleMode() throws Exception {
prepareLooper();
final int testShuffleMode = SessionPlayer.SHUFFLE_MODE_GROUP;
@@ -297,7 +297,7 @@
}
@Test
- public void testSetRepeatMode() throws Exception {
+ public void setRepeatMode() throws Exception {
prepareLooper();
final int testRepeatMode = SessionPlayer.REPEAT_MODE_ALL;
@@ -312,7 +312,7 @@
}
@Test
- public void testSetVolumeTo() throws Exception {
+ public void setVolumeTo() throws Exception {
prepareLooper();
final int maxVolume = 100;
final int currentVolume = 23;
@@ -330,7 +330,7 @@
}
@Test
- public void testAdjustVolume() throws Exception {
+ public void adjustVolume() throws Exception {
prepareLooper();
final int maxVolume = 100;
final int currentVolume = 23;
@@ -348,7 +348,7 @@
}
@Test
- public void testSetVolumeWithLocalVolume() throws Exception {
+ public void setVolumeWithLocalVolume() throws Exception {
prepareLooper();
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
@@ -386,7 +386,7 @@
}
@Test
- public void testAdjustVolumeWithLocalVolume() throws Exception {
+ public void adjustVolumeWithLocalVolume() throws Exception {
prepareLooper();
if (Build.VERSION.SDK_INT >= 21 && mAudioManager.isVolumeFixed()) {
// This test is not eligible for this device.
@@ -426,7 +426,7 @@
}
@Test
- public void testSendCustomCommand() throws Exception {
+ public void sendCustomCommand() throws Exception {
prepareLooper();
final String command = "test_custom_command";
final Bundle testArgs = new Bundle();
@@ -443,7 +443,7 @@
}
@Test
- public void testFastForward() throws Exception {
+ public void fastForward() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -454,7 +454,7 @@
}
@Test
- public void testRewind() throws Exception {
+ public void rewind() throws Exception {
prepareLooper();
RemoteMediaController controller = createControllerAndWaitConnection();
mSessionCallback.reset(1);
@@ -465,7 +465,7 @@
}
@Test
- public void testSetRating() throws Exception {
+ public void setRating() throws Exception {
prepareLooper();
final float ratingValue = 3.5f;
final Rating rating2 = new StarRating(5, ratingValue);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
index 8629127..87823b6 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2Provider.java
@@ -16,7 +16,11 @@
package androidx.mediarouter.media;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_ID;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_VOLUME;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ROUTE_CONTROL_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_ROUTE_VOLUME;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_ROUTE_VOLUME;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_DATA_ERROR;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_FAILED;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
@@ -30,6 +34,7 @@
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
@@ -41,6 +46,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
+import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
import androidx.mediarouter.media.MediaRouter.ControlRequestCallback;
import java.util.ArrayList;
@@ -48,11 +54,12 @@
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
* Provides routes and RouteController by using MediaRouter2.
- * This provider is added only when {@link MediaRouter#enableTransfer()} is called.
+ * This provider is added only when seamless transfer feature is enabled.
*/
@RequiresApi(Build.VERSION_CODES.R)
@SuppressWarnings({"unused", "ClassCanBeStatic"}) // TODO: Remove this.
@@ -62,22 +69,23 @@
final MediaRouter2 mMediaRouter2;
final Callback mCallback;
- final Map<MediaRouter2.RoutingController, DynamicMediaRoute2Controller> mControllerMap =
+ final Map<MediaRouter2.RoutingController, GroupRouteController> mControllerMap =
new ArrayMap<>();
private final MediaRouter2.RouteCallback mRouteCallback = new RouteCallback();
private final MediaRouter2.TransferCallback mTransferCallback = new TransferCallback();
+ private final MediaRouter2.ControllerCallback mControllerCallback = new ControllerCallback();
private final Handler mHandler;
private final Executor mHandlerExecutor;
private List<MediaRoute2Info> mRoutes = new ArrayList<>();
+ private Map<String, String> mRouteIdToOriginalRouteIdMap = new ArrayMap<>();
- @SuppressWarnings("deprecation")
MediaRoute2Provider(@NonNull Context context, @NonNull Callback callback) {
super(context);
mMediaRouter2 = MediaRouter2.getInstance(context);
mCallback = callback;
- mHandler = new Handler();
+ mHandler = new Handler(Looper.getMainLooper());
mHandlerExecutor = mHandler::post;
}
@@ -87,32 +95,44 @@
mMediaRouter2.registerRouteCallback(mHandlerExecutor, mRouteCallback,
MediaRouter2Utils.toDiscoveryPreference(request));
mMediaRouter2.registerTransferCallback(mHandlerExecutor, mTransferCallback);
+ mMediaRouter2.registerControllerCallback(mHandlerExecutor, mControllerCallback);
} else {
mMediaRouter2.unregisterRouteCallback(mRouteCallback);
mMediaRouter2.unregisterTransferCallback(mTransferCallback);
+ mMediaRouter2.unregisterControllerCallback(mControllerCallback);
}
}
@Nullable
@Override
public RouteController onCreateRouteController(@NonNull String routeId) {
- return new MediaRoute2Controller(routeId, null);
+ String originalRouteId = mRouteIdToOriginalRouteIdMap.get(routeId);
+ return new MemberRouteController(originalRouteId, null);
}
@Nullable
@Override
public RouteController onCreateRouteController(@NonNull String routeId,
@NonNull String routeGroupId) {
- return new MediaRoute2Controller(routeId, routeGroupId);
+ String originalRouteId = mRouteIdToOriginalRouteIdMap.get(routeId);
+
+ for (GroupRouteController groupRouteController : mControllerMap.values()) {
+ if (TextUtils.equals(routeGroupId, groupRouteController.mRoutingController.getId())) {
+ return new MemberRouteController(originalRouteId, groupRouteController);
+ }
+ }
+ Log.w(TAG, "Could not find the matching GroupRouteController. routeId=" + routeId
+ + ", routeGroupId=" + routeGroupId);
+ return new MemberRouteController(originalRouteId, null);
}
@Nullable
@Override
public DynamicGroupRouteController onCreateDynamicGroupRouteController(
@NonNull String initialMemberRouteId) {
- for (Map.Entry<MediaRouter2.RoutingController, DynamicMediaRoute2Controller> entry
+ for (Map.Entry<MediaRouter2.RoutingController, GroupRouteController> entry
: mControllerMap.entrySet()) {
- DynamicMediaRoute2Controller controller = entry.getValue();
+ GroupRouteController controller = entry.getValue();
if (TextUtils.equals(initialMemberRouteId, controller.mInitialMemberRouteId)) {
return controller;
}
@@ -123,7 +143,7 @@
public void transferTo(@NonNull String routeId) {
MediaRoute2Info route = getRouteById(routeId);
if (route == null) {
- Log.w(TAG, "Specified route not found. routeId=" + routeId);
+ Log.w(TAG, "transferTo: Specified route not found. routeId=" + routeId);
return;
}
mMediaRouter2.transferTo(route);
@@ -140,6 +160,18 @@
}
mRoutes = newRoutes;
+ mRouteIdToOriginalRouteIdMap.clear();
+ for (MediaRoute2Info route : mRoutes) {
+ Bundle extras = route.getExtras();
+ if (extras == null
+ || extras.getString(MediaRouter2Utils.KEY_ORIGINAL_ROUTE_ID) == null) {
+ Log.w(TAG, "Cannot find the original route Id. route=" + route);
+ continue;
+ }
+ mRouteIdToOriginalRouteIdMap.put(route.getId(),
+ extras.getString(MediaRouter2Utils.KEY_ORIGINAL_ROUTE_ID));
+ }
+
List<MediaRouteDescriptor> routeDescriptors = mRoutes.stream()
.map(MediaRouter2Utils::toMediaRouteDescriptor)
.filter(Objects::nonNull)
@@ -178,14 +210,93 @@
@Nullable
static String getSessionIdForRouteController(@Nullable RouteController controller) {
- if (!(controller instanceof DynamicMediaRoute2Controller)) {
+ if (!(controller instanceof GroupRouteController)) {
return null;
}
MediaRouter2.RoutingController routingController =
- ((DynamicMediaRoute2Controller) controller).mRoutingController;
+ ((GroupRouteController) controller).mRoutingController;
return (routingController == null) ? null : routingController.getId();
}
+ void setDynamicRouteDescriptors(MediaRouter2.RoutingController routingController) {
+ GroupRouteController controller = mControllerMap.get(routingController);
+ if (controller == null) {
+ Log.w(TAG, "onControllerUpdated: No matching routeController found. "
+ + "routingController=" + routingController);
+ return;
+ }
+
+ List<String> selectedRouteIds =
+ MediaRouter2Utils.getRouteIds(routingController.getSelectedRoutes());
+ MediaRouteDescriptor initialRouteDescriptor = MediaRouter2Utils.toMediaRouteDescriptor(
+ routingController.getSelectedRoutes().get(0));
+
+ // TODO: Add RoutingController#getName() and use it in Android S+
+ // TODO: May need to define the string value "Group" in strings.xml for translation.
+ Bundle controlHints = routingController.getControlHints();
+ String groupRouteName = "Group";
+ try {
+ if (controlHints != null) {
+ String sessionName = controlHints.getString(MediaRouter2Utils.KEY_SESSION_NAME);
+ if (!TextUtils.isEmpty(sessionName)) {
+ groupRouteName = sessionName;
+ }
+ }
+ } catch (Exception ex) {
+ Log.w(TAG, "Exception while unparceling control hints.", ex);
+ }
+
+ // Create group route descriptor
+ MediaRouteDescriptor groupDescriptor = new MediaRouteDescriptor.Builder(
+ routingController.getId(), groupRouteName)
+ .setVolume(routingController.getVolume())
+ .setVolumeMax(routingController.getVolumeMax())
+ .setVolumeHandling(routingController.getVolumeHandling())
+ .setConnectionState(MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED)
+ .addControlFilters(initialRouteDescriptor.getControlFilters())
+ .addGroupMemberIds(selectedRouteIds)
+ .build();
+
+ // Create dynamic route descriptors
+ List<String> selectableRouteIds =
+ MediaRouter2Utils.getRouteIds(routingController.getSelectableRoutes());
+ List<String> deselectableRouteIds =
+ MediaRouter2Utils.getRouteIds(routingController.getDeselectableRoutes());
+
+ MediaRouteProviderDescriptor providerDescriptor = getDescriptor();
+ if (providerDescriptor == null) {
+ Log.w(TAG, "onControllerUpdated: providerDescriptor is not set.");
+ return;
+ }
+
+ List<DynamicRouteDescriptor> dynamicRouteDescriptors = new ArrayList<>();
+ List<MediaRouteDescriptor> routeDescriptors = providerDescriptor.getRoutes();
+ if (!routeDescriptors.isEmpty()) {
+ for (MediaRouteDescriptor descriptor: routeDescriptors) {
+ String routeId = descriptor.getId();
+ DynamicRouteDescriptor.Builder builder =
+ new DynamicRouteDescriptor.Builder(descriptor)
+ .setSelectionState(selectedRouteIds.contains(routeId)
+ ? DynamicRouteDescriptor.SELECTED
+ : DynamicRouteDescriptor.UNSELECTED)
+ .setIsGroupable(selectableRouteIds.contains(routeId))
+ .setIsUnselectable(deselectableRouteIds.contains(routeId))
+ .setIsTransferable(true);
+ dynamicRouteDescriptors.add(builder.build());
+ }
+ }
+
+ controller.notifyDynamicRoutesChanged(groupDescriptor, dynamicRouteDescriptors);
+ }
+
+ abstract static class Callback {
+ public abstract void onSelectRoute(@NonNull String routeDescriptorId,
+ @MediaRouter.UnselectReason int reason);
+ public abstract void onSelectFallbackRoute(@MediaRouter.UnselectReason int reason);
+
+ public abstract void onReleaseController(@NonNull RouteController controller);
+ }
+
private class RouteCallback extends MediaRouter2.RouteCallback {
RouteCallback() {}
@@ -205,17 +316,9 @@
}
}
- abstract static class Callback {
- public abstract void onSelectRoute(@NonNull String routeDescriptorId,
- @MediaRouter.UnselectReason int reason);
+ private class TransferCallback extends MediaRouter2.TransferCallback {
+ TransferCallback() {}
- public abstract void onSelectFallbackRoute(@MediaRouter.UnselectReason int reason);
-
- public abstract void onReleaseController(@NonNull RouteController controller);
- }
-
- @RequiresApi(30)
- final class TransferCallback extends MediaRouter2.TransferCallback {
@Override
public void onTransfer(@NonNull MediaRouter2.RoutingController oldController,
@NonNull MediaRouter2.RoutingController newController) {
@@ -231,10 +334,10 @@
}
// TODO: Select a group route when dynamic grouping.
String routeId = selectedRoutes.get(0).getId();
- DynamicMediaRoute2Controller controller =
- new DynamicMediaRoute2Controller(routeId, newController);
+ GroupRouteController controller = new GroupRouteController(newController, routeId);
mControllerMap.put(newController, controller);
mCallback.onSelectRoute(routeId, UNSELECT_REASON_ROUTE_CHANGED);
+ setDynamicRouteDescriptors(newController);
}
}
@@ -246,23 +349,54 @@
@Override
public void onStop(@NonNull MediaRouter2.RoutingController routingController) {
RouteController routeController = mControllerMap.remove(routingController);
- mCallback.onReleaseController(routeController);
+ if (routeController != null) {
+ mCallback.onReleaseController(routeController);
+ } else {
+ Log.w(TAG, "onStop: No matching routeController found. routingController="
+ + routingController);
+ }
}
}
- // TODO: Implement this class by overriding every public method in RouteController.
- private class MediaRoute2Controller extends RouteController {
- final String mRouteId;
- final String mRouteGroupId;
+ private class ControllerCallback extends MediaRouter2.ControllerCallback {
+ ControllerCallback() {}
- MediaRoute2Controller(@NonNull String routeId, @Nullable String routeGroupId) {
- mRouteId = routeId;
- mRouteGroupId = routeGroupId;
+ @Override
+ public void onControllerUpdated(@NonNull MediaRouter2.RoutingController routingController) {
+ setDynamicRouteDescriptors(routingController);
}
}
- // TODO: Implement this class by overriding every public method in DynamicGroupRouteController.
- private class DynamicMediaRoute2Controller extends DynamicGroupRouteController {
+ private class MemberRouteController extends RouteController {
+ final String mOriginalRouteId;
+ final GroupRouteController mGroupRouteController;
+
+ MemberRouteController(@Nullable String originalRouteId,
+ @Nullable GroupRouteController groupRouteController) {
+ mOriginalRouteId = originalRouteId;
+ mGroupRouteController = groupRouteController;
+ }
+
+ @Override
+ public void onSetVolume(int volume) {
+ // TODO: Unhide MediaRouter2#setRouteVolume() and use it in Android S+
+ if (mOriginalRouteId == null || mGroupRouteController == null) {
+ return;
+ }
+ mGroupRouteController.setMemberRouteVolume(mOriginalRouteId, volume);
+ }
+
+ @Override
+ public void onUpdateVolume(int delta) {
+ // TODO: Unhide MediaRouter2#setRouteVolume() and use it in Android S+
+ if (mOriginalRouteId == null || mGroupRouteController == null) {
+ return;
+ }
+ mGroupRouteController.updateMemberRouteVolume(mOriginalRouteId, delta);
+ }
+ }
+
+ private class GroupRouteController extends DynamicGroupRouteController {
final String mInitialMemberRouteId;
final MediaRouter2.RoutingController mRoutingController;
@Nullable
@@ -271,12 +405,12 @@
final Messenger mReceiveMessenger;
final SparseArray<ControlRequestCallback> mPendingCallbacks = new SparseArray<>();
- int mNextRequestId = 0;
+ AtomicInteger mNextRequestId = new AtomicInteger(1);
- DynamicMediaRoute2Controller(@NonNull String initialMemberRouteId,
- @NonNull MediaRouter2.RoutingController routingController) {
- mInitialMemberRouteId = initialMemberRouteId;
+ GroupRouteController(@NonNull MediaRouter2.RoutingController routingController,
+ @NonNull String initialMemberRouteId) {
mRoutingController = routingController;
+ mInitialMemberRouteId = initialMemberRouteId;
mServiceMessenger = getMessengerFromRoutingController(routingController);
mReceiveMessenger = mServiceMessenger == null ? null :
new Messenger(new ReceiveHandler());
@@ -305,7 +439,7 @@
return false;
}
- int requestId = mNextRequestId++;
+ int requestId = mNextRequestId.getAndIncrement();
Message msg = Message.obtain();
msg.what = CLIENT_MSG_ROUTE_CONTROL_REQUEST;
msg.arg1 = requestId;
@@ -332,15 +466,102 @@
}
@Override
- public void onUpdateMemberRoutes(@Nullable List<String> routeIds) {}
+ public void onUpdateMemberRoutes(@Nullable List<String> routeIds) {
+ // Assuming only one ID exist in the list
+ if (routeIds == null || routeIds.isEmpty()) {
+ Log.w(TAG, "onUpdateMemberRoutes: Ignoring null or empty routeIds.");
+ return;
+ }
+
+ String routeId = routeIds.get(0);
+ MediaRoute2Info route = getRouteById(routeId);
+ if (route == null) {
+ Log.w(TAG, "onUpdateMemberRoutes: Specified route not found. routeId=" + routeId);
+ return;
+ }
+
+ mMediaRouter2.transferTo(route);
+ }
@Override
- public void onAddMemberRoute(@NonNull String routeId) {}
+ public void onAddMemberRoute(@NonNull String routeId) {
+ if (routeId == null || routeId.isEmpty()) {
+ Log.w(TAG, "onAddMemberRoute: Ignoring null or empty routeId.");
+ return;
+ }
+
+ MediaRoute2Info route = getRouteById(routeId);
+ if (route == null) {
+ Log.w(TAG, "onAddMemberRoute: Specified route not found. routeId=" + routeId);
+ return;
+ }
+
+ mRoutingController.selectRoute(route);
+ }
@Override
- public void onRemoveMemberRoute(String routeId) {}
+ public void onRemoveMemberRoute(String routeId) {
+ if (routeId == null || routeId.isEmpty()) {
+ Log.w(TAG, "onRemoveMemberRoute: Ignoring null or empty routeId.");
+ return;
+ }
+
+ MediaRoute2Info route = getRouteById(routeId);
+ if (route == null) {
+ Log.w(TAG, "onRemoveMemberRoute: Specified route not found. routeId=" + routeId);
+ return;
+ }
+
+ mRoutingController.deselectRoute(route);
+ }
+
+ void setMemberRouteVolume(@NonNull String memberRouteOriginalId, int volume) {
+ int requestId = mNextRequestId.getAndIncrement();
+ Message msg = Message.obtain();
+ msg.what = CLIENT_MSG_SET_ROUTE_VOLUME;
+ msg.arg1 = requestId;
+
+ Bundle data = new Bundle();
+ data.putInt(CLIENT_DATA_VOLUME, volume);
+ data.putString(CLIENT_DATA_ROUTE_ID, memberRouteOriginalId);
+ msg.setData(data);
+
+ msg.replyTo = mReceiveMessenger;
+ try {
+ mServiceMessenger.send(msg);
+ } catch (DeadObjectException ex) {
+ // The service died.
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Could not send control request to service.", ex);
+ }
+ }
+
+ void updateMemberRouteVolume(@NonNull String memberRouteOriginalId, int delta) {
+ int requestId = mNextRequestId.getAndIncrement();
+ Message msg = Message.obtain();
+ msg.what = CLIENT_MSG_UPDATE_ROUTE_VOLUME;
+ msg.arg1 = requestId;
+
+ Bundle data = new Bundle();
+ data.putInt(CLIENT_DATA_VOLUME, delta);
+ data.putString(CLIENT_DATA_ROUTE_ID, memberRouteOriginalId);
+ msg.setData(data);
+
+ msg.replyTo = mReceiveMessenger;
+ try {
+ mServiceMessenger.send(msg);
+ } catch (DeadObjectException ex) {
+ // The service died.
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Could not send control request to service.", ex);
+ }
+ }
class ReceiveHandler extends Handler {
+ ReceiveHandler() {
+ super(Looper.getMainLooper());
+ }
+
@Override
public void handleMessage(Message msg) {
final int what = msg.what;
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
index cac56397..3f3e814 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRoute2ProviderServiceAdapter.java
@@ -16,11 +16,14 @@
package androidx.mediarouter.media;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_ID;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_VOLUME;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_ROUTE_CONTROL_REQUEST;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_SET_ROUTE_VOLUME;
+import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_MSG_UPDATE_ROUTE_VOLUME;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_DATA_ERROR;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_FAILED;
import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_CONTROL_REQUEST_SUCCEEDED;
-import static androidx.mediarouter.media.MediaRouter.UNSELECT_REASON_UNKNOWN;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -148,11 +151,13 @@
String sessionId = assignSessionId(controller);
controller.onSelect();
+ String sessionName = selectedRoute.getName();
+
//TODO: Handle a static group
RoutingSessionInfo.Builder builder =
new RoutingSessionInfo.Builder(sessionId, packageName)
.addSelectedRoute(routeId)
- .setName(selectedRoute.getName())
+ .setName(sessionName)
.setVolumeHandling(selectedRoute.getVolumeHandling())
.setVolume(selectedRoute.getVolume())
.setVolumeMax(selectedRoute.getVolumeMax());
@@ -162,6 +167,7 @@
Bundle controlHints = new Bundle();
controlHints.putParcelable(MediaRouter2Utils.KEY_MESSENGER, messenger);
+ controlHints.putString(MediaRouter2Utils.KEY_SESSION_NAME, sessionName);
builder.setControlHints(controlHints).build();
// Dynamic grouping info will be notified by the provider.
@@ -190,7 +196,7 @@
notifyRequestFailed(requestId, REASON_INVALID_COMMAND);
return;
}
- controller.onUnselect(UNSELECT_REASON_UNKNOWN);
+ controller.onUnselect(MediaRouter.UNSELECT_REASON_STOPPED);
controller.onRelease();
notifySessionReleased(sessionId);
}
@@ -320,12 +326,18 @@
}
}
if (sessionId == null) {
- Log.w(TAG, "setDynamicRouteDescriptor: Couldn't find a routing session");
+ Log.w(TAG, "setDynamicRouteDescriptor: Ignoring null session Id");
return;
}
RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
if (sessionInfo == null) {
- Log.w(TAG, "setDynamicRouteDescriptor: Couldn't find a routing session");
+ Log.w(TAG, "setDynamicRouteDescriptor: Couldn't find a routing session. "
+ + "sessionId=" + sessionId);
+ return;
+ }
+
+ if (!groupRoute.isEnabled()) {
+ onReleaseSession(REQUEST_ID_NONE, sessionId);
return;
}
@@ -340,6 +352,14 @@
.setVolume(groupRoute.getVolume())
.setVolumeMax(groupRoute.getVolumeMax())
.setVolumeHandling(groupRoute.getVolumeHandling());
+
+ Bundle controlHints = sessionInfo.getControlHints();
+ if (controlHints == null) {
+ Log.w(TAG, "The controlHints is null. This shouldn't happen.");
+ controlHints = new Bundle();
+ }
+ controlHints.putString(MediaRouter2Utils.KEY_SESSION_NAME, groupRoute.getName());
+ builder.setControlHints(controlHints);
}
for (DynamicRouteDescriptor descriptor : descriptors) {
@@ -434,6 +454,24 @@
controller.onControlRequest(intent, callback);
}
+ void setRouteVolume(@NonNull String routeId, int volume) {
+ RouteController controller = mServiceImpl.getControllerForRouteId(routeId);
+ if (controller == null) {
+ Log.w(TAG, "setRouteVolume: Couldn't find a controller for routeId=" + routeId);
+ return;
+ }
+ controller.onSetVolume(volume);
+ }
+
+ void updateRouteVolume(@NonNull String routeId, int delta) {
+ RouteController controller = mServiceImpl.getControllerForRouteId(routeId);
+ if (controller == null) {
+ Log.w(TAG, "updateRouteVolume: Couldn't find a controller for routeId=" + routeId);
+ return;
+ }
+ controller.onUpdateVolume(delta);
+ }
+
void updateMemberRouteControllers(String groupId, RoutingSessionInfo oldSession,
RoutingSessionInfo newSession) {
List<String> oldRouteIds = (oldSession == null) ? Collections.emptyList() :
@@ -588,6 +626,7 @@
final int what = msg.what;
final int requestId = msg.arg1;
final Object obj = msg.obj;
+ final Bundle data = msg.getData();
switch (what) {
case CLIENT_MSG_ROUTE_CONTROL_REQUEST:
@@ -596,6 +635,24 @@
mSessionId, (Intent) obj);
}
break;
+
+ case CLIENT_MSG_SET_ROUTE_VOLUME: {
+ int volume = data.getInt(CLIENT_DATA_VOLUME, -1);
+ String routeId = data.getString(CLIENT_DATA_ROUTE_ID);
+ if (volume >= 0 && routeId != null) {
+ mServiceAdapter.setRouteVolume(routeId, volume);
+ }
+ break;
+ }
+
+ case CLIENT_MSG_UPDATE_ROUTE_VOLUME: {
+ int delta = data.getInt(CLIENT_DATA_VOLUME, 0);
+ String routeId = data.getString(CLIENT_DATA_ROUTE_ID);
+ if (delta != 0 && routeId != null) {
+ mServiceAdapter.updateRouteVolume(routeId, delta);
+ }
+ break;
+ }
}
}
}
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
index 870d950..3074c0d 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProvider.java
@@ -497,6 +497,7 @@
/**
* Called when a user selects a new set of routes s/he wants the session to be played.
*/
+ // TODO: How about making this to onTransfer(@NonNull String routeId)?
public abstract void onUpdateMemberRoutes(@Nullable List<String> routeIds);
/**
@@ -507,6 +508,7 @@
/**
* Called when a user removes a route from casting session.
*/
+ // TODO: Add @NonNull in the argument (needs current.txt change)
public abstract void onRemoveMemberRoute(String routeId);
/**
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
index 3806826..091bf5d 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderProtocol.java
@@ -89,6 +89,7 @@
* - arg1 : request id
* - arg2 : route controller id
* - CLIENT_DATA_VOLUME : volume integer
+ * - CLIENT_DATA_ROUTE_ID : (client v4, only used for MediaRouter2) original route ID
*/
public static final int CLIENT_MSG_SET_ROUTE_VOLUME = 7;
@@ -98,6 +99,7 @@
* - arg1 : request id
* - arg2 : route controller id
* - CLIENT_DATA_VOLUME : volume delta integer
+ * - CLIENT_DATA_ROUTE_ID : (client v4, only used for MediaRouter2) original route ID
*/
public static final int CLIENT_MSG_UPDATE_ROUTE_VOLUME = 8;
@@ -256,9 +258,15 @@
public static final int CLIENT_VERSION_3 = 3;
/**
+ * The client version used from androidx 1.2.0.
+ * Seamless transfer feature is added in this version.
+ */
+ public static final int CLIENT_VERSION_4 = 4;
+
+ /**
* The current client version.
*/
- public static final int CLIENT_VERSION_CURRENT = CLIENT_VERSION_3;
+ public static final int CLIENT_VERSION_CURRENT = CLIENT_VERSION_4;
/*
* Recognized server version numbers. (Reserved for future use.)
@@ -276,9 +284,15 @@
public static final int SERVICE_VERSION_2 = 2;
/**
+ * The service version used from androidx 1.2.0.
+ * Seamless transfer feature is added in this version.
+ */
+ public static final int SERVICE_VERSION_3 = 3;
+
+ /**
* The current service version.
*/
- public static final int SERVICE_VERSION_CURRENT = SERVICE_VERSION_2;
+ public static final int SERVICE_VERSION_CURRENT = SERVICE_VERSION_3;
static final int CLIENT_VERSION_START = CLIENT_VERSION_1;
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
index 5b76952..ed67512 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
@@ -137,7 +137,6 @@
static final int PRIVATE_MSG_CLIENT_DIED = 1;
- //TODO: move implementations to the impl class (WIP).
interface MediaRouteProviderServiceImpl {
IBinder onBind(Intent intent);
void attachBaseContext(Context context);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
index bccb6de..051b09e 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
@@ -2383,6 +2383,11 @@
public void requestUpdateVolume(RouteInfo route, int delta) {
if (route == mSelectedRoute && mSelectedRouteController != null) {
mSelectedRouteController.onUpdateVolume(delta);
+ } else if (!mRouteControllerMap.isEmpty()) {
+ RouteController controller = mRouteControllerMap.get(route.mUniqueId);
+ if (controller != null) {
+ controller.onUpdateVolume(delta);
+ }
}
}
@@ -3265,11 +3270,7 @@
}
@Override
- public void onReleaseController(@Nullable RouteController controller) {
- if (controller == null) {
- return;
- }
-
+ public void onReleaseController(@NonNull RouteController controller) {
if (controller == mSelectedRouteController) {
// Stop casting
setSelectedRouteToFallbackRoute(UNSELECT_REASON_STOPPED);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
index 83534d3..88b3e14 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
@@ -38,6 +38,7 @@
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -46,10 +47,16 @@
@RequiresApi(api = Build.VERSION_CODES.R)
class MediaRouter2Utils {
static final String FEATURE_EMPTY = "android.media.route.feature.EMPTY";
+
+ // Used in MediaRoute2Info#getExtras()
static final String KEY_EXTRAS = "androidx.mediarouter.media.KEY_EXTRAS";
static final String KEY_CONTROL_FILTERS = "androidx.mediarouter.media.KEY_CONTROL_FILTERS";
static final String KEY_DEVICE_TYPE = "androidx.mediarouter.media.KEY_DEVICE_TYPE";
+ static final String KEY_ORIGINAL_ROUTE_ID = "androidx.mediarouter.media.KEY_ORIGINAL_ROUTE_ID";
+
+ // Used in RoutingController#getControlHints()
static final String KEY_MESSENGER = "androidx.mediarouter.media.KEY_MESSENGER";
+ static final String KEY_SESSION_NAME = "androidx.mediarouter.media.KEY_SESSION_NAME";
private MediaRouter2Utils() {}
@@ -79,6 +86,7 @@
extras.putParcelableArrayList(KEY_CONTROL_FILTERS,
new ArrayList<>(descriptor.getControlFilters()));
extras.putInt(KEY_DEVICE_TYPE, descriptor.getDeviceType());
+ extras.putString(KEY_ORIGINAL_ROUTE_ID, descriptor.getId());
builder.setExtras(extras);
// This is a workaround for preventing IllegalArgumentException in MediaRoute2Info.
@@ -166,6 +174,15 @@
}
@NonNull
+ static List<String> getRouteIds(@Nullable List<MediaRoute2Info> routes) {
+ if (routes == null) {
+ return new ArrayList<>();
+ }
+ return routes.stream().filter(Objects::nonNull)
+ .map(MediaRoute2Info::getId).collect(Collectors.toList());
+ }
+
+ @NonNull
static RouteDiscoveryPreference toDiscoveryPreference(
@Nullable MediaRouteDiscoveryRequest discoveryRequest) {
if (discoveryRequest == null || !discoveryRequest.isValid()) {
diff --git a/navigation/benchmark/src/androidTest/AndroidManifest.xml b/navigation/benchmark/src/androidTest/AndroidManifest.xml
index 03cb61f..358a851 100644
--- a/navigation/benchmark/src/androidTest/AndroidManifest.xml
+++ b/navigation/benchmark/src/androidTest/AndroidManifest.xml
@@ -23,5 +23,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/paging/common/api/3.0.0-alpha03.txt b/paging/common/api/3.0.0-alpha03.txt
index 351532f..dd27c13 100644
--- a/paging/common/api/3.0.0-alpha03.txt
+++ b/paging/common/api/3.0.0-alpha03.txt
@@ -100,7 +100,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -119,6 +119,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -260,7 +262,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -281,7 +283,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -358,7 +360,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -422,6 +424,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/common/api/current.txt b/paging/common/api/current.txt
index 351532f..dd27c13 100644
--- a/paging/common/api/current.txt
+++ b/paging/common/api/current.txt
@@ -100,7 +100,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -119,6 +119,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -260,7 +262,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -281,7 +283,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -358,7 +360,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -422,6 +424,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/common/api/public_plus_experimental_3.0.0-alpha03.txt b/paging/common/api/public_plus_experimental_3.0.0-alpha03.txt
index a634c55..0776c3e 100644
--- a/paging/common/api/public_plus_experimental_3.0.0-alpha03.txt
+++ b/paging/common/api/public_plus_experimental_3.0.0-alpha03.txt
@@ -101,7 +101,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -121,6 +121,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -262,7 +264,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -283,7 +285,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -360,7 +362,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -424,6 +426,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/common/api/public_plus_experimental_current.txt b/paging/common/api/public_plus_experimental_current.txt
index a634c55..0776c3e 100644
--- a/paging/common/api/public_plus_experimental_current.txt
+++ b/paging/common/api/public_plus_experimental_current.txt
@@ -101,7 +101,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -121,6 +121,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -262,7 +264,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -283,7 +285,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -360,7 +362,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -424,6 +426,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/common/api/restricted_3.0.0-alpha03.txt b/paging/common/api/restricted_3.0.0-alpha03.txt
index 351532f..dd27c13 100644
--- a/paging/common/api/restricted_3.0.0-alpha03.txt
+++ b/paging/common/api/restricted_3.0.0-alpha03.txt
@@ -100,7 +100,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -119,6 +119,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -260,7 +262,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -281,7 +283,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -358,7 +360,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -422,6 +424,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/common/api/restricted_current.txt b/paging/common/api/restricted_current.txt
index 351532f..dd27c13 100644
--- a/paging/common/api/restricted_current.txt
+++ b/paging/common/api/restricted_current.txt
@@ -100,7 +100,7 @@
}
public static final class LoadState.Loading extends androidx.paging.LoadState {
- field public static final androidx.paging.LoadState.Loading! INSTANCE;
+ field public static final androidx.paging.LoadState.Loading INSTANCE;
}
public static final class LoadState.NotLoading extends androidx.paging.LoadState {
@@ -119,6 +119,8 @@
}
public enum LoadType {
+ method public static androidx.paging.LoadType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.LoadType[] values();
enum_constant public static final androidx.paging.LoadType APPEND;
enum_constant public static final androidx.paging.LoadType PREPEND;
enum_constant public static final androidx.paging.LoadType REFRESH;
@@ -260,7 +262,7 @@
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance, boolean enablePlaceholders);
ctor public PagingConfig(int pageSize, @IntRange(from=null) int prefetchDistance);
ctor public PagingConfig(int pageSize);
- field public static final androidx.paging.PagingConfig.Companion! Companion;
+ field public static final androidx.paging.PagingConfig.Companion Companion;
field public static final int MAX_SIZE_UNBOUNDED = 2147483647; // 0x7fffffff
field public final boolean enablePlaceholders;
field public final int initialLoadSize;
@@ -281,7 +283,7 @@
method @CheckResult public androidx.paging.PagingData<T> insertHeaderItem(T item);
method @CheckResult public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T> pagingData, kotlin.jvm.functions.Function2<? super T,? super T,? extends R> generator);
method @CheckResult public <R> androidx.paging.PagingData<R> map(kotlin.jvm.functions.Function1<? super T,? extends R> transform);
- field public static final androidx.paging.PagingData.Companion! Companion;
+ field public static final androidx.paging.PagingData.Companion Companion;
}
public static final class PagingData.Companion {
@@ -358,7 +360,7 @@
method public Key? getNextKey();
method public Key? getPrevKey();
field public static final int COUNT_UNDEFINED = -2147483648; // 0x80000000
- field public static final androidx.paging.PagingSource.LoadResult.Page.Companion! Companion;
+ field public static final androidx.paging.PagingSource.LoadResult.Page.Companion Companion;
}
public static final class PagingSource.LoadResult.Page.Companion {
@@ -422,6 +424,8 @@
}
public enum RemoteMediator.InitializeAction {
+ method public static androidx.paging.RemoteMediator.InitializeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.paging.RemoteMediator.InitializeAction[] values();
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction LAUNCH_INITIAL_REFRESH;
enum_constant public static final androidx.paging.RemoteMediator.InitializeAction SKIP_INITIAL_REFRESH;
}
diff --git a/paging/rxjava2/api/api_lint.ignore b/paging/rxjava2/api/api_lint.ignore
index 153d977..43bf4f5 100644
--- a/paging/rxjava2/api/api_lint.ignore
+++ b/paging/rxjava2/api/api_lint.ignore
@@ -3,11 +3,3 @@
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.paging.RxPagedListBuilder.buildFlowable(io.reactivex.BackpressureStrategy)
BuilderSetStyle: androidx.paging.RxPagedListBuilder#buildObservable():
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.paging.RxPagedListBuilder.buildObservable()
-
-
-MissingBuildMethod: androidx.paging.RxPagedListBuilder:
- androidx.paging.RxPagedListBuilder does not declare a `build()` method, but builder classes are expected to
-
-
-TopLevelBuilder: androidx.paging.RxPagedListBuilder:
- Builder should be defined as inner class: androidx.paging.RxPagedListBuilder
diff --git a/paging/samples/build.gradle b/paging/samples/build.gradle
index d312266..5b01741 100644
--- a/paging/samples/build.gradle
+++ b/paging/samples/build.gradle
@@ -34,6 +34,7 @@
dependencies {
implementation("androidx.appcompat:appcompat:1.1.0")
+ implementation(project(":annotation:annotation-experimental"))
implementation(project(":annotation:annotation-sampled"))
implementation(project(":lifecycle:lifecycle-viewmodel-ktx"))
implementation(project(":fragment:fragment-ktx"))
diff --git a/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaItemKeyedSample.java b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaItemKeyedSample.java
new file mode 100644
index 0000000..2b9cd30
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaItemKeyedSample.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 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 androidx.paging.samples.java;
+
+import androidx.annotation.experimental.UseExperimental;
+import androidx.paging.ExperimentalPagingApi;
+import androidx.paging.ListenableFutureRemoteMediator;
+import androidx.paging.LoadType;
+import androidx.paging.PagingState;
+import androidx.paging.samples.shared.ExampleGuavaBackendService;
+import androidx.paging.samples.shared.RoomDb;
+import androidx.paging.samples.shared.User;
+import androidx.paging.samples.shared.UserDao;
+
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.util.concurrent.Executor;
+
+import retrofit2.HttpException;
+
+@SuppressWarnings("unused")
+@UseExperimental(markerClass = ExperimentalPagingApi.class)
+class RemoteMediatorGuavaItemKeyedSample extends ListenableFutureRemoteMediator<Integer, User> {
+ private String mQuery;
+ private ExampleGuavaBackendService mNetworkService;
+ private RoomDb mDatabase;
+ private UserDao mUserDao;
+ private Executor mBgExecutor;
+
+ RemoteMediatorGuavaItemKeyedSample(String query, ExampleGuavaBackendService networkService,
+ RoomDb database, Executor bgExecutor) {
+ mQuery = query;
+ mNetworkService = networkService;
+ mDatabase = database;
+ mUserDao = database.userDao();
+ mBgExecutor = bgExecutor;
+ }
+
+ @NotNull
+ @Override
+ public ListenableFuture<MediatorResult> loadFuture(@NotNull LoadType loadType,
+ @NotNull PagingState<Integer, User> state) {
+ // The network load method takes an optional `after=<user.id>` parameter. For every
+ // page after the first, we pass the last user ID to let it continue from where it
+ // left off. For REFRESH, pass `null` to load the first page.
+ String loadKey = null;
+ switch (loadType) {
+ case REFRESH:
+ break;
+ case PREPEND:
+ // In this example, we never need to prepend, since REFRESH will always load the
+ // first page in the list. Immediately return, reporting end of pagination.
+ return Futures.immediateFuture(new MediatorResult.Success(true));
+ case APPEND:
+ User lastItem = state.lastItemOrNull();
+
+ // We must explicitly check if the last item is `null` when appending,
+ // since passing `null` to networkService is only valid for initial load.
+ // If lastItem is `null` it means no items were loaded after the initial
+ // REFRESH and there are no more items to load.
+ if (lastItem == null) {
+ return Futures.immediateFuture(new MediatorResult.Success(true));
+ }
+
+ loadKey = lastItem.getId();
+ break;
+ }
+
+ ListenableFuture<MediatorResult> networkResult = Futures.transform(
+ mNetworkService.searchUsers(mQuery, loadKey),
+ response -> {
+ mDatabase.runInTransaction(() -> {
+ if (loadType == LoadType.REFRESH) {
+ mUserDao.deleteByQuery(mQuery);
+ }
+
+ // Insert new users into database, which invalidates the current
+ // PagingData, allowing Paging to present the updates in the DB.
+ mUserDao.insertAll(response.getUsers());
+ });
+
+ return new MediatorResult.Success(response.getNextKey() == null);
+ }, mBgExecutor);
+
+ ListenableFuture<MediatorResult> ioCatchingNetworkResult = Futures.catching(networkResult,
+ IOException.class, MediatorResult.Error::new, mBgExecutor);
+
+ return Futures.catching(ioCatchingNetworkResult, HttpException.class,
+ MediatorResult.Error::new, mBgExecutor);
+ }
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaPageKeyedSample.java b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaPageKeyedSample.java
new file mode 100644
index 0000000..33f9390
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorGuavaPageKeyedSample.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright 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 androidx.paging.samples.java;
+
+import androidx.annotation.experimental.UseExperimental;
+import androidx.concurrent.futures.ResolvableFuture;
+import androidx.paging.ExperimentalPagingApi;
+import androidx.paging.ListenableFutureRemoteMediator;
+import androidx.paging.LoadType;
+import androidx.paging.PagingState;
+import androidx.paging.samples.shared.ExampleGuavaBackendService;
+import androidx.paging.samples.shared.RemoteKey;
+import androidx.paging.samples.shared.RemoteKeyDao;
+import androidx.paging.samples.shared.RoomDb;
+import androidx.paging.samples.shared.User;
+import androidx.paging.samples.shared.UserDao;
+
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.util.concurrent.Executor;
+
+import retrofit2.HttpException;
+
+@SuppressWarnings("unused")
+@UseExperimental(markerClass = ExperimentalPagingApi.class)
+class RemoteMediatorGuavaPageKeyedSample extends ListenableFutureRemoteMediator<Integer, User> {
+ private String mQuery;
+ private ExampleGuavaBackendService mNetworkService;
+ private RoomDb mDatabase;
+ private UserDao mUserDao;
+ private RemoteKeyDao mRemoteKeyDao;
+ private Executor mBgExecutor;
+
+ RemoteMediatorGuavaPageKeyedSample(String query, ExampleGuavaBackendService networkService,
+ RoomDb database, Executor bgExecutor) {
+ mQuery = query;
+ mNetworkService = networkService;
+ mDatabase = database;
+ mUserDao = database.userDao();
+ mRemoteKeyDao = database.remoteKeyDao();
+ mBgExecutor = bgExecutor;
+ }
+
+ @NotNull
+ @Override
+ public ListenableFuture<MediatorResult> loadFuture(@NotNull LoadType loadType,
+ @NotNull PagingState<Integer, User> state) {
+ // The network load method takes an optional `after=<user.id>` parameter. For every
+ // page after the first, we pass the last user ID to let it continue from where it
+ // left off. For REFRESH, pass `null` to load the first page.
+ ResolvableFuture<RemoteKey> remoteKeyFuture = ResolvableFuture.create();
+ switch (loadType) {
+ case REFRESH:
+ remoteKeyFuture.set(new RemoteKey(mQuery, null));
+ break;
+ case PREPEND:
+ // In this example, we never need to prepend, since REFRESH will always load the
+ // first page in the list. Immediately return, reporting end of pagination.
+ return Futures.immediateFuture(new MediatorResult.Success(true));
+ case APPEND:
+ User lastItem = state.lastItemOrNull();
+
+ // We must explicitly check if the last item is `null` when appending,
+ // since passing `null` to networkService is only valid for initial load.
+ // If lastItem is `null` it means no items were loaded after the initial
+ // REFRESH and there are no more items to load.
+ if (lastItem == null) {
+ return Futures.immediateFuture(new MediatorResult.Success(true));
+ }
+
+ // Query remoteKeyDao for the next RemoteKey.
+ remoteKeyFuture.setFuture(mRemoteKeyDao.remoteKeyByQueryFuture(mQuery));
+ break;
+ }
+
+ return Futures.transformAsync(remoteKeyFuture, remoteKey -> {
+ // We must explicitly check if the page key is `null` when appending,
+ // since `null` is only valid for initial load. If we receive `null`
+ // for APPEND, that means we have reached the end of pagination and
+ // there are no more items to load.
+ if (loadType != LoadType.REFRESH && remoteKey.getNextKey() == null) {
+ return Futures.immediateFuture(new MediatorResult.Success(true));
+ }
+
+ ListenableFuture<MediatorResult> networkResult = Futures.transform(
+ mNetworkService.searchUsers(mQuery, remoteKey.getNextKey()),
+ response -> {
+ mDatabase.runInTransaction(() -> {
+ if (loadType == LoadType.REFRESH) {
+ mUserDao.deleteByQuery(mQuery);
+ mRemoteKeyDao.deleteByQuery(mQuery);
+ }
+
+ // Update RemoteKey for this query.
+ mRemoteKeyDao.insertOrReplace(
+ new RemoteKey(mQuery, response.getNextKey()));
+
+ // Insert new users into database, which invalidates the current
+ // PagingData, allowing Paging to present the updates in the DB.
+ mUserDao.insertAll(response.getUsers());
+ });
+
+ return new MediatorResult.Success(response.getNextKey() == null);
+ }, mBgExecutor);
+
+ ListenableFuture<MediatorResult> ioCatchingNetworkResult = Futures.catching(
+ networkResult, IOException.class, MediatorResult.Error::new,
+ mBgExecutor);
+
+ return Futures.catching(ioCatchingNetworkResult, HttpException.class,
+ MediatorResult.Error::new, mBgExecutor);
+
+ }, mBgExecutor);
+ }
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxItemKeyedSample.java b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxItemKeyedSample.java
new file mode 100644
index 0000000..ae53900
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxItemKeyedSample.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 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 androidx.paging.samples.java;
+
+import androidx.annotation.experimental.UseExperimental;
+import androidx.paging.ExperimentalPagingApi;
+import androidx.paging.LoadType;
+import androidx.paging.PagingState;
+import androidx.paging.rxjava2.RxRemoteMediator;
+import androidx.paging.samples.shared.ExampleRxBackendService;
+import androidx.paging.samples.shared.RoomDb;
+import androidx.paging.samples.shared.SearchUserResponse;
+import androidx.paging.samples.shared.User;
+import androidx.paging.samples.shared.UserDao;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+
+import io.reactivex.Single;
+import io.reactivex.functions.Function;
+import io.reactivex.schedulers.Schedulers;
+import retrofit2.HttpException;
+
+@SuppressWarnings("unused")
+@UseExperimental(markerClass = ExperimentalPagingApi.class)
+class RemoteMediatorRxItemKeyedSample extends RxRemoteMediator<Integer, User> {
+ private String mQuery;
+ private ExampleRxBackendService mNetworkService;
+ private RoomDb mDatabase;
+ private UserDao mUserDao;
+
+ RemoteMediatorRxItemKeyedSample(String query, ExampleRxBackendService networkService,
+ RoomDb database) {
+ mQuery = query;
+ mNetworkService = networkService;
+ mDatabase = database;
+ mUserDao = database.userDao();
+ }
+
+ @NotNull
+ @Override
+ public Single<MediatorResult> loadSingle(@NotNull LoadType loadType,
+ @NotNull PagingState<Integer, User> state) {
+ // The network load method takes an optional `after=<user.id>` parameter. For every
+ // page after the first, we pass the last user ID to let it continue from where it
+ // left off. For REFRESH, pass `null` to load the first page.
+ String loadKey = null;
+ switch (loadType) {
+ case REFRESH:
+ break;
+ case PREPEND:
+ // In this example, we never need to prepend, since REFRESH will always load the
+ // first page in the list. Immediately return, reporting end of pagination.
+ return Single.just(new MediatorResult.Success(true));
+ case APPEND:
+ User lastItem = state.lastItemOrNull();
+
+ // We must explicitly check if the last item is `null` when appending,
+ // since passing `null` to networkService is only valid for initial load.
+ // If lastItem is `null` it means no items were loaded after the initial
+ // REFRESH and there are no more items to load.
+ if (lastItem == null) {
+ return Single.just(new MediatorResult.Success(true));
+ }
+
+ loadKey = lastItem.getId();
+ break;
+ }
+
+ return mNetworkService.searchUsers(mQuery, loadKey)
+ .subscribeOn(Schedulers.io())
+ .map((Function<SearchUserResponse, MediatorResult>) response -> {
+ mDatabase.runInTransaction(() -> {
+ if (loadType == LoadType.REFRESH) {
+ mUserDao.deleteByQuery(mQuery);
+ }
+
+ // Insert new users into database, which invalidates the current
+ // PagingData, allowing Paging to present the updates in the DB.
+ mUserDao.insertAll(response.getUsers());
+ });
+
+ return new MediatorResult.Success(response.getNextKey() == null);
+ })
+ .onErrorResumeNext(e -> {
+ if (e instanceof IOException || e instanceof HttpException) {
+ return Single.just(new MediatorResult.Error(e));
+ }
+
+ return Single.error(e);
+ });
+ }
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxPageKeyedSample.java b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxPageKeyedSample.java
new file mode 100644
index 0000000..498a08f
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/java/RemoteMediatorRxPageKeyedSample.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 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 androidx.paging.samples.java;
+
+import static androidx.paging.LoadType.REFRESH;
+
+import androidx.annotation.experimental.UseExperimental;
+import androidx.paging.ExperimentalPagingApi;
+import androidx.paging.LoadType;
+import androidx.paging.PagingState;
+import androidx.paging.rxjava2.RxRemoteMediator;
+import androidx.paging.samples.shared.ExampleRxBackendService;
+import androidx.paging.samples.shared.RemoteKey;
+import androidx.paging.samples.shared.RemoteKeyDao;
+import androidx.paging.samples.shared.RoomDb;
+import androidx.paging.samples.shared.User;
+import androidx.paging.samples.shared.UserDao;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+
+import io.reactivex.Single;
+import io.reactivex.functions.Function;
+import io.reactivex.schedulers.Schedulers;
+import retrofit2.HttpException;
+
+@SuppressWarnings("unused")
+@UseExperimental(markerClass = ExperimentalPagingApi.class)
+class RemoteMediatorRxPageKeyedSample extends RxRemoteMediator<Integer, User> {
+ private String mQuery;
+ private ExampleRxBackendService mNetworkService;
+ private RoomDb mDatabase;
+ private UserDao mUserDao;
+ private RemoteKeyDao mRemoteKeyDao;
+
+ RemoteMediatorRxPageKeyedSample(String query, ExampleRxBackendService networkService,
+ RoomDb database) {
+ mQuery = query;
+ mNetworkService = networkService;
+ mDatabase = database;
+ mUserDao = database.userDao();
+ mRemoteKeyDao = database.remoteKeyDao();
+ }
+
+ @NotNull
+ @Override
+ public Single<MediatorResult> loadSingle(@NotNull LoadType loadType,
+ @NotNull PagingState<Integer, User> state) {
+ // The network load method takes an optional [String] parameter. For every page
+ // after the first, we pass the [String] token returned from the previous page to
+ // let it continue from where it left off. For REFRESH, pass `null` to load the
+ // first page.
+ Single<RemoteKey> remoteKeySingle = null;
+ switch (loadType) {
+ case REFRESH:
+ // Initial load should use `null` as the page key, so we can return `null` directly.
+ remoteKeySingle = Single.just(new RemoteKey(mQuery, null));
+ break;
+ case PREPEND:
+ // In this example, we never need to prepend, since REFRESH will always load the
+ // first page in the list. Immediately return, reporting end of pagination.
+ return Single.just(new MediatorResult.Success(true));
+ case APPEND:
+ // Query remoteKeyDao for the next RemoteKey.
+ remoteKeySingle = mRemoteKeyDao.remoteKeyByQuerySingle(mQuery);
+ break;
+ }
+
+ return remoteKeySingle
+ .subscribeOn(Schedulers.io())
+ .flatMap((Function<RemoteKey, Single<MediatorResult>>) remoteKey -> {
+ // We must explicitly check if the page key is `null` when appending,
+ // since `null` is only valid for initial load. If we receive `null`
+ // for APPEND, that means we have reached the end of pagination and
+ // there are no more items to load.
+ if (loadType != REFRESH && remoteKey.getNextKey() == null) {
+ return Single.just(new MediatorResult.Success(true));
+ }
+
+ return mNetworkService.searchUsers(mQuery, remoteKey.getNextKey())
+ .map(response -> {
+ mDatabase.runInTransaction(() -> {
+ if (loadType == LoadType.REFRESH) {
+ mUserDao.deleteByQuery(mQuery);
+ mRemoteKeyDao.deleteByQuery(mQuery);
+ }
+
+ // Update RemoteKey for this query.
+ mRemoteKeyDao.insertOrReplace(
+ new RemoteKey(mQuery, response.getNextKey()));
+
+ // Insert new users into database, which invalidates the current
+ // PagingData, allowing Paging to present the updates in the DB.
+ mUserDao.insertAll(response.getUsers());
+ });
+
+ return new MediatorResult.Success(response.getNextKey() == null);
+ });
+ })
+ .onErrorResumeNext(e -> {
+ if (e instanceof IOException || e instanceof HttpException) {
+ return Single.just(new MediatorResult.Error(e));
+ }
+
+ return Single.error(e);
+ });
+ }
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleBackendService.kt b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleBackendService.kt
index 76f1835..10a2839 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleBackendService.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleBackendService.kt
@@ -17,8 +17,7 @@
package androidx.paging.samples.shared
interface ExampleBackendService {
- fun searchUsers(query: String, nextPageNumber: Int)
- fun searchUsers(query: String, after: String?): SearchUserResponse
+ suspend fun searchUsers(query: String, after: String?): SearchUserResponse
}
class SearchUserResponse(
diff --git a/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleGuavaBackendService.kt b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleGuavaBackendService.kt
new file mode 100644
index 0000000..0d85f7c
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleGuavaBackendService.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 androidx.paging.samples.shared
+
+import com.google.common.util.concurrent.ListenableFuture
+
+interface ExampleGuavaBackendService {
+ fun searchUsers(query: String, after: String?): ListenableFuture<SearchUserResponse>
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleRxBackendService.kt b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleRxBackendService.kt
new file mode 100644
index 0000000..10b3244
--- /dev/null
+++ b/paging/samples/src/main/java/androidx/paging/samples/shared/ExampleRxBackendService.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 androidx.paging.samples.shared
+
+import io.reactivex.Single
+
+interface ExampleRxBackendService {
+ fun searchUsers(query: String, after: String?): Single<SearchUserResponse>
+}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/shared/RemoteKeyDao.kt b/paging/samples/src/main/java/androidx/paging/samples/shared/RemoteKeyDao.kt
index 536abd9..ef13266 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/shared/RemoteKeyDao.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/shared/RemoteKeyDao.kt
@@ -20,15 +20,27 @@
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
+import com.google.common.util.concurrent.ListenableFuture
+import io.reactivex.Single
@Dao
interface RemoteKeyDao {
+ // Normally suspend when using Kotlin Coroutines, but sync version allows this Dao to be used
+ // in both Java and Kotlin samples.
@Insert(onConflict = OnConflictStrategy.REPLACE)
- suspend fun insertOrReplace(remoteKey: RemoteKey)
+ fun insertOrReplace(remoteKey: RemoteKey)
@Query("SELECT * FROM remote_keys WHERE label = :query")
- suspend fun remoteKeyByQuery(query: String): RemoteKey
+ fun remoteKeyByQuery(query: String): RemoteKey
+ @Query("SELECT * FROM remote_keys WHERE label = :query")
+ fun remoteKeyByQuerySingle(query: String): Single<RemoteKey>
+
+ @Query("SELECT * FROM remote_keys WHERE label = :query")
+ fun remoteKeyByQueryFuture(query: String): ListenableFuture<RemoteKey>
+
+ // Normally suspend when using Kotlin Coroutines, but sync version allows this Dao to be used
+ // in both Java and Kotlin samples.
@Query("DELETE FROM remote_keys WHERE label = :query")
- suspend fun deleteByQuery(query: String)
+ fun deleteByQuery(query: String)
}
diff --git a/paging/samples/src/main/java/androidx/paging/samples/shared/UserDao.kt b/paging/samples/src/main/java/androidx/paging/samples/shared/UserDao.kt
index ed59e743..b3b5985 100644
--- a/paging/samples/src/main/java/androidx/paging/samples/shared/UserDao.kt
+++ b/paging/samples/src/main/java/androidx/paging/samples/shared/UserDao.kt
@@ -24,11 +24,15 @@
@Dao
interface UserDao {
+ // Normally suspend when using Kotlin Coroutines, but sync version allows this Dao to be used
+ // in both Java and Kotlin samples.
@Insert(onConflict = OnConflictStrategy.REPLACE)
- suspend fun insertAll(users: List<User>)
+ fun insertAll(users: List<User>)
fun pagingSource(): PagingSource<Int, User>
+ // Normally suspend when using Kotlin Coroutines, but sync version allows this Dao to be used
+ // in both Java and Kotlin samples.
@Query("DELETE FROM users WHERE label = :query")
- suspend fun deleteByQuery(query: String)
+ fun deleteByQuery(query: String)
}
\ No newline at end of file
diff --git a/palette/palette/api/api_lint.ignore b/palette/palette/api/api_lint.ignore
index 162d7eb..85f67cb 100644
--- a/palette/palette/api/api_lint.ignore
+++ b/palette/palette/api/api_lint.ignore
@@ -1,8 +1,6 @@
// Baseline format: 1.0
BuilderSetStyle: androidx.palette.graphics.Palette.Builder#generate():
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.palette.graphics.Palette.Builder.generate()
-BuilderSetStyle: androidx.palette.graphics.Palette.Builder#generate(androidx.palette.graphics.Palette.PaletteAsyncListener):
- Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.palette.graphics.Palette.Builder.generate(androidx.palette.graphics.Palette.PaletteAsyncListener)
BuilderSetStyle: androidx.palette.graphics.Palette.Builder#maximumColorCount(int):
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.palette.graphics.Palette.Builder.maximumColorCount(int)
BuilderSetStyle: androidx.palette.graphics.Palette.Builder#resizeBitmapArea(int):
diff --git a/playground-common/playground.properties b/playground-common/playground.properties
index 54c52ea..3d45275 100644
--- a/playground-common/playground.properties
+++ b/playground-common/playground.properties
@@ -40,6 +40,6 @@
# Disable coverage
androidx.coverageEnabled=false
androidx.playground.snapshotBuildId=6543454
-androidx.playground.metalavaBuildId=6535121
+androidx.playground.metalavaBuildId=6604778
androidx.playground.dokkaBuildId=6402791
androidx.studio.type=playground
diff --git a/recyclerview/recyclerview-benchmark/src/androidTest/AndroidManifest.xml b/recyclerview/recyclerview-benchmark/src/androidTest/AndroidManifest.xml
index 96e0fb7..8653650 100644
--- a/recyclerview/recyclerview-benchmark/src/androidTest/AndroidManifest.xml
+++ b/recyclerview/recyclerview-benchmark/src/androidTest/AndroidManifest.xml
@@ -23,6 +23,9 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
<activity
android:name=".RecyclerViewActivity"
android:theme="@style/BenchmarkTheme"/>
diff --git a/room/benchmark/src/androidTest/AndroidManifest.xml b/room/benchmark/src/androidTest/AndroidManifest.xml
index aeadd7c..23bc3af 100644
--- a/room/benchmark/src/androidTest/AndroidManifest.xml
+++ b/room/benchmark/src/androidTest/AndroidManifest.xml
@@ -23,5 +23,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt b/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
index e01dc6d..6e24603 100644
--- a/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
@@ -146,6 +146,14 @@
val COMPLETABLE = ClassName.get("io.reactivex", "Completable")
}
+object RxJava3TypeNames {
+ val FLOWABLE = ClassName.get("io.reactivex.rxjava3.core", "Flowable")
+ val OBSERVABLE = ClassName.get("io.reactivex.rxjava3.core", "Observable")
+ val MAYBE = ClassName.get("io.reactivex.rxjava3.core", "Maybe")
+ val SINGLE = ClassName.get("io.reactivex.rxjava3.core", "Single")
+ val COMPLETABLE = ClassName.get("io.reactivex.rxjava3.core", "Completable")
+}
+
object ReactiveStreamsTypeNames {
val PUBLISHER = ClassName.get("org.reactivestreams", "Publisher")
}
@@ -161,6 +169,14 @@
val RX_EMPTY_RESULT_SET_EXCEPTION = ClassName.get(ROOM_PACKAGE, "EmptyResultSetException")
}
+object RoomRxJava3TypeNames {
+ val RX_ROOM = ClassName.get("$ROOM_PACKAGE.rxjava3", "RxRoom")
+ val RX_ROOM_CREATE_FLOWABLE = "createFlowable"
+ val RX_ROOM_CREATE_OBSERVABLE = "createObservable"
+ val RX_EMPTY_RESULT_SET_EXCEPTION =
+ ClassName.get("$ROOM_PACKAGE.rxjava3", "EmptyResultSetException")
+}
+
object RoomCoroutinesTypeNames {
val COROUTINES_ROOM = ClassName.get(ROOM_PACKAGE, "CoroutinesRoom")
}
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt b/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
index d78b24f..26e89bd 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
@@ -30,7 +30,6 @@
import androidx.room.vo.CustomTypeConverter
import androidx.room.vo.Field
import com.squareup.javapoet.TypeName
-import java.lang.StringBuilder
import javax.lang.model.element.ElementKind
object ProcessorErrors {
@@ -567,6 +566,9 @@
val MISSING_ROOM_RXJAVA2_ARTIFACT = "To use RxJava2 features, you must add `rxjava2`" +
" artifact from Room as a dependency. androidx.room:room-rxjava2:<version>"
+ val MISSING_ROOM_RXJAVA3_ARTIFACT = "To use RxJava3 features, you must add `rxjava3`" +
+ " artifact from Room as a dependency. androidx.room:room-rxjava3:<version>"
+
val MISSING_ROOM_COROUTINE_ARTIFACT = "To use Coroutine features, you must add `ktx`" +
" artifact from Room as a dependency. androidx.room:room-ktx:<version>"
diff --git a/room/compiler/src/main/kotlin/androidx/room/processor/TransactionMethodProcessor.kt b/room/compiler/src/main/kotlin/androidx/room/processor/TransactionMethodProcessor.kt
index 7467f5b..8f987b9 100644
--- a/room/compiler/src/main/kotlin/androidx/room/processor/TransactionMethodProcessor.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/processor/TransactionMethodProcessor.kt
@@ -19,6 +19,7 @@
import androidx.room.ext.GuavaUtilConcurrentTypeNames
import androidx.room.ext.LifecyclesTypeNames
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.ext.findKotlinDefaultImpl
import androidx.room.ext.hasAnyOf
import androidx.room.vo.TransactionMethod
@@ -85,6 +86,11 @@
RxJava2TypeNames.MAYBE,
RxJava2TypeNames.SINGLE,
RxJava2TypeNames.COMPLETABLE,
+ RxJava3TypeNames.FLOWABLE,
+ RxJava3TypeNames.OBSERVABLE,
+ RxJava3TypeNames.MAYBE,
+ RxJava3TypeNames.SINGLE,
+ RxJava3TypeNames.COMPLETABLE,
GuavaUtilConcurrentTypeNames.LISTENABLE_FUTURE)
}
}
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/RxTypes.kt b/room/compiler/src/main/kotlin/androidx/room/solver/RxTypes.kt
index fd9c3b2..9bc4c56 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/RxTypes.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/RxTypes.kt
@@ -17,7 +17,9 @@
package androidx.room.solver
import androidx.room.ext.RoomRxJava2TypeNames
+import androidx.room.ext.RoomRxJava3TypeNames
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.processor.ProcessorErrors
import com.squareup.javapoet.ClassName
@@ -27,6 +29,7 @@
val factoryMethodName: String? = null,
val canBeNull: Boolean = false
) {
+ // RxJava2 types
RX2_FLOWABLE(
version = RxVersion.TWO,
className = RxJava2TypeNames.FLOWABLE,
@@ -44,9 +47,28 @@
canBeNull = true),
RX2_COMPLETABLE(
version = RxVersion.TWO,
- className = RxJava2TypeNames.COMPLETABLE);
+ className = RxJava2TypeNames.COMPLETABLE),
+ // RxJava3 types
+ RX3_FLOWABLE(
+ version = RxVersion.THREE,
+ className = RxJava3TypeNames.FLOWABLE,
+ factoryMethodName = RoomRxJava3TypeNames.RX_ROOM_CREATE_FLOWABLE),
+ RX3_OBSERVABLE(
+ version = RxVersion.THREE,
+ className = RxJava3TypeNames.OBSERVABLE,
+ factoryMethodName = RoomRxJava3TypeNames.RX_ROOM_CREATE_OBSERVABLE),
+ RX3_SINGLE(
+ version = RxVersion.THREE,
+ className = RxJava3TypeNames.SINGLE),
+ RX3_MAYBE(
+ version = RxVersion.THREE,
+ className = RxJava3TypeNames.MAYBE,
+ canBeNull = true),
+ RX3_COMPLETABLE(
+ version = RxVersion.THREE,
+ className = RxJava3TypeNames.COMPLETABLE);
- fun isSingle() = this == RX2_SINGLE
+ fun isSingle() = this == RX2_SINGLE || this == RX3_SINGLE
}
internal enum class RxVersion(
@@ -58,4 +80,8 @@
rxRoomClassName = RoomRxJava2TypeNames.RX_ROOM,
emptyResultExceptionClassName = RoomRxJava2TypeNames.RX_EMPTY_RESULT_SET_EXCEPTION,
missingArtifactMessage = ProcessorErrors.MISSING_ROOM_RXJAVA2_ARTIFACT),
+ THREE(
+ rxRoomClassName = RoomRxJava3TypeNames.RX_ROOM,
+ emptyResultExceptionClassName = RoomRxJava3TypeNames.RX_EMPTY_RESULT_SET_EXCEPTION,
+ missingArtifactMessage = ProcessorErrors.MISSING_ROOM_RXJAVA3_ARTIFACT);
}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxCallableQueryResultBinderProvider.kt b/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxCallableQueryResultBinderProvider.kt
index 9cc4717..5808a3f 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxCallableQueryResultBinderProvider.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxCallableQueryResultBinderProvider.kt
@@ -55,7 +55,9 @@
companion object {
fun getAll(context: Context) = listOf(
RxType.RX2_SINGLE,
- RxType.RX2_MAYBE
+ RxType.RX2_MAYBE,
+ RxType.RX3_SINGLE,
+ RxType.RX3_MAYBE
).map { RxCallableQueryResultBinderProvider(context, it) }
}
}
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxQueryResultBinderProvider.kt b/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxQueryResultBinderProvider.kt
index 7861ec7..a96b7d8 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxQueryResultBinderProvider.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/binderprovider/RxQueryResultBinderProvider.kt
@@ -71,7 +71,9 @@
companion object {
fun getAll(context: Context) = listOf(
RxType.RX2_FLOWABLE,
- RxType.RX2_OBSERVABLE
+ RxType.RX2_OBSERVABLE,
+ RxType.RX3_FLOWABLE,
+ RxType.RX3_OBSERVABLE
).map { RxQueryResultBinderProvider(context, it) }
}
}
\ No newline at end of file
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/prepared/binderprovider/RxPreparedQueryResultBinderProvider.kt b/room/compiler/src/main/kotlin/androidx/room/solver/prepared/binderprovider/RxPreparedQueryResultBinderProvider.kt
index 57cef99..c1ade4a 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/prepared/binderprovider/RxPreparedQueryResultBinderProvider.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/prepared/binderprovider/RxPreparedQueryResultBinderProvider.kt
@@ -17,7 +17,6 @@
package androidx.room.solver.prepared.binderprovider
import androidx.room.ext.L
-import androidx.room.ext.RxJava2TypeNames
import androidx.room.ext.T
import androidx.room.ext.typeName
import androidx.room.parser.ParsedQuery
@@ -65,7 +64,10 @@
fun getAll(context: Context) = listOf(
RxPreparedQueryResultBinderProvider(context, RxType.RX2_SINGLE),
RxPreparedQueryResultBinderProvider(context, RxType.RX2_MAYBE),
- RxCompletablePreparedQueryResultBinderProvider(context, RxType.RX2_COMPLETABLE)
+ RxCompletablePreparedQueryResultBinderProvider(context, RxType.RX2_COMPLETABLE),
+ RxPreparedQueryResultBinderProvider(context, RxType.RX3_SINGLE),
+ RxPreparedQueryResultBinderProvider(context, RxType.RX3_MAYBE),
+ RxCompletablePreparedQueryResultBinderProvider(context, RxType.RX3_COMPLETABLE)
)
}
}
@@ -77,7 +79,7 @@
private val completableType: TypeMirror? by lazy {
context.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.COMPLETABLE.toString())?.asType()
+ .getTypeElement(rxType.className.toString())?.asType()
}
override fun matches(declared: DeclaredType): Boolean {
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableDeleteOrUpdateMethodBinderProvider.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableDeleteOrUpdateMethodBinderProvider.kt
index 67bb1f8..0a9518c 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableDeleteOrUpdateMethodBinderProvider.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableDeleteOrUpdateMethodBinderProvider.kt
@@ -17,7 +17,6 @@
package androidx.room.solver.shortcut.binderprovider
import androidx.room.ext.L
-import androidx.room.ext.RxJava2TypeNames
import androidx.room.ext.T
import androidx.room.ext.typeName
import androidx.room.processor.Context
@@ -61,7 +60,10 @@
fun getAll(context: Context) = listOf(
RxCallableDeleteOrUpdateMethodBinderProvider(context, RxType.RX2_SINGLE),
RxCallableDeleteOrUpdateMethodBinderProvider(context, RxType.RX2_MAYBE),
- RxCompletableDeleteOrUpdateMethodBinderProvider(context, RxType.RX2_COMPLETABLE)
+ RxCompletableDeleteOrUpdateMethodBinderProvider(context, RxType.RX2_COMPLETABLE),
+ RxCallableDeleteOrUpdateMethodBinderProvider(context, RxType.RX3_SINGLE),
+ RxCallableDeleteOrUpdateMethodBinderProvider(context, RxType.RX3_MAYBE),
+ RxCompletableDeleteOrUpdateMethodBinderProvider(context, RxType.RX3_COMPLETABLE)
)
}
}
@@ -73,7 +75,7 @@
private val completableTypeMirror: TypeMirror? by lazy {
context.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.COMPLETABLE.toString())?.asType()
+ .getTypeElement(rxType.className.toString())?.asType()
}
/**
diff --git a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
index 14c2ead..923a748 100644
--- a/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
+++ b/room/compiler/src/main/kotlin/androidx/room/solver/shortcut/binderprovider/RxCallableInsertMethodBinderProvider.kt
@@ -64,7 +64,10 @@
fun getAll(context: Context) = listOf(
RxCallableInsertMethodBinderProvider(context, RxType.RX2_SINGLE),
RxCallableInsertMethodBinderProvider(context, RxType.RX2_MAYBE),
- RxCompletableInsertMethodBinderProvider(context, RxType.RX2_COMPLETABLE)
+ RxCompletableInsertMethodBinderProvider(context, RxType.RX2_COMPLETABLE),
+ RxCallableInsertMethodBinderProvider(context, RxType.RX3_SINGLE),
+ RxCallableInsertMethodBinderProvider(context, RxType.RX3_MAYBE),
+ RxCompletableInsertMethodBinderProvider(context, RxType.RX3_COMPLETABLE)
)
}
}
diff --git a/room/compiler/src/test/data/common/input/Rx3Room.java b/room/compiler/src/test/data/common/input/Rx3Room.java
new file mode 100644
index 0000000..5609338
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/Rx3Room.java
@@ -0,0 +1,5 @@
+// mock rx3 helper
+package androidx.room.rxjava3;
+
+class RxRoom {
+}
diff --git a/room/compiler/src/test/data/common/input/rxjava3/Completable.java b/room/compiler/src/test/data/common/input/rxjava3/Completable.java
new file mode 100644
index 0000000..bce2a20
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/rxjava3/Completable.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 io.reactivex.rxjava3.core;
+
+import java.util.concurrent.Callable;
+
+public abstract class Completable {
+ public static Completable fromCallable(Callable callable) {return null;}
+}
\ No newline at end of file
diff --git a/room/compiler/src/test/data/common/input/rxjava3/Flowable.java b/room/compiler/src/test/data/common/input/rxjava3/Flowable.java
new file mode 100644
index 0000000..091f2ad
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/rxjava3/Flowable.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 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 io.reactivex.rxjava3.core;
+
+import org.reactivestreams.Publisher;
+
+public abstract class Flowable<T> implements Publisher<T> {
+}
\ No newline at end of file
diff --git a/room/compiler/src/test/data/common/input/rxjava3/Maybe.java b/room/compiler/src/test/data/common/input/rxjava3/Maybe.java
new file mode 100644
index 0000000..c11fdc2
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/rxjava3/Maybe.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 io.reactivex.rxjava3.core;
+
+import java.util.concurrent.Callable;
+
+public abstract class Maybe<T> {
+ public static <T> Maybe<T> fromCallable(Callable callable) {return null;}
+}
\ No newline at end of file
diff --git a/room/compiler/src/test/data/common/input/rxjava3/Observable.java b/room/compiler/src/test/data/common/input/rxjava3/Observable.java
new file mode 100644
index 0000000..2e8696a
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/rxjava3/Observable.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 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 io.reactivex.rxjava3.core;
+
+public abstract class Observable<T> {
+}
\ No newline at end of file
diff --git a/room/compiler/src/test/data/common/input/rxjava3/Single.java b/room/compiler/src/test/data/common/input/rxjava3/Single.java
new file mode 100644
index 0000000..9ddcee9
--- /dev/null
+++ b/room/compiler/src/test/data/common/input/rxjava3/Single.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright 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 io.reactivex.rxjava3.core;
+
+import java.util.concurrent.Callable;
+
+public abstract class Single<T> {
+ public static <T> Single<T> fromCallable(Callable callable) {return null;}
+}
\ No newline at end of file
diff --git a/room/compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt b/room/compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
index c230f81..3c76e8d 100644
--- a/room/compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/processor/InsertionMethodProcessorTest.kt
@@ -22,6 +22,7 @@
import androidx.room.OnConflictStrategy
import androidx.room.ext.CommonTypeNames
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.ext.typeName
import androidx.room.solver.shortcut.result.InsertMethodAdapter
import androidx.room.testing.TestInvocation
@@ -413,7 +414,17 @@
Pair("${RxJava2TypeNames.MAYBE}<Long>",
InsertMethodAdapter.InsertionType.INSERT_SINGLE_ID),
Pair("${RxJava2TypeNames.MAYBE}<List<Long>>",
- InsertMethodAdapter.InsertionType.INSERT_ID_LIST)
+ InsertMethodAdapter.InsertionType.INSERT_ID_LIST),
+ Pair(RxJava3TypeNames.COMPLETABLE,
+ InsertMethodAdapter.InsertionType.INSERT_VOID_OBJECT),
+ Pair("${RxJava3TypeNames.SINGLE}<Long>",
+ InsertMethodAdapter.InsertionType.INSERT_SINGLE_ID),
+ Pair("${RxJava3TypeNames.SINGLE}<List<Long>>",
+ InsertMethodAdapter.InsertionType.INSERT_ID_LIST),
+ Pair("${RxJava3TypeNames.MAYBE}<Long>",
+ InsertMethodAdapter.InsertionType.INSERT_SINGLE_ID),
+ Pair("${RxJava3TypeNames.MAYBE}<List<Long>>",
+ InsertMethodAdapter.InsertionType.INSERT_ID_LIST)
).forEach { pair ->
val dots = if (pair.second in setOf(
InsertMethodAdapter.InsertionType.INSERT_ID_LIST,
@@ -740,8 +751,9 @@
return assertAbout(JavaSourcesSubjectFactory.javaSources())
.that(listOf(JavaFileObjects.forSourceString("foo.bar.MyClass",
DAO_PREFIX + input.joinToString("\n") + DAO_SUFFIX),
- COMMON.USER, COMMON.BOOK, COMMON.NOT_AN_ENTITY,
- COMMON.COMPLETABLE, COMMON.MAYBE, COMMON.SINGLE) + additionalJFOs
+ COMMON.USER, COMMON.BOOK, COMMON.NOT_AN_ENTITY, COMMON.RX2_COMPLETABLE,
+ COMMON.RX2_MAYBE, COMMON.RX2_SINGLE, COMMON.RX3_COMPLETABLE,
+ COMMON.RX3_MAYBE, COMMON.RX3_SINGLE) + additionalJFOs
)
.processedWith(TestProcessor.builder()
.forAnnotations(Insert::class, Dao::class)
diff --git a/room/compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt b/room/compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt
index f82a516..2a18a51 100644
--- a/room/compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/processor/ShortcutMethodProcessorTest.kt
@@ -21,6 +21,7 @@
import androidx.room.ext.CommonTypeNames
import androidx.room.ext.GuavaUtilConcurrentTypeNames
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.ext.typeName
import androidx.room.testing.TestInvocation
import androidx.room.testing.TestProcessor
@@ -141,6 +142,9 @@
"${RxJava2TypeNames.SINGLE}<Integer>",
"${RxJava2TypeNames.MAYBE}<Integer>",
RxJava2TypeNames.COMPLETABLE,
+ "${RxJava3TypeNames.SINGLE}<Integer>",
+ "${RxJava3TypeNames.MAYBE}<Integer>",
+ RxJava3TypeNames.COMPLETABLE,
"${GuavaUtilConcurrentTypeNames.LISTENABLE_FUTURE}<Integer>"
).forEach { type ->
singleShortcutMethod(
@@ -244,6 +248,9 @@
"${RxJava2TypeNames.SINGLE}<Integer>",
"${RxJava2TypeNames.MAYBE}<Integer>",
RxJava2TypeNames.COMPLETABLE,
+ "${RxJava3TypeNames.SINGLE}<Integer>",
+ "${RxJava3TypeNames.MAYBE}<Integer>",
+ RxJava3TypeNames.COMPLETABLE,
"${GuavaUtilConcurrentTypeNames.LISTENABLE_FUTURE}<Integer>"
).forEach { type ->
singleShortcutMethod(
@@ -453,8 +460,10 @@
return Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
.that(listOf(JavaFileObjects.forSourceString("foo.bar.MyClass",
DAO_PREFIX + input.joinToString("\n") + DAO_SUFFIX
- ), COMMON.USER, COMMON.BOOK, COMMON.NOT_AN_ENTITY, COMMON.COMPLETABLE, COMMON.MAYBE,
- COMMON.SINGLE, COMMON.LISTENABLE_FUTURE, COMMON.GUAVA_ROOM) + additionalJFOs)
+ ), COMMON.USER, COMMON.BOOK, COMMON.NOT_AN_ENTITY, COMMON.RX2_COMPLETABLE,
+ COMMON.RX2_MAYBE, COMMON.RX2_SINGLE, COMMON.RX3_COMPLETABLE,
+ COMMON.RX3_MAYBE, COMMON.RX3_SINGLE, COMMON.LISTENABLE_FUTURE,
+ COMMON.GUAVA_ROOM) + additionalJFOs)
.processedWith(TestProcessor.builder()
.forAnnotations(annotation, Dao::class)
.nextRunHandler { invocation ->
diff --git a/room/compiler/src/test/kotlin/androidx/room/processor/TransactionMethodProcessorTest.kt b/room/compiler/src/test/kotlin/androidx/room/processor/TransactionMethodProcessorTest.kt
index c42a7cc..d3f1046 100644
--- a/room/compiler/src/test/kotlin/androidx/room/processor/TransactionMethodProcessorTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/processor/TransactionMethodProcessorTest.kt
@@ -43,7 +43,6 @@
import androidx.room.*;
import java.util.*;
import androidx.lifecycle.*;
- import io.reactivex.*;
import com.google.common.util.concurrent.*;
@Dao
abstract class MyClass {
@@ -101,11 +100,11 @@
}
@Test
- fun deferredReturnType_flowable() {
+ fun deferredReturnType_rx2_flowable() {
singleTransactionMethod(
"""
@Transaction
- public Flowable<String> doInTransaction(int param) { return null; }
+ public io.reactivex.Flowable<String> doInTransaction(int param) { return null; }
""") { transaction, _ ->
assertThat(transaction.name, `is`("doInTransaction"))
}.failsToCompile()
@@ -117,11 +116,29 @@
}
@Test
- fun deferredReturnType_completable() {
+ fun deferredReturnType_rx3_flowable() {
singleTransactionMethod(
"""
@Transaction
- public Completable doInTransaction(int param) { return null; }
+ public io.reactivex.rxjava3.core.Flowable<String> doInTransaction(int param) {
+ return null;
+ }
+ """) { transaction, _ ->
+ assertThat(transaction.name, `is`("doInTransaction"))
+ }.failsToCompile()
+ .withErrorContaining(
+ ProcessorErrors.transactionMethodAsync(
+ "io.reactivex.rxjava3.core.Flowable"
+ )
+ )
+ }
+
+ @Test
+ fun deferredReturnType_rx2_completable() {
+ singleTransactionMethod(
+ """
+ @Transaction
+ public io.reactivex.Completable doInTransaction(int param) { return null; }
""") { transaction, _ ->
assertThat(transaction.name, `is`("doInTransaction"))
}.failsToCompile()
@@ -133,11 +150,29 @@
}
@Test
- fun deferredReturnType_single() {
+ fun deferredReturnType_rx3_completable() {
singleTransactionMethod(
"""
@Transaction
- public Single<String> doInTransaction(int param) { return null; }
+ public io.reactivex.rxjava3.core.Completable doInTransaction(int param) {
+ return null;
+ }
+ """) { transaction, _ ->
+ assertThat(transaction.name, `is`("doInTransaction"))
+ }.failsToCompile()
+ .withErrorContaining(
+ ProcessorErrors.transactionMethodAsync(
+ "io.reactivex.rxjava3.core.Completable"
+ )
+ )
+ }
+
+ @Test
+ fun deferredReturnType_rx2_single() {
+ singleTransactionMethod(
+ """
+ @Transaction
+ public io.reactivex.Single<String> doInTransaction(int param) { return null; }
""") { transaction, _ ->
assertThat(transaction.name, `is`("doInTransaction"))
}.failsToCompile()
@@ -149,6 +184,24 @@
}
@Test
+ fun deferredReturnType_rx3_single() {
+ singleTransactionMethod(
+ """
+ @Transaction
+ public io.reactivex.rxjava3.core.Single<String> doInTransaction(int param) {
+ return null;
+ }
+ """) { transaction, _ ->
+ assertThat(transaction.name, `is`("doInTransaction"))
+ }.failsToCompile()
+ .withErrorContaining(
+ ProcessorErrors.transactionMethodAsync(
+ "io.reactivex.rxjava3.core.Single"
+ )
+ )
+ }
+
+ @Test
fun deferredReturnType_listenableFuture() {
singleTransactionMethod(
"""
@@ -175,8 +228,9 @@
.that(listOf(JavaFileObjects.forSourceString("foo.bar.MyClass",
TransactionMethodProcessorTest.DAO_PREFIX + input.joinToString("\n") +
TransactionMethodProcessorTest.DAO_SUFFIX
- ), COMMON.LIVE_DATA, COMMON.FLOWABLE, COMMON.PUBLISHER, COMMON.COMPLETABLE,
- COMMON.SINGLE, COMMON.LISTENABLE_FUTURE))
+ ), COMMON.LIVE_DATA, COMMON.RX2_FLOWABLE, COMMON.PUBLISHER, COMMON.RX2_COMPLETABLE,
+ COMMON.RX2_SINGLE, COMMON.RX3_FLOWABLE, COMMON.RX3_COMPLETABLE,
+ COMMON.RX3_SINGLE, COMMON.LISTENABLE_FUTURE))
.processedWith(TestProcessor.builder()
.forAnnotations(Transaction::class, Dao::class)
.nextRunHandler { invocation ->
diff --git a/room/compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt b/room/compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
index 6c79762..d7145df 100644
--- a/room/compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
@@ -27,6 +27,7 @@
import androidx.room.ext.ReactiveStreamsTypeNames
import androidx.room.ext.RoomTypeNames.STRING_UTIL
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.ext.T
import androidx.room.ext.typeName
import androidx.room.parser.SQLTypeAffinity
@@ -232,8 +233,8 @@
}
@Test
- fun testMissingRxRoom() {
- simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, COMMON.FLOWABLE)) { invocation ->
+ fun testMissingRx2Room() {
+ simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, COMMON.RX2_FLOWABLE)) { invocation ->
val publisherElement = invocation.processingEnv.elementUtils
.getTypeElement(ReactiveStreamsTypeNames.PUBLISHER.toString())
assertThat(publisherElement, notNullValue())
@@ -245,87 +246,130 @@
}
@Test
- fun testFindPublisher() {
- simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, COMMON.FLOWABLE, COMMON.RX2_ROOM)) {
- invocation ->
- val publisher = invocation.processingEnv.elementUtils
- .getTypeElement(ReactiveStreamsTypeNames.PUBLISHER.toString())
- assertThat(publisher, notNullValue())
+ fun testMissingRx3Room() {
+ simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, COMMON.RX3_FLOWABLE)) { invocation ->
+ val publisherElement = invocation.processingEnv.elementUtils
+ .getTypeElement(ReactiveStreamsTypeNames.PUBLISHER.toString())
+ assertThat(publisherElement, notNullValue())
assertThat(
RxQueryResultBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(publisher.asType()))
+ it.matches(MoreTypes.asDeclared(publisherElement.asType()))
}, `is`(true))
- }.compilesWithoutError()
+ }.failsToCompile().withErrorContaining(ProcessorErrors.MISSING_ROOM_RXJAVA3_ARTIFACT)
+ }
+
+ @Test
+ fun testFindPublisher() {
+ listOf(
+ COMMON.RX2_FLOWABLE to COMMON.RX2_ROOM,
+ COMMON.RX3_FLOWABLE to COMMON.RX3_ROOM
+ ).forEach { (rxTypeSrc, rxRoomSrc) ->
+ simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, rxTypeSrc, rxRoomSrc)) {
+ invocation ->
+ val publisher = invocation.processingEnv.elementUtils
+ .getTypeElement(ReactiveStreamsTypeNames.PUBLISHER.toString())
+ assertThat(publisher, notNullValue())
+ assertThat(
+ RxQueryResultBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(publisher.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
fun testFindFlowable() {
- simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, COMMON.FLOWABLE, COMMON.RX2_ROOM)) {
- invocation ->
- val flowable = invocation.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.FLOWABLE.toString())
- assertThat(flowable, notNullValue())
- assertThat(
- RxQueryResultBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(flowable.asType()))
- }, `is`(true))
- }.compilesWithoutError()
+ listOf(
+ Triple(COMMON.RX2_FLOWABLE, COMMON.RX2_ROOM, RxJava2TypeNames.FLOWABLE),
+ Triple(COMMON.RX3_FLOWABLE, COMMON.RX3_ROOM, RxJava3TypeNames.FLOWABLE)
+ ).forEach { (rxTypeSrc, rxRoomSrc, rxTypeClassName) ->
+ simpleRun(jfos = *arrayOf(COMMON.PUBLISHER, rxTypeSrc, rxRoomSrc)) {
+ invocation ->
+ val flowable = invocation.processingEnv.elementUtils
+ .getTypeElement(rxTypeClassName.toString())
+ assertThat(flowable, notNullValue())
+ assertThat(
+ RxQueryResultBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(flowable.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
fun testFindObservable() {
- simpleRun(jfos = *arrayOf(COMMON.OBSERVABLE, COMMON.RX2_ROOM)) {
- invocation ->
- val observable = invocation.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.OBSERVABLE.toString())
- assertThat(observable, notNullValue())
- assertThat(
- RxQueryResultBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(observable.asType()))
- }, `is`(true))
- }.compilesWithoutError()
+ listOf(
+ Triple(COMMON.RX2_OBSERVABLE, COMMON.RX2_ROOM, RxJava2TypeNames.OBSERVABLE),
+ Triple(COMMON.RX3_OBSERVABLE, COMMON.RX3_ROOM, RxJava3TypeNames.OBSERVABLE)
+ ).forEach { (rxTypeSrc, rxRoomSrc, rxTypeClassName) ->
+ simpleRun(jfos = *arrayOf(rxTypeSrc, rxRoomSrc)) {
+ invocation ->
+ val observable = invocation.processingEnv.elementUtils
+ .getTypeElement(rxTypeClassName.toString())
+ assertThat(observable, notNullValue())
+ assertThat(
+ RxQueryResultBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(observable.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
fun testFindInsertSingle() {
- simpleRun(jfos = *arrayOf(COMMON.SINGLE)) {
- invocation ->
- val single = invocation.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.SINGLE.toString())
- assertThat(single, notNullValue())
- assertThat(
- RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(single.asType()))
- }, `is`(true))
- }.compilesWithoutError()
+ listOf(
+ Triple(COMMON.RX2_SINGLE, COMMON.RX2_ROOM, RxJava2TypeNames.SINGLE),
+ Triple(COMMON.RX3_SINGLE, COMMON.RX3_ROOM, RxJava3TypeNames.SINGLE)
+ ).forEach { (rxTypeSrc, _, rxTypeClassName) ->
+ simpleRun(jfos = *arrayOf(rxTypeSrc)) {
+ invocation ->
+ val single = invocation.processingEnv.elementUtils
+ .getTypeElement(rxTypeClassName.toString())
+ assertThat(single, notNullValue())
+ assertThat(
+ RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(single.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
fun testFindInsertMaybe() {
- simpleRun(jfos = *arrayOf(COMMON.MAYBE)) {
- invocation ->
- val maybe = invocation.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.MAYBE.toString())
- assertThat(maybe, notNullValue())
- assertThat(
- RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(maybe.asType()))
- }, `is`(true))
- }.compilesWithoutError()
+ listOf(
+ Triple(COMMON.RX2_MAYBE, COMMON.RX2_ROOM, RxJava2TypeNames.MAYBE),
+ Triple(COMMON.RX3_MAYBE, COMMON.RX3_ROOM, RxJava3TypeNames.MAYBE)
+ ).forEach { (rxTypeSrc, _, rxTypeClassName) ->
+ simpleRun(jfos = *arrayOf(rxTypeSrc)) {
+ invocation ->
+ val maybe = invocation.processingEnv.elementUtils
+ .getTypeElement(rxTypeClassName.toString())
+ assertThat(maybe, notNullValue())
+ assertThat(
+ RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(maybe.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
fun testFindInsertCompletable() {
- simpleRun(jfos = *arrayOf(COMMON.COMPLETABLE)) {
- invocation ->
- val completable = invocation.processingEnv.elementUtils
- .getTypeElement(RxJava2TypeNames.COMPLETABLE.toString())
- assertThat(completable, notNullValue())
- assertThat(
- RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
- it.matches(MoreTypes.asDeclared(completable.asType()))
- }, `is`(true))
- }.compilesWithoutError()
+ listOf(
+ Triple(COMMON.RX2_COMPLETABLE, COMMON.RX2_ROOM, RxJava2TypeNames.COMPLETABLE),
+ Triple(COMMON.RX3_COMPLETABLE, COMMON.RX3_ROOM, RxJava3TypeNames.COMPLETABLE)
+ ).forEach { (rxTypeSrc, _, rxTypeClassName) ->
+ simpleRun(jfos = *arrayOf(rxTypeSrc)) {
+ invocation ->
+ val completable = invocation.processingEnv.elementUtils
+ .getTypeElement(rxTypeClassName.toString())
+ assertThat(completable, notNullValue())
+ assertThat(
+ RxCallableInsertMethodBinderProvider.getAll(invocation.context).any {
+ it.matches(MoreTypes.asDeclared(completable.asType()))
+ }, `is`(true))
+ }.compilesWithoutError()
+ }
}
@Test
@@ -342,7 +386,7 @@
@Test
fun testFindDeleteOrUpdateSingle() {
- simpleRun(jfos = *arrayOf(COMMON.SINGLE)) {
+ simpleRun(jfos = *arrayOf(COMMON.RX2_SINGLE)) {
invocation ->
val single = invocation.processingEnv.elementUtils
.getTypeElement(RxJava2TypeNames.SINGLE.toString())
@@ -356,7 +400,7 @@
@Test
fun testFindDeleteOrUpdateMaybe() {
- simpleRun(jfos = *arrayOf(COMMON.MAYBE)) {
+ simpleRun(jfos = *arrayOf(COMMON.RX2_MAYBE)) {
invocation ->
val maybe = invocation.processingEnv.elementUtils
.getTypeElement(RxJava2TypeNames.MAYBE.toString())
@@ -370,7 +414,7 @@
@Test
fun testFindDeleteOrUpdateCompletable() {
- simpleRun(jfos = *arrayOf(COMMON.COMPLETABLE)) {
+ simpleRun(jfos = *arrayOf(COMMON.RX2_COMPLETABLE)) {
invocation ->
val completable = invocation.processingEnv.elementUtils
.getTypeElement(RxJava2TypeNames.COMPLETABLE.toString())
diff --git a/room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt b/room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt
index 45c259d..b50ec13 100644
--- a/room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/testing/test_util.kt
@@ -23,7 +23,9 @@
import androidx.room.ext.ReactiveStreamsTypeNames
import androidx.room.ext.RoomGuavaTypeNames
import androidx.room.ext.RoomRxJava2TypeNames
+import androidx.room.ext.RoomRxJava3TypeNames
import androidx.room.ext.RxJava2TypeNames
+import androidx.room.ext.RxJava3TypeNames
import androidx.room.processor.DatabaseViewProcessor
import androidx.room.processor.TableEntityProcessor
import androidx.room.solver.CodeGenScope
@@ -100,23 +102,23 @@
loadJavaCode("common/input/reactivestreams/Publisher.java",
ReactiveStreamsTypeNames.PUBLISHER.toString())
}
- val FLOWABLE by lazy {
+ val RX2_FLOWABLE by lazy {
loadJavaCode("common/input/rxjava2/Flowable.java",
RxJava2TypeNames.FLOWABLE.toString())
}
- val OBSERVABLE by lazy {
+ val RX2_OBSERVABLE by lazy {
loadJavaCode("common/input/rxjava2/Observable.java",
RxJava2TypeNames.OBSERVABLE.toString())
}
- val SINGLE by lazy {
+ val RX2_SINGLE by lazy {
loadJavaCode("common/input/rxjava2/Single.java",
RxJava2TypeNames.SINGLE.toString())
}
- val MAYBE by lazy {
+ val RX2_MAYBE by lazy {
loadJavaCode("common/input/rxjava2/Maybe.java",
RxJava2TypeNames.MAYBE.toString())
}
- val COMPLETABLE by lazy {
+ val RX2_COMPLETABLE by lazy {
loadJavaCode("common/input/rxjava2/Completable.java",
RxJava2TypeNames.COMPLETABLE.toString())
}
@@ -125,6 +127,31 @@
loadJavaCode("common/input/Rx2Room.java", RoomRxJava2TypeNames.RX_ROOM.toString())
}
+ val RX3_FLOWABLE by lazy {
+ loadJavaCode("common/input/rxjava3/Flowable.java",
+ RxJava3TypeNames.FLOWABLE.toString())
+ }
+ val RX3_OBSERVABLE by lazy {
+ loadJavaCode("common/input/rxjava3/Observable.java",
+ RxJava3TypeNames.OBSERVABLE.toString())
+ }
+ val RX3_SINGLE by lazy {
+ loadJavaCode("common/input/rxjava3/Single.java",
+ RxJava3TypeNames.SINGLE.toString())
+ }
+ val RX3_MAYBE by lazy {
+ loadJavaCode("common/input/rxjava3/Maybe.java",
+ RxJava3TypeNames.MAYBE.toString())
+ }
+ val RX3_COMPLETABLE by lazy {
+ loadJavaCode("common/input/rxjava3/Completable.java",
+ RxJava3TypeNames.COMPLETABLE.toString())
+ }
+
+ val RX3_ROOM by lazy {
+ loadJavaCode("common/input/Rx3Room.java", RoomRxJava3TypeNames.RX_ROOM.toString())
+ }
+
val DATA_SOURCE_FACTORY by lazy {
loadJavaCode("common/input/DataSource.java", "androidx.paging.DataSource")
}
diff --git a/room/compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt b/room/compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
index 4eb97e5..7d247b5 100644
--- a/room/compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
+++ b/room/compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
@@ -75,10 +75,10 @@
private fun singleDao(vararg jfo: JavaFileObject): CompileTester {
return Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
.that(jfo.toList() + COMMON.USER + COMMON.MULTI_PKEY_ENTITY + COMMON.BOOK +
- COMMON.LIVE_DATA + COMMON.COMPUTABLE_LIVE_DATA + COMMON.SINGLE +
- COMMON.MAYBE + COMMON.COMPLETABLE + COMMON.USER_SUMMARY + COMMON.RX2_ROOM +
- COMMON.PARENT + COMMON.CHILD1 + COMMON.CHILD2 + COMMON.INFO +
- COMMON.LISTENABLE_FUTURE + COMMON.GUAVA_ROOM)
+ COMMON.LIVE_DATA + COMMON.COMPUTABLE_LIVE_DATA + COMMON.RX2_SINGLE +
+ COMMON.RX2_MAYBE + COMMON.RX2_COMPLETABLE + COMMON.USER_SUMMARY +
+ COMMON.RX2_ROOM + COMMON.PARENT + COMMON.CHILD1 + COMMON.CHILD2 +
+ COMMON.INFO + COMMON.LISTENABLE_FUTURE + COMMON.GUAVA_ROOM)
.processedWith(TestProcessor.builder()
.forAnnotations(androidx.room.Dao::class)
.nextRunHandler { invocation ->
diff --git a/room/integration-tests/testapp/build.gradle b/room/integration-tests/testapp/build.gradle
index a664d56..cfe99c8 100644
--- a/room/integration-tests/testapp/build.gradle
+++ b/room/integration-tests/testapp/build.gradle
@@ -92,6 +92,7 @@
androidTestImplementation(project(":room:room-testing"))
androidTestImplementation(project(":room:room-rxjava2"))
+ androidTestImplementation(project(":room:room-rxjava3"))
androidTestImplementation(project(":room:room-guava"))
androidTestImplementation("androidx.arch.core:core-testing:2.0.1")
androidTestImplementation(projectOrArtifact(":paging:paging-runtime"))
@@ -103,6 +104,7 @@
androidTestImplementation(FINDBUGS)
androidTestImplementation(GUAVA_ANDROID)
androidTestImplementation(RX_JAVA)
+ androidTestImplementation(RX_JAVA3)
androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
androidTestImplementation(ANDROIDX_TEST_CORE)
androidTestImplementation(ANDROIDX_TEST_RUNNER)
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java
index b6b2799..b073dce 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/MailDao.java
@@ -24,8 +24,6 @@
import java.util.List;
-import io.reactivex.Flowable;
-
@Dao
public interface MailDao {
@@ -48,7 +46,10 @@
List<String> getMailBodySnippets(String searchQuery);
@Query("SELECT rowId, * FROM mail")
- Flowable<List<Mail>> getFlowableMail();
+ io.reactivex.Flowable<List<Mail>> rx2_getFlowableMail();
+
+ @Query("SELECT rowId, * FROM mail")
+ io.reactivex.rxjava3.core.Flowable<List<Mail>> rx3_getFlowableMail();
@Query("SELECT rowId, * FROM mail")
LiveData<List<Mail>> getLiveDataMail();
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
index 040db8a..92a810a 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
@@ -52,8 +52,6 @@
import java.util.concurrent.Callable;
import io.reactivex.Completable;
-import io.reactivex.Flowable;
-import io.reactivex.Maybe;
import io.reactivex.Observable;
import io.reactivex.Single;
@@ -184,25 +182,46 @@
public abstract Cursor findUsersAsCursor(int... ids);
@Query("select * from user where mId = :id")
- public abstract Flowable<User> flowableUserById(int id);
+ public abstract io.reactivex.Flowable<User> rx2_flowableUserById(int id);
@Query("select * from user where mId = :id")
- public abstract Observable<User> observableUserById(int id);
+ public abstract io.reactivex.rxjava3.core.Flowable<User> rx3_flowableUserById(int id);
@Query("select * from user where mId = :id")
- public abstract Maybe<User> maybeUserById(int id);
+ public abstract io.reactivex.Observable<User> rx2_observableUserById(int id);
+
+ @Query("select * from user where mId = :id")
+ public abstract io.reactivex.rxjava3.core.Observable<User> rx3_observableUserById(int id);
+
+ @Query("select * from user where mId = :id")
+ public abstract io.reactivex.Maybe<User> rx2_maybeUserById(int id);
+
+ @Query("select * from user where mId = :id")
+ public abstract io.reactivex.rxjava3.core.Maybe<User> rx3_maybeUserById(int id);
@Query("select * from user where mId IN (:ids)")
- public abstract Maybe<List<User>> maybeUsersByIds(int... ids);
-
- @Query("select * from user where mId = :id")
- public abstract Single<User> singleUserById(int id);
+ public abstract io.reactivex.Maybe<List<User>> rx2_maybeUsersByIds(int... ids);
@Query("select * from user where mId IN (:ids)")
- public abstract Single<List<User>> singleUsersByIds(int... ids);
+ public abstract io.reactivex.rxjava3.core.Maybe<List<User>> rx3_maybeUsersByIds(int... ids);
+
+ @Query("select * from user where mId = :id")
+ public abstract io.reactivex.Single<User> rx2_singleUserById(int id);
+
+ @Query("select * from user where mId = :id")
+ public abstract io.reactivex.rxjava3.core.Single<User> rx3_singleUserById(int id);
+
+ @Query("select * from user where mId IN (:ids)")
+ public abstract io.reactivex.Single<List<User>> rx2_singleUsersByIds(int... ids);
+
+ @Query("select * from user where mId IN (:ids)")
+ public abstract io.reactivex.rxjava3.core.Single<List<User>> rx3_singleUsersByIds(int... ids);
@Query("select COUNT(*) from user")
- public abstract Flowable<Integer> flowableCountUsers();
+ public abstract io.reactivex.Flowable<Integer> rx2_flowableCountUsers();
+
+ @Query("select COUNT(*) from user")
+ public abstract io.reactivex.rxjava3.core.Flowable<Integer> rx3_flowableCountUsers();
@Query("select COUNT(*) from user")
public abstract Publisher<Integer> publisherCountUsers();
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserPetDao.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserPetDao.java
index 14c3cc1..da2996da 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserPetDao.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserPetDao.java
@@ -40,9 +40,6 @@
import java.util.List;
-import io.reactivex.Flowable;
-import io.reactivex.Observable;
-
@Dao
public interface UserPetDao {
@Query("SELECT * FROM User u, Pet p WHERE u.mId = p.mUserId")
@@ -101,11 +98,19 @@
@Transaction
@Query("SELECT * FROM User u where u.mId = :userId")
- Flowable<UserAndAllPets> flowableUserWithPets(int userId);
+ io.reactivex.Flowable<UserAndAllPets> rx2_flowableUserWithPets(int userId);
@Transaction
@Query("SELECT * FROM User u where u.mId = :userId")
- Observable<UserAndAllPets> observableUserWithPets(int userId);
+ io.reactivex.rxjava3.core.Flowable<UserAndAllPets> rx3_flowableUserWithPets(int userId);
+
+ @Transaction
+ @Query("SELECT * FROM User u where u.mId = :userId")
+ io.reactivex.Observable<UserAndAllPets> rx2_observableUserWithPets(int userId);
+
+ @Transaction
+ @Query("SELECT * FROM User u where u.mId = :userId")
+ io.reactivex.rxjava3.core.Observable<UserAndAllPets> rx3_observableUserWithPets(int userId);
@Transaction
@Query("SELECT * FROM User u where u.mId = :uid")
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MainThreadCheckTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MainThreadCheckTest.java
index 3ef690f..a2331d5 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MainThreadCheckTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MainThreadCheckTest.java
@@ -55,11 +55,23 @@
}
@Test
- public void testFlowableOnMainThread() {
+ public void testRx2FlowableOnMainThread() {
final Throwable error = test(false, new Function<TestDatabase, Void>() {
@Override
public Void apply(TestDatabase db) {
- db.getUserDao().flowableUserById(3);
+ db.getUserDao().rx2_flowableUserById(3);
+ return null;
+ }
+ });
+ assertThat(error, nullValue());
+ }
+
+ @Test
+ public void testRx3FlowableOnMainThread() {
+ final Throwable error = test(false, new Function<TestDatabase, Void>() {
+ @Override
+ public Void apply(TestDatabase db) {
+ db.getUserDao().rx3_flowableUserById(3);
return null;
}
});
@@ -79,11 +91,23 @@
}
@Test
- public void testObservableOnMainThread() {
+ public void testRx2ObservableOnMainThread() {
final Throwable error = test(false, new Function<TestDatabase, Void>() {
@Override
public Void apply(TestDatabase db) {
- db.getUserDao().observableUserById(3);
+ db.getUserDao().rx2_observableUserById(3);
+ return null;
+ }
+ });
+ assertThat(error, nullValue());
+ }
+
+ @Test
+ public void testRx3ObservableOnMainThread() {
+ final Throwable error = test(false, new Function<TestDatabase, Void>() {
+ @Override
+ public Void apply(TestDatabase db) {
+ db.getUserDao().rx3_observableUserById(3);
return null;
}
});
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
index 88abfbc..7e63be9 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2Test.java
@@ -107,7 +107,7 @@
@Test
public void maybeUser_Empty() throws InterruptedException {
TestObserver<User> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.maybeUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_maybeUserById(3).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -120,7 +120,7 @@
User user = TestUtil.createUser(3);
mUserDao.insert(user);
TestObserver<User> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.maybeUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_maybeUserById(3).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -132,7 +132,7 @@
@Test
public void maybeUsers_EmptyList() throws InterruptedException {
TestObserver<List<User>> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -145,7 +145,7 @@
User[] users = TestUtil.createUsersArray(3, 5);
mUserDao.insertAll(users);
TestObserver<List<User>> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -159,7 +159,7 @@
User[] users = TestUtil.createUsersArray(1, 2);
mUserDao.insertAll(users);
TestObserver<User> testObserver1 = new TestObserver<>();
- Maybe<User> maybe1 = mUserDao.maybeUserById(1);
+ Maybe<User> maybe1 = mUserDao.rx2_maybeUserById(1);
Disposable disposable1 = maybe1.observeOn(mTestScheduler)
.subscribeWith(testObserver1);
drain();
@@ -168,7 +168,7 @@
testObserver1.assertValue(users[0]);
TestObserver<User> testObserver2 = new TestObserver<>();
- Maybe<User> maybe2 = mUserDao.maybeUserById(2);
+ Maybe<User> maybe2 = mUserDao.rx2_maybeUserById(2);
Disposable disposable2 = maybe2.observeOn(mTestScheduler)
.subscribeWith(testObserver2);
drain();
@@ -193,7 +193,7 @@
@Test
public void singleUser_Empty() throws InterruptedException {
TestObserver<User> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.singleUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_singleUserById(3).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
// figure out which error we should dispatch
@@ -207,7 +207,7 @@
User user = TestUtil.createUser(3);
mUserDao.insert(user);
TestObserver<User> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.singleUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_singleUserById(3).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -219,7 +219,7 @@
@Test
public void singleUsers_EmptyList() throws InterruptedException {
TestObserver<List<User>> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -232,7 +232,7 @@
User[] users = TestUtil.createUsersArray(3, 5);
mUserDao.insertAll(users);
TestObserver<List<User>> testObserver = new TestObserver<>();
- Disposable disposable = mUserDao.singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
.subscribeWith(testObserver);
drain();
testObserver.assertComplete();
@@ -246,7 +246,7 @@
User[] users = TestUtil.createUsersArray(1, 2);
mUserDao.insertAll(users);
TestObserver<User> testObserver1 = new TestObserver<>();
- Single<User> userSingle1 = mUserDao.singleUserById(1);
+ Single<User> userSingle1 = mUserDao.rx2_singleUserById(1);
Disposable disposable1 = userSingle1.observeOn(mTestScheduler)
.subscribeWith(testObserver1);
drain();
@@ -256,7 +256,7 @@
// how get single for 2
TestObserver<User> testObserver2 = new TestObserver<>();
- Single<User> userSingle2 = mUserDao.singleUserById(2);
+ Single<User> userSingle2 = mUserDao.rx2_singleUserById(2);
Disposable disposable2 = userSingle2.observeOn(mTestScheduler)
.subscribeWith(testObserver2);
drain();
@@ -280,7 +280,7 @@
mUserDao.insert(user);
drain();
TestSubscriber<User> consumer = new TestSubscriber<>();
- Disposable disposable = mUserDao.flowableUserById(3).subscribeWith(consumer);
+ Disposable disposable = mUserDao.rx2_flowableUserById(3).subscribeWith(consumer);
drain();
consumer.assertValue(user);
disposable.dispose();
@@ -292,7 +292,7 @@
mUserDao.insert(user);
drain();
TestObserver<User> consumer = new TestObserver<>();
- Disposable disposable = mUserDao.observableUserById(3).subscribeWith(consumer);
+ Disposable disposable = mUserDao.rx2_observableUserById(3).subscribeWith(consumer);
drain();
consumer.assertValue(user);
disposable.dispose();
@@ -304,7 +304,7 @@
mUserDao.insert(user);
drain();
TestSubscriber<User> consumer = new TestSubscriber<>();
- Disposable disposable = mUserDao.flowableUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_flowableUserById(3).observeOn(mTestScheduler)
.subscribeWith(consumer);
drain();
assertThat(consumer.values().get(0), is(user));
@@ -326,7 +326,7 @@
mUserDao.insert(user);
drain();
TestObserver<User> consumer = new TestObserver<>();
- Disposable disposable = mUserDao.observableUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_observableUserById(3).observeOn(mTestScheduler)
.subscribeWith(consumer);
drain();
assertThat(consumer.values().get(0), is(user));
@@ -346,7 +346,7 @@
@MediumTest
public void observeEmpty_Flowable() throws InterruptedException {
TestSubscriber<User> consumer = new TestSubscriber<>();
- Disposable disposable = mUserDao.flowableUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_flowableUserById(3).observeOn(mTestScheduler)
.subscribeWith(consumer);
drain();
consumer.assertNoValues();
@@ -365,7 +365,7 @@
@MediumTest
public void observeEmpty_Observable() throws InterruptedException {
TestObserver<User> consumer = new TestObserver<>();
- Disposable disposable = mUserDao.observableUserById(3).observeOn(mTestScheduler)
+ Disposable disposable = mUserDao.rx2_observableUserById(3).observeOn(mTestScheduler)
.subscribeWith(consumer);
drain();
consumer.assertNoValues();
@@ -387,13 +387,13 @@
drain();
TestSubscriber<User> consumer1 = new TestSubscriber<>();
- Flowable<User> flowable1 = mUserDao.flowableUserById(1);
+ Flowable<User> flowable1 = mUserDao.rx2_flowableUserById(1);
Disposable disposable1 = flowable1.subscribeWith(consumer1);
drain();
consumer1.assertValue(users[0]);
TestSubscriber<User> consumer2 = new TestSubscriber<>();
- Disposable disposable2 = mUserDao.flowableUserById(2).subscribeWith(consumer2);
+ Disposable disposable2 = mUserDao.rx2_flowableUserById(2).subscribeWith(consumer2);
drain();
consumer2.assertValue(users[1]);
@@ -414,13 +414,13 @@
drain();
TestObserver<User> consumer1 = new TestObserver<>();
- Observable<User> flowable1 = mUserDao.observableUserById(1);
+ Observable<User> flowable1 = mUserDao.rx2_observableUserById(1);
Disposable disposable1 = flowable1.subscribeWith(consumer1);
drain();
consumer1.assertValue(users[0]);
TestObserver<User> consumer2 = new TestObserver<>();
- Disposable disposable2 = mUserDao.observableUserById(2).subscribeWith(consumer2);
+ Disposable disposable2 = mUserDao.rx2_observableUserById(2).subscribeWith(consumer2);
drain();
consumer2.assertValue(users[1]);
@@ -437,7 +437,7 @@
@Test
public void countUsers_Flowable() throws InterruptedException {
TestSubscriber<Integer> consumer = new TestSubscriber<>();
- mUserDao.flowableCountUsers()
+ mUserDao.rx2_flowableCountUsers()
.observeOn(mTestScheduler)
.subscribe(consumer);
drain();
@@ -474,7 +474,7 @@
public void withRelation_Flowable() throws InterruptedException {
final TestSubscriber<UserAndAllPets> subscriber = new TestSubscriber<>();
- mUserPetDao.flowableUserWithPets(3).subscribe(subscriber);
+ mUserPetDao.rx2_flowableUserWithPets(3).subscribe(subscriber);
drain();
subscriber.assertSubscribed();
@@ -507,7 +507,7 @@
public void withRelation_Observable() throws InterruptedException {
final TestObserver<UserAndAllPets> subscriber = new TestObserver<>();
- mUserPetDao.observableUserWithPets(3).subscribe(subscriber);
+ mUserPetDao.rx2_observableUserWithPets(3).subscribe(subscriber);
drain();
subscriber.assertSubscribed();
@@ -541,7 +541,7 @@
public void updateInTransaction_Flowable() throws InterruptedException {
// When subscribing to the emissions of the user
final TestSubscriber<User> userTestSubscriber = mUserDao
- .flowableUserById(3)
+ .rx2_flowableUserById(3)
.observeOn(mTestScheduler)
.test();
drain();
@@ -565,7 +565,7 @@
public void updateInTransaction_Observable() throws InterruptedException {
// When subscribing to the emissions of the user
final TestObserver<User> userTestSubscriber = mUserDao
- .observableUserById(3)
+ .rx2_observableUserById(3)
.observeOn(mTestScheduler)
.test();
drain();
@@ -593,7 +593,7 @@
final MailDao mailDao = db.getMailDao();
final TestSubscriber<List<Mail>> subscriber = new TestSubscriber<>();
- mailDao.getFlowableMail().subscribe(subscriber);
+ mailDao.rx2_getFlowableMail().subscribe(subscriber);
drain();
subscriber.assertSubscribed();
subscriber.assertValue(Collections.emptyList());
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2WithInstantTaskExecutorTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2WithInstantTaskExecutorTest.java
index 34422834..ce5bd50 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2WithInstantTaskExecutorTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava2WithInstantTaskExecutorTest.java
@@ -54,7 +54,7 @@
@Test
public void testFlowableInTransaction() {
// When subscribing to the emissions of the user
- TestSubscriber<User> subscriber = mDatabase.getUserDao().flowableUserById(3).test();
+ TestSubscriber<User> subscriber = mDatabase.getUserDao().rx2_flowableUserById(3).test();
subscriber.assertValueCount(0);
// When inserting a new user in the data source
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java
new file mode 100644
index 0000000..b3ef41e
--- /dev/null
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/RxJava3Test.java
@@ -0,0 +1,692 @@
+/*
+ * Copyright (C) 2017 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 androidx.room.integration.testapp.test;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import android.content.Context;
+import android.os.Build;
+
+import androidx.arch.core.executor.ArchTaskExecutor;
+import androidx.arch.core.executor.TaskExecutor;
+import androidx.room.Room;
+import androidx.room.integration.testapp.FtsTestDatabase;
+import androidx.room.integration.testapp.dao.MailDao;
+import androidx.room.integration.testapp.vo.Mail;
+import androidx.room.integration.testapp.vo.Pet;
+import androidx.room.integration.testapp.vo.User;
+import androidx.room.integration.testapp.vo.UserAndAllPets;
+import androidx.room.rxjava3.EmptyResultSetException;
+import androidx.room.rxjava3.RxRoom;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.MediumTest;
+import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
+
+import com.google.common.collect.Lists;
+
+import org.jetbrains.annotations.NotNull;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
+
+import io.reactivex.rxjava3.core.Flowable;
+import io.reactivex.rxjava3.core.Maybe;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Single;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.exceptions.UndeliverableException;
+import io.reactivex.rxjava3.functions.Predicate;
+import io.reactivex.rxjava3.observers.TestObserver;
+import io.reactivex.rxjava3.plugins.RxJavaPlugins;
+import io.reactivex.rxjava3.schedulers.TestScheduler;
+import io.reactivex.rxjava3.subscribers.TestSubscriber;
+
+
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class RxJava3Test extends TestDatabaseTest {
+
+ private TestScheduler mTestScheduler;
+
+ @Before
+ public void setupSchedulers() {
+ mTestScheduler = new TestScheduler();
+ mTestScheduler.start();
+ ArchTaskExecutor.getInstance().setDelegate(new TaskExecutor() {
+ @Override
+ public void executeOnDiskIO(@NotNull Runnable runnable) {
+ mTestScheduler.scheduleDirect(runnable);
+ }
+
+ @Override
+ public void postToMainThread(@NotNull Runnable runnable) {
+ Assert.fail("no main thread in this test");
+ }
+
+ @Override
+ public boolean isMainThread() {
+ return false;
+ }
+ });
+ }
+
+ @After
+ public void clearSchedulers() {
+ mTestScheduler.shutdown();
+ ArchTaskExecutor.getInstance().setDelegate(null);
+ }
+
+ private void drain() throws InterruptedException {
+ mTestScheduler.triggerActions();
+ }
+
+ @Test
+ public void maybeUser_Empty() throws InterruptedException {
+ TestObserver<User> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_maybeUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ testObserver.assertNoValues();
+ disposable.dispose();
+ }
+
+ @Test
+ public void maybeUser_WithData() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ TestObserver<User> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_maybeUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ testObserver.assertValue(user);
+
+ disposable.dispose();
+ }
+
+ @Test
+ public void maybeUsers_EmptyList() throws InterruptedException {
+ TestObserver<List<User>> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ testObserver.assertValue(Collections.<User>emptyList());
+ disposable.dispose();
+ }
+
+ @Test
+ public void maybeUsers_WithValue() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(3, 5);
+ mUserDao.insertAll(users);
+ TestObserver<List<User>> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_maybeUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ // since this is a clean db, it is ok to rely on the order for the test.
+ testObserver.assertValue(Arrays.asList(users));
+ disposable.dispose();
+ }
+
+ @Test
+ public void maybeUsers_keepMaybeReference() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(1, 2);
+ mUserDao.insertAll(users);
+ TestObserver<User> testObserver1 = new TestObserver<>();
+ Maybe<User> maybe1 = mUserDao.rx3_maybeUserById(1);
+ Disposable disposable1 = maybe1.observeOn(mTestScheduler)
+ .subscribeWith(testObserver1);
+ drain();
+ testObserver1.assertComplete();
+ // since this is a clean db, it is ok to rely on the order for the test.
+ testObserver1.assertValue(users[0]);
+
+ TestObserver<User> testObserver2 = new TestObserver<>();
+ Maybe<User> maybe2 = mUserDao.rx3_maybeUserById(2);
+ Disposable disposable2 = maybe2.observeOn(mTestScheduler)
+ .subscribeWith(testObserver2);
+ drain();
+ testObserver2.assertComplete();
+ // since this is a clean db, it is ok to rely on the order for the test.
+ testObserver2.assertValue(users[1]);
+
+ TestObserver<User> testObserver3 = new TestObserver<>();
+
+ Disposable disposable3 = maybe1.observeOn(mTestScheduler)
+ .subscribeWith(testObserver3);
+ drain();
+ testObserver3.assertComplete();
+ // since this is a clean db, it is ok to rely on the order for the test.
+ testObserver3.assertValue(users[0]);
+
+ disposable1.dispose();
+ disposable2.dispose();
+ disposable3.dispose();
+ }
+
+ @Test
+ public void singleUser_Empty() throws InterruptedException {
+ TestObserver<User> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_singleUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ // figure out which error we should dispatch
+ testObserver.assertError(EmptyResultSetException.class);
+ testObserver.assertNoValues();
+ disposable.dispose();
+ }
+
+ @Test
+ public void singleUser_WithData() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ TestObserver<User> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_singleUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ testObserver.assertValue(user);
+
+ disposable.dispose();
+ }
+
+ @Test
+ public void singleUsers_EmptyList() throws InterruptedException {
+ TestObserver<List<User>> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ testObserver.assertValue(Collections.<User>emptyList());
+ disposable.dispose();
+ }
+
+ @Test
+ public void singleUsers_WithValue() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(3, 5);
+ mUserDao.insertAll(users);
+ TestObserver<List<User>> testObserver = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_singleUsersByIds(3, 5, 7).observeOn(mTestScheduler)
+ .subscribeWith(testObserver);
+ drain();
+ testObserver.assertComplete();
+ // since this is a clean db, it is ok to rely on the order for the test.
+ testObserver.assertValue(Arrays.asList(users));
+ disposable.dispose();
+ }
+
+ @Test
+ public void singleUser_keepSingleReference() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(1, 2);
+ mUserDao.insertAll(users);
+ TestObserver<User> testObserver1 = new TestObserver<>();
+ Single<User> userSingle1 = mUserDao.rx3_singleUserById(1);
+ Disposable disposable1 = userSingle1.observeOn(mTestScheduler)
+ .subscribeWith(testObserver1);
+ drain();
+ testObserver1.assertComplete();
+ testObserver1.assertValue(users[0]);
+ disposable1.dispose();
+
+ // how get single for 2
+ TestObserver<User> testObserver2 = new TestObserver<>();
+ Single<User> userSingle2 = mUserDao.rx3_singleUserById(2);
+ Disposable disposable2 = userSingle2.observeOn(mTestScheduler)
+ .subscribeWith(testObserver2);
+ drain();
+ testObserver2.assertComplete();
+ testObserver2.assertValue(users[1]);
+ disposable2.dispose();
+
+ // now re-use the first single
+ TestObserver<User> testObserver3 = new TestObserver<>();
+ Disposable disposable3 = userSingle1.observeOn(mTestScheduler)
+ .subscribeWith(testObserver3);
+ drain();
+ testObserver3.assertComplete();
+ testObserver3.assertValue(users[0]);
+ disposable3.dispose();
+ }
+
+ @Test
+ public void observeOnce_Flowable() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ TestSubscriber<User> consumer = new TestSubscriber<>();
+ mUserDao.rx3_flowableUserById(3).subscribe(consumer);
+ drain();
+ consumer.assertValue(user);
+ consumer.cancel();
+ }
+
+ @Test
+ public void observeOnce_Observable() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ TestObserver<User> consumer = new TestObserver<>();
+ mUserDao.rx3_observableUserById(3).subscribeWith(consumer);
+ drain();
+ consumer.assertValue(user);
+ consumer.dispose();
+ }
+
+ @Test
+ public void observeChangeAndDispose_Flowable() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ TestSubscriber<User> consumer = new TestSubscriber<>();
+ mUserDao.rx3_flowableUserById(3).observeOn(mTestScheduler).subscribe(consumer);
+ drain();
+ assertThat(consumer.values().get(0), is(user));
+ user.setName("rxy");
+ mUserDao.insertOrReplace(user);
+ drain();
+ User next = consumer.values().get(1);
+ assertThat(next, is(user));
+ consumer.cancel();
+ user.setName("foo");
+ mUserDao.insertOrReplace(user);
+ drain();
+ consumer.assertValueCount(2);
+ }
+
+ @Test
+ public void observeChangeAndDispose_Observable() throws InterruptedException {
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ TestObserver<User> consumer = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_observableUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(consumer);
+ drain();
+ assertThat(consumer.values().get(0), is(user));
+ user.setName("rxy");
+ mUserDao.insertOrReplace(user);
+ drain();
+ User next = consumer.values().get(1);
+ assertThat(next, is(user));
+ disposable.dispose();
+ user.setName("foo");
+ mUserDao.insertOrReplace(user);
+ drain();
+ consumer.assertValueCount(2);
+ }
+
+ @Test
+ @MediumTest
+ public void observeEmpty_Flowable() throws InterruptedException {
+ TestSubscriber<User> consumer = new TestSubscriber<>();
+ mUserDao.rx3_flowableUserById(3).observeOn(mTestScheduler).subscribe(consumer);
+ drain();
+ consumer.assertNoValues();
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ assertThat(consumer.values().get(0), is(user));
+ consumer.cancel();
+ user.setAge(88);
+ mUserDao.insertOrReplace(user);
+ drain();
+ consumer.assertValueCount(1);
+ }
+
+ @Test
+ @MediumTest
+ public void observeEmpty_Observable() throws InterruptedException {
+ TestObserver<User> consumer = new TestObserver<>();
+ Disposable disposable = mUserDao.rx3_observableUserById(3).observeOn(mTestScheduler)
+ .subscribeWith(consumer);
+ drain();
+ consumer.assertNoValues();
+ User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ assertThat(consumer.values().get(0), is(user));
+ disposable.dispose();
+ user.setAge(88);
+ mUserDao.insertOrReplace(user);
+ drain();
+ consumer.assertValueCount(1);
+ }
+
+ @Test
+ public void keepReference_Flowable() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(1, 2);
+ mUserDao.insertAll(users);
+ drain();
+
+ TestSubscriber<User> consumer1 = new TestSubscriber<>();
+ Flowable<User> flowable1 = mUserDao.rx3_flowableUserById(1);
+ flowable1.subscribe(consumer1);
+ drain();
+ consumer1.assertValue(users[0]);
+
+ TestSubscriber<User> consumer2 = new TestSubscriber<>();
+ mUserDao.rx3_flowableUserById(2).subscribe(consumer2);
+ drain();
+ consumer2.assertValue(users[1]);
+
+ TestSubscriber<User> consumer3 = new TestSubscriber<>();
+ flowable1.subscribe(consumer3);
+ drain();
+ consumer3.assertValue(users[0]);
+
+ consumer1.cancel();
+ consumer2.cancel();
+ consumer3.cancel();
+ }
+
+ @Test
+ public void keepReference_Observable() throws InterruptedException {
+ User[] users = TestUtil.createUsersArray(1, 2);
+ mUserDao.insertAll(users);
+ drain();
+
+ TestObserver<User> consumer1 = new TestObserver<>();
+ Observable<User> flowable1 = mUserDao.rx3_observableUserById(1);
+ Disposable disposable1 = flowable1.subscribeWith(consumer1);
+ drain();
+ consumer1.assertValue(users[0]);
+
+ TestObserver<User> consumer2 = new TestObserver<>();
+ Disposable disposable2 = mUserDao.rx3_observableUserById(2).subscribeWith(consumer2);
+ drain();
+ consumer2.assertValue(users[1]);
+
+ TestObserver<User> consumer3 = new TestObserver<>();
+ Disposable disposable3 = flowable1.subscribeWith(consumer3);
+ drain();
+ consumer3.assertValue(users[0]);
+
+ disposable1.dispose();
+ disposable2.dispose();
+ disposable3.dispose();
+ }
+
+ @Test
+ public void countUsers_Flowable() throws InterruptedException {
+ TestSubscriber<Integer> consumer = new TestSubscriber<>();
+ mUserDao.rx3_flowableCountUsers()
+ .observeOn(mTestScheduler)
+ .subscribe(consumer);
+ drain();
+ assertThat(consumer.values().get(0), is(0));
+ mUserDao.insertAll(TestUtil.createUsersArray(1, 3, 4, 6));
+ drain();
+ assertThat(consumer.values().get(1), is(4));
+ mUserDao.deleteByUids(3, 7);
+ drain();
+ assertThat(consumer.values().get(2), is(3));
+ mUserDao.deleteByUids(101);
+ drain();
+ consumer.assertValueCount(3);
+ }
+
+ @Test
+ @MediumTest
+ public void countUsers_Publisher() throws InterruptedException {
+ TestSubscriber<Integer> subscriber = new TestSubscriber<>();
+ mUserDao.publisherCountUsers().subscribe(subscriber);
+ drain();
+ subscriber.request(2);
+ drain();
+ subscriber.assertValue(0);
+ mUserDao.insert(TestUtil.createUser(2));
+ drain();
+ subscriber.assertValues(0, 1);
+ subscriber.cancel();
+ subscriber.assertNoErrors();
+ }
+
+ @Test
+ public void withRelation_Flowable() throws InterruptedException {
+ final TestSubscriber<UserAndAllPets> subscriber = new TestSubscriber<>();
+
+ mUserPetDao.rx3_flowableUserWithPets(3).subscribe(subscriber);
+
+ drain();
+ subscriber.assertNoValues();
+
+ final User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ subscriber.assertValue(new Predicate<UserAndAllPets>() {
+ @Override
+ public boolean test(UserAndAllPets userAndAllPets) throws Exception {
+ return userAndAllPets.user.equals(user);
+ }
+ });
+ subscriber.assertValueCount(1);
+ final Pet[] pets = TestUtil.createPetsForUser(3, 1, 2);
+ mPetDao.insertAll(pets);
+ drain();
+ subscriber.assertValueAt(1, new Predicate<UserAndAllPets>() {
+ @Override
+ public boolean test(UserAndAllPets userAndAllPets) throws Exception {
+ return userAndAllPets.user.equals(user)
+ && userAndAllPets.pets.equals(Arrays.asList(pets));
+ }
+ });
+ }
+
+ @Test
+ public void withRelation_Observable() throws InterruptedException {
+ final TestObserver<UserAndAllPets> subscriber = new TestObserver<>();
+
+ mUserPetDao.rx3_observableUserWithPets(3).subscribe(subscriber);
+
+ drain();
+ subscriber.assertNoValues();
+
+ final User user = TestUtil.createUser(3);
+ mUserDao.insert(user);
+ drain();
+ subscriber.assertValue(new Predicate<UserAndAllPets>() {
+ @Override
+ public boolean test(UserAndAllPets userAndAllPets) throws Exception {
+ return userAndAllPets.user.equals(user);
+ }
+ });
+ subscriber.assertValueCount(1);
+ final Pet[] pets = TestUtil.createPetsForUser(3, 1, 2);
+ mPetDao.insertAll(pets);
+ drain();
+ subscriber.assertValueAt(1, new Predicate<UserAndAllPets>() {
+ @Override
+ public boolean test(UserAndAllPets userAndAllPets) throws Exception {
+ return userAndAllPets.user.equals(user)
+ && userAndAllPets.pets.equals(Arrays.asList(pets));
+ }
+ });
+ }
+
+ @SuppressWarnings("deprecation")
+ @Test
+ public void updateInTransaction_Flowable() throws InterruptedException {
+ // When subscribing to the emissions of the user
+ final TestSubscriber<User> userTestSubscriber = mUserDao
+ .rx3_flowableUserById(3)
+ .observeOn(mTestScheduler)
+ .test();
+ drain();
+ userTestSubscriber.assertValueCount(0);
+
+ // When inserting a new user in the data source
+ mDatabase.beginTransaction();
+ try {
+ mUserDao.insert(TestUtil.createUser(3));
+ mDatabase.setTransactionSuccessful();
+
+ } finally {
+ mDatabase.endTransaction();
+ }
+ drain();
+ userTestSubscriber.assertValueCount(1);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Test
+ public void updateInTransaction_Observable() throws InterruptedException {
+ // When subscribing to the emissions of the user
+ final TestObserver<User> userTestSubscriber = mUserDao
+ .rx3_observableUserById(3)
+ .observeOn(mTestScheduler)
+ .test();
+ drain();
+ userTestSubscriber.assertValueCount(0);
+
+ // When inserting a new user in the data source
+ mDatabase.beginTransaction();
+ try {
+ mUserDao.insert(TestUtil.createUser(3));
+ mDatabase.setTransactionSuccessful();
+
+ } finally {
+ mDatabase.endTransaction();
+ }
+ drain();
+ userTestSubscriber.assertValueCount(1);
+ }
+
+ @Test
+ @SdkSuppress(minSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
+ public void withFtsTable_Flowable() throws InterruptedException {
+ final Context context = ApplicationProvider.getApplicationContext();
+ final FtsTestDatabase db = Room.inMemoryDatabaseBuilder(context, FtsTestDatabase.class)
+ .build();
+ final MailDao mailDao = db.getMailDao();
+ final TestSubscriber<List<Mail>> subscriber = new TestSubscriber<>();
+
+ mailDao.rx3_getFlowableMail().subscribe(subscriber);
+ drain();
+ subscriber.assertValue(Collections.emptyList());
+
+ Mail mail0 = TestUtil.createMail(1, "subject0", "body0");
+ mailDao.insert(mail0);
+ drain();
+ subscriber.assertValueAt(1, new Predicate<List<Mail>>() {
+ @Override
+ public boolean test(List<Mail> mailList) throws Exception {
+ return mailList.equals(Lists.newArrayList(mail0));
+ }
+ });
+
+ Mail mail1 = TestUtil.createMail(2, "subject1", "body1");
+ mailDao.insert(mail1);
+ drain();
+ subscriber.assertValueAt(2, new Predicate<List<Mail>>() {
+ @Override
+ public boolean test(List<Mail> mailList) throws Exception {
+ return mailList.equals(Lists.newArrayList(mail0, mail1));
+ }
+ });
+ }
+
+ @Test
+ public void singleFromCallable_emptyResult_disposed() throws InterruptedException {
+ CountDownLatch queryLatch = new CountDownLatch(1);
+ CountDownLatch bgThreadLatch = new CountDownLatch(1);
+ TestObserver<Boolean> testObserver = new TestObserver<>();
+ Disposable disposable = Single.fromCallable(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ bgThreadLatch.countDown();
+ queryLatch.await();
+ throw new EmptyResultSetException("Empty result");
+ }
+ }).subscribeOn(mTestScheduler).subscribeWith(testObserver);
+
+ Thread t = new Thread() {
+ @Override
+ public void run() {
+ try {
+ RxJavaPlugins.setErrorHandler(e -> {
+ assertThat(e, instanceOf(UndeliverableException.class));
+ RxJavaPlugins.setErrorHandler(null);
+ });
+ drain();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ t.start();
+
+ bgThreadLatch.await();
+ testObserver.assertNotComplete();
+ disposable.dispose();
+ queryLatch.countDown();
+ t.join();
+
+ testObserver.assertNoValues();
+ testObserver.assertNotComplete();
+ }
+
+ @Test
+ public void createSingle_emptyResult_disposed() throws InterruptedException {
+ CountDownLatch queryLatch = new CountDownLatch(1);
+ CountDownLatch bgThreadLatch = new CountDownLatch(1);
+ TestObserver<Boolean> testObserver = new TestObserver<>();
+ Disposable disposable = RxRoom.createSingle(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ bgThreadLatch.countDown();
+ queryLatch.await();
+ throw new EmptyResultSetException("Empty result");
+ }
+ }).subscribeOn(mTestScheduler).subscribeWith(testObserver);
+
+ Thread t = new Thread() {
+ @Override
+ public void run() {
+ try {
+ drain();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ t.start();
+
+ bgThreadLatch.await();
+ testObserver.assertNotComplete();
+ disposable.dispose();
+ queryLatch.countDown();
+ t.join();
+
+ testObserver.assertNoValues();
+ testObserver.assertNotComplete();
+ }
+}
diff --git a/room/ktx/api/restricted_2.3.0-alpha02.txt b/room/ktx/api/restricted_2.3.0-alpha02.txt
index cc27399..371c63c 100644
--- a/room/ktx/api/restricted_2.3.0-alpha02.txt
+++ b/room/ktx/api/restricted_2.3.0-alpha02.txt
@@ -5,7 +5,7 @@
method public static <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String![] tableNames, java.util.concurrent.Callable<R> callable);
method public static suspend <R> Object? execute(androidx.room.RoomDatabase p, boolean db, java.util.concurrent.Callable<R> inTransaction, kotlin.coroutines.Continuation<? super R> callable);
method public static suspend <R> Object? execute(androidx.room.RoomDatabase p, boolean db, android.os.CancellationSignal inTransaction, java.util.concurrent.Callable<R> cancellationSignal, kotlin.coroutines.Continuation<? super R> callable);
- field public static final androidx.room.CoroutinesRoom.Companion! Companion;
+ field public static final androidx.room.CoroutinesRoom.Companion Companion;
}
public static final class CoroutinesRoom.Companion {
diff --git a/room/ktx/api/restricted_current.txt b/room/ktx/api/restricted_current.txt
index cc27399..371c63c 100644
--- a/room/ktx/api/restricted_current.txt
+++ b/room/ktx/api/restricted_current.txt
@@ -5,7 +5,7 @@
method public static <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String![] tableNames, java.util.concurrent.Callable<R> callable);
method public static suspend <R> Object? execute(androidx.room.RoomDatabase p, boolean db, java.util.concurrent.Callable<R> inTransaction, kotlin.coroutines.Continuation<? super R> callable);
method public static suspend <R> Object? execute(androidx.room.RoomDatabase p, boolean db, android.os.CancellationSignal inTransaction, java.util.concurrent.Callable<R> cancellationSignal, kotlin.coroutines.Continuation<? super R> callable);
- field public static final androidx.room.CoroutinesRoom.Companion! Companion;
+ field public static final androidx.room.CoroutinesRoom.Companion Companion;
}
public static final class CoroutinesRoom.Companion {
diff --git a/room/rxjava3/api/2.3.0-alpha02.txt b/room/rxjava3/api/2.3.0-alpha02.txt
new file mode 100644
index 0000000..50707ed
--- /dev/null
+++ b/room/rxjava3/api/2.3.0-alpha02.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/api/current.txt b/room/rxjava3/api/current.txt
new file mode 100644
index 0000000..50707ed
--- /dev/null
+++ b/room/rxjava3/api/current.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/api/public_plus_experimental_2.3.0-alpha02.txt b/room/rxjava3/api/public_plus_experimental_2.3.0-alpha02.txt
new file mode 100644
index 0000000..50707ed
--- /dev/null
+++ b/room/rxjava3/api/public_plus_experimental_2.3.0-alpha02.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/api/public_plus_experimental_current.txt b/room/rxjava3/api/public_plus_experimental_current.txt
new file mode 100644
index 0000000..50707ed
--- /dev/null
+++ b/room/rxjava3/api/public_plus_experimental_current.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/api/res-2.3.0-alpha02.txt b/room/rxjava3/api/res-2.3.0-alpha02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/room/rxjava3/api/res-2.3.0-alpha02.txt
diff --git a/room/rxjava3/api/res-current.txt b/room/rxjava3/api/res-current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/room/rxjava3/api/res-current.txt
diff --git a/room/rxjava3/api/restricted_2.3.0-alpha02.txt b/room/rxjava3/api/restricted_2.3.0-alpha02.txt
new file mode 100644
index 0000000..0178e4b
--- /dev/null
+++ b/room/rxjava3/api/restricted_2.3.0-alpha02.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Flowable<T!> createFlowable(androidx.room.RoomDatabase, boolean, String![], java.util.concurrent.Callable<T!>);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Observable<T!> createObservable(androidx.room.RoomDatabase, boolean, String![], java.util.concurrent.Callable<T!>);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Single<T!> createSingle(java.util.concurrent.Callable<T!>);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/api/restricted_current.txt b/room/rxjava3/api/restricted_current.txt
new file mode 100644
index 0000000..0178e4b
--- /dev/null
+++ b/room/rxjava3/api/restricted_current.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.room.rxjava3 {
+
+ public final class EmptyResultSetException extends java.lang.RuntimeException {
+ ctor public EmptyResultSetException(String);
+ }
+
+ public final class RxRoom {
+ method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Flowable<T!> createFlowable(androidx.room.RoomDatabase, boolean, String![], java.util.concurrent.Callable<T!>);
+ method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Observable<T!> createObservable(androidx.room.RoomDatabase, boolean, String![], java.util.concurrent.Callable<T!>);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Single<T!> createSingle(java.util.concurrent.Callable<T!>);
+ field public static final Object NOTHING;
+ }
+
+}
+
diff --git a/room/rxjava3/build.gradle b/room/rxjava3/build.gradle
new file mode 100644
index 0000000..ac3ef8d
--- /dev/null
+++ b/room/rxjava3/build.gradle
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+import static androidx.build.dependencies.DependenciesKt.*
+import androidx.build.LibraryGroups
+import androidx.build.LibraryVersions
+import androidx.build.AndroidXExtension
+import androidx.build.Publish
+
+plugins {
+ id("AndroidXPlugin")
+ id("com.android.library")
+}
+
+dependencies {
+ api(project(":room:room-common"))
+ api(project(":room:room-runtime"))
+ implementation("androidx.arch.core:core-runtime:2.0.1")
+ api(RX_JAVA3)
+
+ testImplementation(JUNIT)
+ testImplementation(MOCKITO_CORE)
+ testImplementation("androidx.arch.core:core-testing:2.0.1")
+ testImplementation("androidx.lifecycle:lifecycle-livedata:2.0.0") // for mocking invalidation tracker
+}
+
+androidx {
+ name = "Android Room RXJava3"
+ publish = Publish.SNAPSHOT_AND_RELEASE
+ mavenGroup = LibraryGroups.ROOM
+ inceptionYear = "2020"
+ description = "Android Room RXJava3"
+ url = AndroidXExtension.ARCHITECTURE_URL
+}
\ No newline at end of file
diff --git a/room/rxjava3/src/main/AndroidManifest.xml b/room/rxjava3/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..fd2038f
--- /dev/null
+++ b/room/rxjava3/src/main/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<!--
+ ~ 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.
+ -->
+
+<manifest package="androidx.room.rxjava3">
+</manifest>
diff --git a/room/rxjava3/src/main/java/androidx/room/rxjava3/EmptyResultSetException.java b/room/rxjava3/src/main/java/androidx/room/rxjava3/EmptyResultSetException.java
new file mode 100644
index 0000000..d902587
--- /dev/null
+++ b/room/rxjava3/src/main/java/androidx/room/rxjava3/EmptyResultSetException.java
@@ -0,0 +1,38 @@
+/*
+ * 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 androidx.room.rxjava3;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Thrown by Room when the query in a Single<T> DAO method needs to return a result but the
+ * returned result from the database is empty.
+ * <p>
+ * Since a Single<T> must either emit a single non-null value or an error, this exception is
+ * thrown instead of emitting a null value when the query resulted empty. If the Single<T>
+ * contains a type argument of a collection (e.g. Single<List<Song>>) then this
+ * exception is not thrown an an empty collection is emitted instead.
+ */
+public final class EmptyResultSetException extends RuntimeException {
+ /**
+ * Constructs a new EmptyResultSetException with the exception.
+ * @param message The SQL query which didn't return any results.
+ */
+ public EmptyResultSetException(@NonNull String message) {
+ super(message);
+ }
+}
diff --git a/room/rxjava3/src/main/java/androidx/room/rxjava3/RxRoom.java b/room/rxjava3/src/main/java/androidx/room/rxjava3/RxRoom.java
new file mode 100644
index 0000000..230dd83
--- /dev/null
+++ b/room/rxjava3/src/main/java/androidx/room/rxjava3/RxRoom.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright 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 androidx.room.rxjava3;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.room.InvalidationTracker;
+import androidx.room.RoomDatabase;
+
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
+import io.reactivex.rxjava3.core.BackpressureStrategy;
+import io.reactivex.rxjava3.core.Flowable;
+import io.reactivex.rxjava3.core.Maybe;
+import io.reactivex.rxjava3.core.MaybeSource;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Scheduler;
+import io.reactivex.rxjava3.core.Single;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.functions.Function;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+
+/**
+ * Helper class to add RxJava3 support to Room.
+ */
+public final class RxRoom {
+ /**
+ * Data dispatched by the publisher created by {@link #createFlowable(RoomDatabase, String...)}.
+ */
+ @NonNull
+ public static final Object NOTHING = new Object();
+
+ /**
+ * Creates a {@link Flowable} that emits at least once and also re-emits whenever one of the
+ * observed tables is updated.
+ * <p>
+ * You can easily chain a database operation to downstream of this {@link Flowable} to ensure
+ * that it re-runs when database is modified.
+ * <p>
+ * Since database invalidation is batched, multiple changes in the database may results in just
+ * 1 emission.
+ *
+ * @param database The database instance
+ * @param tableNames The list of table names that should be observed
+ * @return A {@link Flowable} which emits {@link #NOTHING} when one of the observed tables
+ * is modified (also once when the invalidation tracker connection is established).
+ */
+ @NonNull
+ public static Flowable<Object> createFlowable(@NonNull final RoomDatabase database,
+ @NonNull final String... tableNames) {
+ return Flowable.create(emitter -> {
+ final InvalidationTracker.Observer observer = new InvalidationTracker.Observer(
+ tableNames) {
+ @Override
+ public void onInvalidated(@androidx.annotation.NonNull Set<String> tables) {
+ if (!emitter.isCancelled()) {
+ emitter.onNext(NOTHING);
+ }
+ }
+ };
+ if (!emitter.isCancelled()) {
+ database.getInvalidationTracker().addObserver(observer);
+ emitter.setDisposable(Disposable.fromAction(
+ () -> database.getInvalidationTracker().removeObserver(observer)));
+ }
+
+ // emit once to avoid missing any data and also easy chaining
+ if (!emitter.isCancelled()) {
+ emitter.onNext(NOTHING);
+ }
+ }, BackpressureStrategy.LATEST);
+ }
+
+ /**
+ * Helper method used by generated code to bind a Callable such that it will be run in
+ * our disk io thread and will automatically block null values since RxJava3 does not like null.
+ *
+ * @hide
+ */
+ @NonNull
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
+ public static <T> Flowable<T> createFlowable(@NonNull final RoomDatabase database,
+ final boolean inTransaction, @NonNull final String[] tableNames,
+ @NonNull final Callable<T> callable) {
+ Scheduler scheduler = Schedulers.from(getExecutor(database, inTransaction));
+ final Maybe<T> maybe = Maybe.fromCallable(callable);
+ return createFlowable(database, tableNames)
+ .subscribeOn(scheduler)
+ .unsubscribeOn(scheduler)
+ .observeOn(scheduler)
+ .flatMapMaybe((Function<Object, MaybeSource<T>>) o -> maybe);
+ }
+
+ /**
+ * Creates a {@link Observable} that emits at least once and also re-emits whenever one of the
+ * observed tables is updated.
+ * <p>
+ * You can easily chain a database operation to downstream of this {@link Observable} to ensure
+ * that it re-runs when database is modified.
+ * <p>
+ * Since database invalidation is batched, multiple changes in the database may results in just
+ * 1 emission.
+ *
+ * @param database The database instance
+ * @param tableNames The list of table names that should be observed
+ * @return A {@link Observable} which emits {@link #NOTHING} when one of the observed tables
+ * is modified (also once when the invalidation tracker connection is established).
+ */
+ @NonNull
+ public static Observable<Object> createObservable(@NonNull final RoomDatabase database,
+ @NonNull final String... tableNames) {
+ return Observable.create(emitter -> {
+ final InvalidationTracker.Observer observer = new InvalidationTracker.Observer(
+ tableNames) {
+ @Override
+ public void onInvalidated(@androidx.annotation.NonNull Set<String> tables) {
+ emitter.onNext(NOTHING);
+ }
+ };
+ database.getInvalidationTracker().addObserver(observer);
+ emitter.setDisposable(Disposable.fromAction(
+ () -> database.getInvalidationTracker().removeObserver(observer)));
+
+ // emit once to avoid missing any data and also easy chaining
+ emitter.onNext(NOTHING);
+ });
+ }
+
+ /**
+ * Helper method used by generated code to bind a Callable such that it will be run in
+ * our disk io thread and will automatically block null values since RxJava3 does not like null.
+ *
+ * @hide
+ */
+ @NonNull
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
+ public static <T> Observable<T> createObservable(@NonNull final RoomDatabase database,
+ final boolean inTransaction, @NonNull final String[] tableNames,
+ @NonNull final Callable<T> callable) {
+ Scheduler scheduler = Schedulers.from(getExecutor(database, inTransaction));
+ final Maybe<T> maybe = Maybe.fromCallable(callable);
+ return createObservable(database, tableNames)
+ .subscribeOn(scheduler)
+ .unsubscribeOn(scheduler)
+ .observeOn(scheduler)
+ .flatMapMaybe(o -> maybe);
+ }
+
+ /**
+ * Helper method used by generated code to create a Single from a Callable that will ignore
+ * the EmptyResultSetException if the stream is already disposed.
+ *
+ * @hide
+ */
+ @NonNull
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
+ public static <T> Single<T> createSingle(@NonNull final Callable<T> callable) {
+ return Single.create(emitter -> {
+ try {
+ emitter.onSuccess(callable.call());
+ } catch (EmptyResultSetException e) {
+ emitter.tryOnError(e);
+ }
+ });
+ }
+
+ private static Executor getExecutor(@NonNull RoomDatabase database, boolean inTransaction) {
+ if (inTransaction) {
+ return database.getTransactionExecutor();
+ } else {
+ return database.getQueryExecutor();
+ }
+ }
+
+ private RxRoom() {
+ }
+}
diff --git a/room/rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.java b/room/rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.java
new file mode 100644
index 0000000..1598297
--- /dev/null
+++ b/room/rxjava3/src/test/java/androidx/room/rxjava3/RxRoomTest.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2017 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 androidx.room.rxjava3;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import androidx.arch.core.executor.ArchTaskExecutor;
+import androidx.arch.core.executor.testing.CountingTaskExecutorRule;
+import androidx.room.InvalidationTracker;
+import androidx.room.RoomDatabase;
+
+import org.hamcrest.CoreMatchers;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Flowable;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.functions.Consumer;
+import io.reactivex.rxjava3.observers.TestObserver;
+import io.reactivex.rxjava3.subscribers.TestSubscriber;
+
+@RunWith(JUnit4.class)
+public class RxRoomTest {
+ @Rule
+ public CountingTaskExecutorRule mExecutor = new CountingTaskExecutorRule();
+
+ private RoomDatabase mDatabase;
+ private InvalidationTracker mInvalidationTracker;
+ private List<InvalidationTracker.Observer> mAddedObservers = new ArrayList<>();
+
+ @Before
+ public void init() {
+ mDatabase = mock(RoomDatabase.class);
+ mInvalidationTracker = mock(InvalidationTracker.class);
+ when(mDatabase.getInvalidationTracker()).thenReturn(mInvalidationTracker);
+ when(mDatabase.getQueryExecutor()).thenReturn(ArchTaskExecutor.getIOThreadExecutor());
+ doAnswer(invocation -> {
+ mAddedObservers.add((InvalidationTracker.Observer) invocation.getArguments()[0]);
+ return null;
+ }).when(mInvalidationTracker).addObserver(any(InvalidationTracker.Observer.class));
+ }
+
+ @Test
+ public void basicAddRemove_Flowable() {
+ Flowable<Object> flowable = RxRoom.createFlowable(mDatabase, "a", "b");
+ verify(mInvalidationTracker, never()).addObserver(any(InvalidationTracker.Observer.class));
+ Disposable disposable = flowable.subscribe();
+ verify(mInvalidationTracker).addObserver(any(InvalidationTracker.Observer.class));
+ assertThat(mAddedObservers.size(), CoreMatchers.is(1));
+
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ disposable.dispose();
+
+ verify(mInvalidationTracker).removeObserver(observer);
+
+ disposable = flowable.subscribe();
+ verify(mInvalidationTracker, times(2))
+ .addObserver(any(InvalidationTracker.Observer.class));
+ assertThat(mAddedObservers.size(), CoreMatchers.is(2));
+ assertThat(mAddedObservers.get(1), CoreMatchers.not(CoreMatchers.sameInstance(observer)));
+ InvalidationTracker.Observer observer2 = mAddedObservers.get(1);
+ disposable.dispose();
+ verify(mInvalidationTracker).removeObserver(observer2);
+ }
+
+ @Test
+ public void basicAddRemove_Observable() {
+ Observable<Object> observable = RxRoom.createObservable(mDatabase, "a", "b");
+ verify(mInvalidationTracker, never()).addObserver(any(InvalidationTracker.Observer.class));
+ Disposable disposable = observable.subscribe();
+ verify(mInvalidationTracker).addObserver(any(InvalidationTracker.Observer.class));
+ assertThat(mAddedObservers.size(), CoreMatchers.is(1));
+
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ disposable.dispose();
+
+ verify(mInvalidationTracker).removeObserver(observer);
+
+ disposable = observable.subscribe();
+ verify(mInvalidationTracker, times(2))
+ .addObserver(any(InvalidationTracker.Observer.class));
+ assertThat(mAddedObservers.size(), CoreMatchers.is(2));
+ assertThat(mAddedObservers.get(1), CoreMatchers.not(CoreMatchers.sameInstance(observer)));
+ InvalidationTracker.Observer observer2 = mAddedObservers.get(1);
+ disposable.dispose();
+ verify(mInvalidationTracker).removeObserver(observer2);
+ }
+
+ @Test
+ public void basicNotify_Flowable() {
+ String[] tables = {"a", "b"};
+ Set<String> tableSet = new HashSet<>(Arrays.asList(tables));
+ Flowable<Object> flowable = RxRoom.createFlowable(mDatabase, tables);
+ CountingConsumer consumer = new CountingConsumer();
+ Disposable disposable = flowable.subscribe(consumer);
+ assertThat(mAddedObservers.size(), CoreMatchers.is(1));
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ assertThat(consumer.mCount, CoreMatchers.is(1));
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(3));
+ disposable.dispose();
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(3));
+ }
+
+ @Test
+ public void basicNotify_Observable() {
+ String[] tables = {"a", "b"};
+ Set<String> tableSet = new HashSet<>(Arrays.asList(tables));
+ Observable<Object> observable = RxRoom.createObservable(mDatabase, tables);
+ CountingConsumer consumer = new CountingConsumer();
+ Disposable disposable = observable.subscribe(consumer);
+ assertThat(mAddedObservers.size(), CoreMatchers.is(1));
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ assertThat(consumer.mCount, CoreMatchers.is(1));
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(3));
+ disposable.dispose();
+ observer.onInvalidated(tableSet);
+ assertThat(consumer.mCount, CoreMatchers.is(3));
+ }
+
+ @Test
+ public void internalCallable_Flowable() throws Exception {
+ final AtomicReference<String> value = new AtomicReference<>(null);
+ String[] tables = {"a", "b"};
+ Set<String> tableSet = new HashSet<>(Arrays.asList(tables));
+ final Flowable<String> flowable = RxRoom.createFlowable(
+ mDatabase, false, tables, value::get);
+ final CountingConsumer consumer = new CountingConsumer();
+ final Disposable disposable = flowable.subscribe(consumer);
+ drain();
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ // no value because it is null
+ assertThat(consumer.mCount, CoreMatchers.is(0));
+ value.set("bla");
+ observer.onInvalidated(tableSet);
+ drain();
+ // get value
+ assertThat(consumer.mCount, CoreMatchers.is(1));
+ observer.onInvalidated(tableSet);
+ drain();
+ // get value
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ value.set(null);
+ observer.onInvalidated(tableSet);
+ drain();
+ // no value
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ disposable.dispose();
+ }
+
+ @Test
+ public void internalCallable_Observable() throws Exception {
+ final AtomicReference<String> value = new AtomicReference<>(null);
+ String[] tables = {"a", "b"};
+ Set<String> tableSet = new HashSet<>(Arrays.asList(tables));
+ final Observable<String> flowable = RxRoom.createObservable(
+ mDatabase, false, tables, value::get);
+ final CountingConsumer consumer = new CountingConsumer();
+ final Disposable disposable = flowable.subscribe(consumer);
+ drain();
+ InvalidationTracker.Observer observer = mAddedObservers.get(0);
+ // no value because it is null
+ assertThat(consumer.mCount, CoreMatchers.is(0));
+ value.set("bla");
+ observer.onInvalidated(tableSet);
+ drain();
+ // get value
+ assertThat(consumer.mCount, CoreMatchers.is(1));
+ observer.onInvalidated(tableSet);
+ drain();
+ // get value
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ value.set(null);
+ observer.onInvalidated(tableSet);
+ drain();
+ // no value
+ assertThat(consumer.mCount, CoreMatchers.is(2));
+ disposable.dispose();
+ }
+
+ @Test
+ public void exception_Flowable() throws Exception {
+ final Flowable<String> flowable = RxRoom.createFlowable(
+ mDatabase,
+ false,
+ new String[]{"a"},
+ () -> {
+ throw new Exception("i want exception");
+ });
+ TestSubscriber<String> subscriber = new TestSubscriber<>();
+ flowable.subscribe(subscriber);
+ drain();
+ subscriber.assertError(
+ throwable -> Objects.equals(throwable.getMessage(), "i want exception"));
+ }
+
+ @Test
+ public void exception_Observable() throws Exception {
+ final Observable<String> flowable = RxRoom.createObservable(
+ mDatabase,
+ false,
+ new String[]{"a"},
+ () -> {
+ throw new Exception("i want exception");
+ });
+ TestObserver<String> observer = new TestObserver<>();
+ flowable.subscribe(observer);
+ drain();
+ observer.assertError(
+ throwable -> Objects.equals(throwable.getMessage(), "i want exception"));
+ }
+
+ private void drain() throws Exception {
+ mExecutor.drainTasks(10, TimeUnit.SECONDS);
+ }
+
+ private static class CountingConsumer implements Consumer<Object> {
+ int mCount = 0;
+
+ @Override
+ public void accept(@NonNull Object o) {
+ mCount++;
+ }
+ }
+}
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
index 7adbc44..ab8604d 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleDynamicGroupMrp.java
@@ -64,6 +64,8 @@
@Override
public RouteController onCreateRouteController(String routeId) {
+ if (!checkDrawOverlay()) return null;
+
MediaRouteDescriptor routeDescriptor = mRouteDescriptors.get(routeId);
if (routeDescriptor == null) {
Log.w(TAG, "onCreateRouteController: Unknown route ID " + routeId);
@@ -91,6 +93,8 @@
@Override
public DynamicGroupRouteController onCreateDynamicGroupRouteController(
@NonNull String initialMemberRouteId) {
+ if (!checkDrawOverlay()) return null;
+
List<String> memberIds = new ArrayList<>();
MediaRouteDescriptor initialRoute = mRouteDescriptors.get(initialMemberRouteId);
if (initialRoute == null || !initialRoute.isValid()) {
@@ -301,7 +305,8 @@
@Override
public void onUpdateMemberRoutes(List<String> routeIds) {
- for (String routeId : mMemberRouteIds) {
+ List<String> routeIdsToRemove = new ArrayList<>(mMemberRouteIds);
+ for (String routeId : routeIdsToRemove) {
removeMember(routeId);
}
for (String routeId : routeIds) {
@@ -424,7 +429,7 @@
@Override
public void onUnselect(int reason) {
- Log.d(TAG, mRouteId + ": Unselected");
+ Log.d(TAG, mRouteId + ": Unselected. reason=" + reason);
for (RouteController controller : getValidMemberControllers()) {
controller.onUnselect(reason);
@@ -571,4 +576,4 @@
return count;
}
}
-}
\ No newline at end of file
+}
diff --git a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
index b004238..e015ac2 100644
--- a/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
+++ b/samples/Support7Demos/src/main/java/com/example/android/supportv7/media/SampleMediaRouteProvider.java
@@ -26,7 +26,9 @@
import android.media.AudioManager;
import android.media.MediaRouter;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.provider.Settings;
import android.util.Log;
import androidx.collection.ArrayMap;
@@ -160,6 +162,7 @@
@Override
public RouteController onCreateRouteController(String routeId) {
+ if (!checkDrawOverlay()) return null;
return new SampleRouteController(routeId);
}
@@ -244,6 +247,17 @@
setDescriptor(providerDescriptor);
}
+ boolean checkDrawOverlay() {
+ if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(getContext())) {
+ Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
+ Uri.parse("package:" + getContext().getPackageName()));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ getContext().startActivity(intent);
+ return false;
+ }
+ return true;
+ }
+
int getVolumeForRoute(String routeId) {
Integer volume = mVolumes.get(routeId);
if (volume == null) {
diff --git a/security/crypto/api/api_lint.ignore b/security/crypto/api/api_lint.ignore
index b3ea816..0b681f2 100644
--- a/security/crypto/api/api_lint.ignore
+++ b/security/crypto/api/api_lint.ignore
@@ -9,7 +9,3 @@
Listener methods should be named add/remove; was registerOnSharedPreferenceChangeListener
RegistrationName: androidx.security.crypto.EncryptedSharedPreferences#unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener):
Listener methods should be named add/remove; was unregisterOnSharedPreferenceChangeListener
-
-
-StreamFiles: androidx.security.crypto.EncryptedFile.Builder#Builder(java.io.File, android.content.Context, String, androidx.security.crypto.EncryptedFile.FileEncryptionScheme):
- Methods accepting `File` should also accept `FileDescriptor` or streams: constructor androidx.security.crypto.EncryptedFile.Builder(java.io.File,android.content.Context,String,androidx.security.crypto.EncryptedFile.FileEncryptionScheme)
diff --git a/serialization/serialization-annotation/api/1.0.0-alpha01.txt b/serialization/serialization-annotation/api/1.0.0-alpha01.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/1.0.0-alpha01.txt
+++ b/serialization/serialization-annotation/api/1.0.0-alpha01.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/serialization/serialization-annotation/api/current.txt b/serialization/serialization-annotation/api/current.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/current.txt
+++ b/serialization/serialization-annotation/api/current.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/serialization/serialization-annotation/api/public_plus_experimental_1.0.0-alpha01.txt b/serialization/serialization-annotation/api/public_plus_experimental_1.0.0-alpha01.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/public_plus_experimental_1.0.0-alpha01.txt
+++ b/serialization/serialization-annotation/api/public_plus_experimental_1.0.0-alpha01.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/serialization/serialization-annotation/api/public_plus_experimental_current.txt b/serialization/serialization-annotation/api/public_plus_experimental_current.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/public_plus_experimental_current.txt
+++ b/serialization/serialization-annotation/api/public_plus_experimental_current.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/serialization/serialization-annotation/api/restricted_1.0.0-alpha01.txt b/serialization/serialization-annotation/api/restricted_1.0.0-alpha01.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/restricted_1.0.0-alpha01.txt
+++ b/serialization/serialization-annotation/api/restricted_1.0.0-alpha01.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/serialization/serialization-annotation/api/restricted_current.txt b/serialization/serialization-annotation/api/restricted_current.txt
index e3f604ac..5570701 100644
--- a/serialization/serialization-annotation/api/restricted_current.txt
+++ b/serialization/serialization-annotation/api/restricted_current.txt
@@ -23,6 +23,8 @@
}
public enum ProtoEncoding {
+ method public static androidx.serialization.ProtoEncoding valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.serialization.ProtoEncoding[] values();
enum_constant public static final androidx.serialization.ProtoEncoding DEFAULT;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_FIXED;
enum_constant public static final androidx.serialization.ProtoEncoding SIGNED_VARINT;
diff --git a/settings.gradle b/settings.gradle
index a51cfa4..3fdc092 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -91,6 +91,7 @@
includeProject(":benchmark:integration-tests:dry-run-benchmark", "benchmark/integration-tests/dry-run-benchmark")
includeProject(":benchmark:integration-tests:startup-benchmark", "benchmark/integration-tests/startup-benchmark")
includeProject(":biometric:biometric", "biometric/biometric")
+includeProject(":biometric:integration-tests:testapp", "biometric/integration-tests/testapp")
includeProject(":browser:browser", "browser/browser")
includeProject(":buildSrc-tests", "buildSrc-tests")
// these projects intentionally fail to compile unless useMaxDepVersions is enabled
@@ -138,8 +139,10 @@
includeProject(":datastore:datastore-core", "datastore/datastore-core")
includeProject(":datastore:datastore-preferences", "datastore/datastore-preferences")
includeProject(":datastore:datastore-proto", "datastore/datastore-proto")
+includeProject(":datastore:datastore-sampleapp", "datastore/datastore-sampleapp")
includeProject(":documentfile:documentfile", "documentfile/documentfile")
includeProject(":drawerlayout:drawerlayout", "drawerlayout/drawerlayout")
+includeProject(":dynamicanimation", "dynamic-animation")
includeProject(":dynamicanimation:dynamicanimation", "dynamic-animation/dynamic-animation")
includeProject(":dynamicanimation:dynamicanimation-ktx", "dynamic-animation/dynamic-animation-ktx")
includeProject(":emoji", "emoji/core")
@@ -228,6 +231,7 @@
includeProject(":navigation:navigation-fragment-ktx", "navigation/navigation-fragment-ktx")
includeProject(":navigation:navigation-ui", "navigation/navigation-ui")
includeProject(":navigation:navigation-ui-ktx", "navigation/navigation-ui-ktx")
+includeProject(":navigation:navigation-integration-tests", "navigation/integration-tests")
includeProject(":navigation:navigation-integration-tests:testapp", "navigation/integration-tests/testapp")
includeProject(":navigation:navigation-safe-args-generator", "navigation/navigation-safe-args-generator")
includeProject(":navigation:navigation-safe-args-gradle-plugin", "navigation/navigation-safe-args-gradle-plugin")
@@ -264,6 +268,7 @@
includeProject(":room:room-migration", "room/migration")
includeProject(":room:room-runtime", "room/runtime")
includeProject(":room:room-rxjava2", "room/rxjava2")
+includeProject(":room:room-rxjava3", "room/rxjava3")
includeProject(":room:room-testing", "room/testing")
includeProject(":remotecallback:remotecallback-processor", "remotecallback/processor")
includeProject(":remotecallback:remotecallback", "remotecallback/remotecallback")
@@ -311,6 +316,7 @@
includeProject(":tracing:tracing-ktx", "tracing/tracing-ktx")
includeProject(":transition:transition", "transition/transition")
includeProject(":transition:transition-ktx", "transition/transition-ktx")
+includeProject(":tvprovider", "tv-provider")
includeProject(":tvprovider:tvprovider", "tv-provider/tv-provider")
includeProject(":vectordrawable:vectordrawable", "vectordrawable/vectordrawable")
includeProject(":vectordrawable:vectordrawable-animated", "vectordrawable/vectordrawable-animated")
diff --git a/slices/benchmark/src/androidTest/AndroidManifest.xml b/slices/benchmark/src/androidTest/AndroidManifest.xml
index 5fd3108..8e2298b 100644
--- a/slices/benchmark/src/androidTest/AndroidManifest.xml
+++ b/slices/benchmark/src/androidTest/AndroidManifest.xml
@@ -23,5 +23,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java b/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
index 4ab5626..2e1323e 100644
--- a/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
+++ b/slices/view/src/main/java/androidx/slice/SliceViewManagerBase.java
@@ -87,10 +87,10 @@
private class SliceListenerImpl {
- Uri mUri;
+ final Uri mUri;
final Executor mExecutor;
final SliceCallback mCallback;
- private boolean mPinned;
+ boolean mPinned;
SliceListenerImpl(Uri uri, Executor executor, SliceCallback callback) {
mUri = uri;
@@ -119,14 +119,24 @@
}
}
+ @SuppressWarnings("deprecation") /* AsyncTask */
void stopListening() {
mContext.getContentResolver().unregisterContentObserver(mObserver);
if (mPinned) {
- unpinSlice(mUri);
- mPinned = false;
+ mHandler.post(() -> android.os.AsyncTask.execute(mUnpinSlice));
}
}
+ private final Runnable mUnpinSlice = new Runnable() {
+ @Override
+ public void run() {
+ if (mPinned) {
+ unpinSlice(mUri);
+ mPinned = false;
+ }
+ }
+ };
+
final Runnable mUpdateSlice = new Runnable() {
@Override
public void run() {
@@ -141,8 +151,9 @@
}
};
- private final ContentObserver mObserver = new ContentObserver(
- new Handler(Looper.getMainLooper())) {
+ private final Handler mHandler = new Handler(Looper.getMainLooper());
+
+ private final ContentObserver mObserver = new ContentObserver(mHandler) {
@Override
@SuppressWarnings("deprecation") /* AsyncTask */
public void onChange(boolean selfChange) {
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowStyle.java b/slices/view/src/main/java/androidx/slice/widget/RowStyle.java
index db30926..05055df 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowStyle.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowStyle.java
@@ -51,6 +51,7 @@
private int mProgressBarEndPadding;
private int mIconSize;
private boolean mDisableRecyclerViewItemAnimator;
+ private int mImageSize;
public RowStyle(Context context, int resId) {
TypedArray a = context.getTheme().obtainStyledAttributes(resId, R.styleable.RowStyle);
@@ -93,6 +94,8 @@
R.styleable.RowStyle_iconSize, UNBOUNDED);
mDisableRecyclerViewItemAnimator = a.getBoolean(
R.styleable.RowStyle_disableRecyclerViewItemAnimator, false);
+ mImageSize = (int) a.getDimension(
+ R.styleable.RowStyle_imageSize, UNBOUNDED);
} finally {
a.recycle();
}
@@ -173,4 +176,8 @@
public boolean getDisableRecyclerViewItemAnimator() {
return mDisableRecyclerViewItemAnimator;
}
+
+ public int getImageSize() {
+ return mImageSize;
+ }
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowView.java b/slices/view/src/main/java/androidx/slice/widget/RowView.java
index 5e4a0b2..be3932d 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowView.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowView.java
@@ -105,6 +105,8 @@
private static final String TAG = "RowView";
+ private static final int HEIGHT_UNBOUND = -1;
+
// The number of items that fit on the right hand side of a small slice
// TODO: this should be based on available width
private static final int MAX_END_ITEMS = 3;
@@ -176,6 +178,7 @@
private int mImageSize;
private int mIconSize;
+ private int mStyleRowHeight = HEIGHT_UNBOUND;
// How big mRangeBar wants to be.
private int mMeasuredRangeHeight;
@@ -848,7 +851,7 @@
*/
private void addAction(final SliceActionImpl actionContent, int color, ViewGroup container,
boolean isStart) {
- SliceActionView sav = new SliceActionView(getContext());
+ SliceActionView sav = new SliceActionView(getContext(), mSliceStyle);
container.addView(sav);
if (container.getVisibility() == GONE) {
container.setVisibility(VISIBLE);
@@ -916,16 +919,25 @@
} else {
container.addView(iv);
}
+ if (mSliceStyle != null) {
+ mStyleRowHeight = mSliceStyle.getRowMinHeight();
+ if (mSliceStyle.getRowStyle() != null) {
+ int styleIconSize = mSliceStyle.getRowStyle().getIconSize();
+ mIconSize = styleIconSize > 0 ? styleIconSize : mIconSize;
+ int styleImageSize = mSliceStyle.getRowStyle().getImageSize();
+ mImageSize = styleImageSize > 0 ? styleImageSize : mImageSize;
+ }
+ }
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) iv.getLayoutParams();
lp.width = useIntrinsicSize ? Math.round(d.getIntrinsicWidth() / density) : mImageSize;
lp.height = useIntrinsicSize ? Math.round(d.getIntrinsicHeight() / density) :
mImageSize;
iv.setLayoutParams(lp);
- if (mSliceStyle != null && mSliceStyle.getRowStyle() != null) {
- int styleIconSize = mSliceStyle.getRowStyle().getIconSize();
- mIconSize = styleIconSize > 0 ? styleIconSize : mIconSize;
+ int p = 0;
+ if (isIcon) {
+ p = mStyleRowHeight == HEIGHT_UNBOUND
+ ? mIconSize / 2 : (mStyleRowHeight - mIconSize) / 2;
}
- int p = isIcon ? mIconSize / 2 : 0;
iv.setPadding(p, p, p, p);
addedView = iv;
} else if (timeStamp != null) {
diff --git a/slices/view/src/main/java/androidx/slice/widget/SliceActionView.java b/slices/view/src/main/java/androidx/slice/widget/SliceActionView.java
index 011a129..b2700f5 100644
--- a/slices/view/src/main/java/androidx/slice/widget/SliceActionView.java
+++ b/slices/view/src/main/java/androidx/slice/widget/SliceActionView.java
@@ -58,6 +58,8 @@
CompoundButton.OnCheckedChangeListener {
private static final String TAG = "SliceActionView";
+ private static final int HEIGHT_UNBOUND = -1;
+
static final int[] CHECKED_STATE_SET = {
android.R.attr.state_checked
};
@@ -76,12 +78,20 @@
private int mIconSize;
private int mImageSize;
+ private int mStyleRowHeight = HEIGHT_UNBOUND;
- public SliceActionView(Context context) {
+ public SliceActionView(Context context, SliceStyle style) {
super(context);
Resources res = getContext().getResources();
mIconSize = res.getDimensionPixelSize(R.dimen.abc_slice_icon_size);
mImageSize = res.getDimensionPixelSize(R.dimen.abc_slice_small_image_size);
+ if (style != null) {
+ mStyleRowHeight = style.getRowMinHeight();
+ if (style.getRowStyle() != null) {
+ mIconSize = style.getRowStyle().getIconSize();
+ mImageSize = style.getRowStyle().getImageSize();
+ }
+ }
}
/**
@@ -164,7 +174,11 @@
lp.width = mImageSize;
lp.height = mImageSize;
mActionView.setLayoutParams(lp);
- int p = action.getImageMode() == ICON_IMAGE ? mIconSize / 2 : 0;
+ int p = 0;
+ if (action.getImageMode() == ICON_IMAGE) {
+ p = mStyleRowHeight == HEIGHT_UNBOUND
+ ? mIconSize / 2 : (mStyleRowHeight - mIconSize) / 2;
+ }
mActionView.setPadding(p, p, p, p);
int touchFeedbackAttr = android.R.attr.selectableItemBackground;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
@@ -224,7 +238,7 @@
}
@Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ public void onCheckedChanged(@Nullable CompoundButton buttonView, boolean isChecked) {
if (mSliceAction == null || mActionView == null) {
return;
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/SliceStyle.java b/slices/view/src/main/java/androidx/slice/widget/SliceStyle.java
index 74dd01d..5b41309 100644
--- a/slices/view/src/main/java/androidx/slice/widget/SliceStyle.java
+++ b/slices/view/src/main/java/androidx/slice/widget/SliceStyle.java
@@ -117,6 +117,11 @@
mRowStyle = new RowStyle(context, rowStyleRes);
}
+ int defaultRowMinHeight = context.getResources().getDimensionPixelSize(
+ R.dimen.abc_slice_row_min_height);
+ mRowMinHeight = (int) a.getDimension(
+ R.styleable.SliceView_rowMinHeight, defaultRowMinHeight);
+
int defaultRowMaxHeight = context.getResources().getDimensionPixelSize(
R.dimen.abc_slice_row_max_height);
mRowMaxHeight = (int) a.getDimension(
@@ -142,7 +147,6 @@
mRowTextWithRangeHeight = r.getDimensionPixelSize(
R.dimen.abc_slice_row_range_multi_text_height);
- mRowMinHeight = r.getDimensionPixelSize(R.dimen.abc_slice_row_min_height);
mRowSelectionHeight = r.getDimensionPixelSize(R.dimen.abc_slice_row_selection_height);
mRowTextWithSelectionHeight = r.getDimensionPixelSize(
R.dimen.abc_slice_row_selection_multi_text_height);
@@ -161,6 +165,10 @@
mListLargeHeight = r.getDimensionPixelSize(R.dimen.abc_slice_large_height);
}
+ public int getRowMinHeight() {
+ return mRowMinHeight;
+ }
+
public int getRowMaxHeight() {
return mRowMaxHeight;
}
diff --git a/slices/view/src/main/res-public/values/public_attrs.xml b/slices/view/src/main/res-public/values/public_attrs.xml
index 8dfcfc9..fdfebd8 100644
--- a/slices/view/src/main/res-public/values/public_attrs.xml
+++ b/slices/view/src/main/res-public/values/public_attrs.xml
@@ -46,6 +46,7 @@
<public type="attr" name="bottomDividerStartPadding" />
<public type="attr" name="bottomDividerEndPadding" />
<public type="attr" name="actionDividerHeight" />
+ <public type="attr" name="rowMinHeight" />
<public type="attr" name="rowMaxHeight" />
<public type="attr" name="rowRangeHeight" />
<public type="attr" name="rowRangeSingleTextHeight" />
@@ -54,5 +55,6 @@
<public type="attr" name="progressBarStartPadding" />
<public type="attr" name="progressBarEndPadding" />
<public type="attr" name="iconSize" />
+ <public type="attr" name="imageSize" />
<public type="attr" name="disableRecyclerViewItemAnimator" />
</resources>
diff --git a/slices/view/src/main/res/values/attrs.xml b/slices/view/src/main/res/values/attrs.xml
index d9ab478..b0e64ce 100644
--- a/slices/view/src/main/res/values/attrs.xml
+++ b/slices/view/src/main/res/values/attrs.xml
@@ -59,6 +59,8 @@
may set this in your app theme pointing to your custom RowView style.-->
<attr name="rowStyle" format="reference" />
+ <!-- Min height of row view; default size if one line of text -->
+ <attr name="rowMinHeight" format="dimension" />
<!-- Size of row view with two lines of text -->
<attr name="rowMaxHeight" format="dimension" />
<!-- Size of range area in a row to fit a slider or progress bar -->
@@ -117,8 +119,10 @@
<!-- Size of icon. -->
<attr name="iconSize" format="dimension" />
+ <!-- Size of small images in a slice. -->
+ <attr name="imageSize" format="dimension" />
<!-- Control whether RecyclerView item animator is disable or not, true for disable
otherwise enable. -->
<attr name="disableRecyclerViewItemAnimator" format="boolean" />
</declare-styleable>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/startup/startup-runtime/api/1.0.0-alpha02.txt b/startup/startup-runtime/api/1.0.0-alpha02.txt
new file mode 100644
index 0000000..7af601d
--- /dev/null
+++ b/startup/startup-runtime/api/1.0.0-alpha02.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.startup {
+
+ public final class AppInitializer {
+ method public static androidx.startup.AppInitializer getInstance(android.content.Context);
+ method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>>);
+ }
+
+ public interface Initializer<T> {
+ method public T create(android.content.Context);
+ method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+ }
+
+}
+
diff --git a/startup/startup-runtime/api/public_plus_experimental_1.0.0-alpha02.txt b/startup/startup-runtime/api/public_plus_experimental_1.0.0-alpha02.txt
new file mode 100644
index 0000000..7af601d
--- /dev/null
+++ b/startup/startup-runtime/api/public_plus_experimental_1.0.0-alpha02.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.startup {
+
+ public final class AppInitializer {
+ method public static androidx.startup.AppInitializer getInstance(android.content.Context);
+ method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>>);
+ }
+
+ public interface Initializer<T> {
+ method public T create(android.content.Context);
+ method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+ }
+
+}
+
diff --git a/startup/startup-runtime/api/res-1.0.0-alpha02.txt b/startup/startup-runtime/api/res-1.0.0-alpha02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/startup/startup-runtime/api/res-1.0.0-alpha02.txt
diff --git a/startup/startup-runtime/api/restricted_1.0.0-alpha02.txt b/startup/startup-runtime/api/restricted_1.0.0-alpha02.txt
new file mode 100644
index 0000000..7af601d
--- /dev/null
+++ b/startup/startup-runtime/api/restricted_1.0.0-alpha02.txt
@@ -0,0 +1,15 @@
+// Signature format: 3.0
+package androidx.startup {
+
+ public final class AppInitializer {
+ method public static androidx.startup.AppInitializer getInstance(android.content.Context);
+ method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>>);
+ }
+
+ public interface Initializer<T> {
+ method public T create(android.content.Context);
+ method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+ }
+
+}
+
diff --git a/startup/startup-runtime/build.gradle b/startup/startup-runtime/build.gradle
index aeb135f..b96af7a 100644
--- a/startup/startup-runtime/build.gradle
+++ b/startup/startup-runtime/build.gradle
@@ -28,6 +28,9 @@
}
android {
+ buildTypes.all {
+ consumerProguardFiles 'proguard-rules.pro'
+ }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
@@ -36,7 +39,7 @@
dependencies {
implementation("androidx.annotation:annotation:1.1.0")
- implementation(project(':tracing:tracing'))
+ implementation('androidx.tracing:tracing:1.0.0-beta01')
lintPublish(project(':startup:startup-runtime-lint'))
androidTestImplementation(KOTLIN_STDLIB)
androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
diff --git a/startup/startup-runtime/proguard-rules.pro b/startup/startup-runtime/proguard-rules.pro
index f55c09a..b1048d8 100644
--- a/startup/startup-runtime/proguard-rules.pro
+++ b/startup/startup-runtime/proguard-rules.pro
@@ -2,7 +2,7 @@
# This is because they are discovered and instantiated during application initialization.
-keep class * extends androidx.startup.Initializer {
# Keep the public no-argument constructor while allowing other methods to be optimized.
- public <init>();
+ <init>();
}
-assumenosideeffects class androidx.startup.StartupLogger
diff --git a/textclassifier/textclassifier/api/1.0.0-alpha03.txt b/textclassifier/textclassifier/api/1.0.0-alpha03.txt
index 21567f3..79c4717 100644
--- a/textclassifier/textclassifier/api/1.0.0-alpha03.txt
+++ b/textclassifier/textclassifier/api/1.0.0-alpha03.txt
@@ -271,7 +271,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/textclassifier/textclassifier/api/api_lint.ignore b/textclassifier/textclassifier/api/api_lint.ignore
index b4fcb1d..aec5e8c 100644
--- a/textclassifier/textclassifier/api/api_lint.ignore
+++ b/textclassifier/textclassifier/api/api_lint.ignore
@@ -47,7 +47,5 @@
Missing nullability on method `createSpan` return
MissingNullability: androidx.textclassifier.TextLinks.TextLink#getConfidenceScore(String) parameter #0:
Missing nullability on parameter `entityType` in method `getConfidenceScore`
-MissingNullability: androidx.textclassifier.TextLinksParams#DEFAULT_PARAMS:
- Missing nullability on field `DEFAULT_PARAMS` in class `class androidx.textclassifier.TextLinksParams`
MissingNullability: androidx.textclassifier.TextSelection#getConfidenceScore(String) parameter #0:
Missing nullability on parameter `entity` in method `getConfidenceScore`
diff --git a/textclassifier/textclassifier/api/current.txt b/textclassifier/textclassifier/api/current.txt
index 21567f3..79c4717 100644
--- a/textclassifier/textclassifier/api/current.txt
+++ b/textclassifier/textclassifier/api/current.txt
@@ -271,7 +271,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/textclassifier/textclassifier/api/public_plus_experimental_1.0.0-alpha03.txt b/textclassifier/textclassifier/api/public_plus_experimental_1.0.0-alpha03.txt
index 21567f3..79c4717 100644
--- a/textclassifier/textclassifier/api/public_plus_experimental_1.0.0-alpha03.txt
+++ b/textclassifier/textclassifier/api/public_plus_experimental_1.0.0-alpha03.txt
@@ -271,7 +271,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/textclassifier/textclassifier/api/public_plus_experimental_current.txt b/textclassifier/textclassifier/api/public_plus_experimental_current.txt
index 21567f3..79c4717 100644
--- a/textclassifier/textclassifier/api/public_plus_experimental_current.txt
+++ b/textclassifier/textclassifier/api/public_plus_experimental_current.txt
@@ -271,7 +271,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/textclassifier/textclassifier/api/restricted_1.0.0-alpha03.txt b/textclassifier/textclassifier/api/restricted_1.0.0-alpha03.txt
index 3e183d8..2ab5708 100644
--- a/textclassifier/textclassifier/api/restricted_1.0.0-alpha03.txt
+++ b/textclassifier/textclassifier/api/restricted_1.0.0-alpha03.txt
@@ -318,7 +318,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/textclassifier/textclassifier/api/restricted_current.txt b/textclassifier/textclassifier/api/restricted_current.txt
index 3e183d8..2ab5708 100644
--- a/textclassifier/textclassifier/api/restricted_current.txt
+++ b/textclassifier/textclassifier/api/restricted_current.txt
@@ -318,7 +318,7 @@
}
public final class TextLinksParams {
- field public static final androidx.textclassifier.TextLinksParams! DEFAULT_PARAMS;
+ field public static final androidx.textclassifier.TextLinksParams DEFAULT_PARAMS;
}
public static final class TextLinksParams.Builder {
diff --git a/transition/transition-ktx/api/1.4.0-beta01.txt b/transition/transition-ktx/api/1.4.0-beta01.txt
new file mode 100644
index 0000000..b01e160
--- /dev/null
+++ b/transition/transition-ktx/api/1.4.0-beta01.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public final class TransitionKt {
+ method public static inline androidx.transition.Transition.TransitionListener addListener(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onPause = {});
+ method public static inline androidx.transition.Transition.TransitionListener doOnCancel(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnEnd(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnPause(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnResume(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnStart(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/transition/transition-ktx/api/public_plus_experimental_1.4.0-beta01.txt b/transition/transition-ktx/api/public_plus_experimental_1.4.0-beta01.txt
new file mode 100644
index 0000000..b01e160
--- /dev/null
+++ b/transition/transition-ktx/api/public_plus_experimental_1.4.0-beta01.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public final class TransitionKt {
+ method public static inline androidx.transition.Transition.TransitionListener addListener(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onPause = {});
+ method public static inline androidx.transition.Transition.TransitionListener doOnCancel(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnEnd(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnPause(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnResume(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnStart(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/transition/transition-ktx/api/res-1.4.0-beta01.txt b/transition/transition-ktx/api/res-1.4.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/transition/transition-ktx/api/res-1.4.0-beta01.txt
diff --git a/transition/transition-ktx/api/restricted_1.4.0-beta01.txt b/transition/transition-ktx/api/restricted_1.4.0-beta01.txt
new file mode 100644
index 0000000..b01e160
--- /dev/null
+++ b/transition/transition-ktx/api/restricted_1.4.0-beta01.txt
@@ -0,0 +1,14 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public final class TransitionKt {
+ method public static inline androidx.transition.Transition.TransitionListener addListener(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onEnd = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onStart = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onCancel = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onResume = {}, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> onPause = {});
+ method public static inline androidx.transition.Transition.TransitionListener doOnCancel(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnEnd(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnPause(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnResume(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ method public static inline androidx.transition.Transition.TransitionListener doOnStart(androidx.transition.Transition, kotlin.jvm.functions.Function1<? super androidx.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/transition/transition/api/1.4.0-beta01.txt b/transition/transition/api/1.4.0-beta01.txt
new file mode 100644
index 0000000..e314794
--- /dev/null
+++ b/transition/transition/api/1.4.0-beta01.txt
@@ -0,0 +1,283 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public class ArcMotion extends androidx.transition.PathMotion {
+ ctor public ArcMotion();
+ ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
+ method public float getMaximumAngle();
+ method public float getMinimumHorizontalAngle();
+ method public float getMinimumVerticalAngle();
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public void setMaximumAngle(float);
+ method public void setMinimumHorizontalAngle(float);
+ method public void setMinimumVerticalAngle(float);
+ }
+
+ public class AutoTransition extends androidx.transition.TransitionSet {
+ ctor public AutoTransition();
+ ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class ChangeBounds extends androidx.transition.Transition {
+ ctor public ChangeBounds();
+ ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getResizeClip();
+ method public void setResizeClip(boolean);
+ }
+
+ public class ChangeClipBounds extends androidx.transition.Transition {
+ ctor public ChangeClipBounds();
+ ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeImageTransform extends androidx.transition.Transition {
+ ctor public ChangeImageTransform();
+ ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeScroll extends androidx.transition.Transition {
+ ctor public ChangeScroll();
+ ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeTransform extends androidx.transition.Transition {
+ ctor public ChangeTransform();
+ ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getReparent();
+ method public boolean getReparentWithOverlay();
+ method public void setReparent(boolean);
+ method public void setReparentWithOverlay(boolean);
+ }
+
+ public class CircularPropagation extends androidx.transition.VisibilityPropagation {
+ ctor public CircularPropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ }
+
+ public class Explode extends androidx.transition.Visibility {
+ ctor public Explode();
+ ctor public Explode(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class Fade extends androidx.transition.Visibility {
+ ctor public Fade(int);
+ ctor public Fade();
+ ctor public Fade(android.content.Context, android.util.AttributeSet);
+ field public static final int IN = 1; // 0x1
+ field public static final int OUT = 2; // 0x2
+ }
+
+ public abstract class PathMotion {
+ ctor public PathMotion();
+ ctor public PathMotion(android.content.Context, android.util.AttributeSet);
+ method public abstract android.graphics.Path getPath(float, float, float, float);
+ }
+
+ public class PatternPathMotion extends androidx.transition.PathMotion {
+ ctor public PatternPathMotion();
+ ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
+ ctor public PatternPathMotion(android.graphics.Path!);
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public android.graphics.Path! getPatternPath();
+ method public void setPatternPath(android.graphics.Path!);
+ }
+
+ public class Scene {
+ ctor public Scene(android.view.ViewGroup);
+ ctor public Scene(android.view.ViewGroup, android.view.View);
+ method public void enter();
+ method public void exit();
+ method public static androidx.transition.Scene? getCurrentScene(android.view.ViewGroup);
+ method public static androidx.transition.Scene getSceneForLayout(android.view.ViewGroup, @LayoutRes int, android.content.Context);
+ method public android.view.ViewGroup getSceneRoot();
+ method public void setEnterAction(Runnable?);
+ method public void setExitAction(Runnable?);
+ }
+
+ public class SidePropagation extends androidx.transition.VisibilityPropagation {
+ ctor public SidePropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ method public void setSide(int);
+ }
+
+ public class Slide extends androidx.transition.Visibility {
+ ctor public Slide();
+ ctor public Slide(int);
+ ctor public Slide(android.content.Context, android.util.AttributeSet);
+ method public int getSlideEdge();
+ method public void setSlideEdge(int);
+ }
+
+ public abstract class Transition implements java.lang.Cloneable {
+ ctor public Transition();
+ ctor public Transition(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.Transition addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition addTarget(android.view.View);
+ method public androidx.transition.Transition addTarget(@IdRes int);
+ method public androidx.transition.Transition addTarget(String);
+ method public androidx.transition.Transition addTarget(Class<?>);
+ method public abstract void captureEndValues(androidx.transition.TransitionValues);
+ method public abstract void captureStartValues(androidx.transition.TransitionValues);
+ method public androidx.transition.Transition! clone();
+ method public android.animation.Animator? createAnimator(android.view.ViewGroup, androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method public androidx.transition.Transition excludeChildren(android.view.View, boolean);
+ method public androidx.transition.Transition excludeChildren(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeChildren(Class<?>, boolean);
+ method public androidx.transition.Transition excludeTarget(android.view.View, boolean);
+ method public androidx.transition.Transition excludeTarget(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeTarget(String, boolean);
+ method public androidx.transition.Transition excludeTarget(Class<?>, boolean);
+ method public long getDuration();
+ method public android.graphics.Rect? getEpicenter();
+ method public androidx.transition.Transition.EpicenterCallback? getEpicenterCallback();
+ method public android.animation.TimeInterpolator? getInterpolator();
+ method public String getName();
+ method public androidx.transition.PathMotion getPathMotion();
+ method public androidx.transition.TransitionPropagation? getPropagation();
+ method public long getStartDelay();
+ method public java.util.List<java.lang.Integer!> getTargetIds();
+ method public java.util.List<java.lang.String!>? getTargetNames();
+ method public java.util.List<java.lang.Class<?>!>? getTargetTypes();
+ method public java.util.List<android.view.View!> getTargets();
+ method public String![]? getTransitionProperties();
+ method public androidx.transition.TransitionValues? getTransitionValues(android.view.View, boolean);
+ method public boolean isTransitionRequired(androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method public androidx.transition.Transition removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition removeTarget(android.view.View);
+ method public androidx.transition.Transition removeTarget(@IdRes int);
+ method public androidx.transition.Transition removeTarget(String);
+ method public androidx.transition.Transition removeTarget(Class<?>);
+ method public androidx.transition.Transition setDuration(long);
+ method public void setEpicenterCallback(androidx.transition.Transition.EpicenterCallback?);
+ method public androidx.transition.Transition setInterpolator(android.animation.TimeInterpolator?);
+ method public void setMatchOrder(int...);
+ method public void setPathMotion(androidx.transition.PathMotion?);
+ method public void setPropagation(androidx.transition.TransitionPropagation?);
+ method public androidx.transition.Transition setStartDelay(long);
+ field public static final int MATCH_ID = 3; // 0x3
+ field public static final int MATCH_INSTANCE = 1; // 0x1
+ field public static final int MATCH_ITEM_ID = 4; // 0x4
+ field public static final int MATCH_NAME = 2; // 0x2
+ }
+
+ public abstract static class Transition.EpicenterCallback {
+ ctor public Transition.EpicenterCallback();
+ method public abstract android.graphics.Rect! onGetEpicenter(androidx.transition.Transition);
+ }
+
+ public static interface Transition.TransitionListener {
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionInflater {
+ method public static androidx.transition.TransitionInflater from(android.content.Context);
+ method public androidx.transition.Transition! inflateTransition(int);
+ method public androidx.transition.TransitionManager! inflateTransitionManager(int, android.view.ViewGroup!);
+ }
+
+ public class TransitionListenerAdapter implements androidx.transition.Transition.TransitionListener {
+ ctor public TransitionListenerAdapter();
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionManager {
+ ctor public TransitionManager();
+ method public static void beginDelayedTransition(android.view.ViewGroup);
+ method public static void beginDelayedTransition(android.view.ViewGroup, androidx.transition.Transition?);
+ method public static void endTransitions(android.view.ViewGroup!);
+ method public static void go(androidx.transition.Scene);
+ method public static void go(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Scene, androidx.transition.Transition?);
+ method public void transitionTo(androidx.transition.Scene);
+ }
+
+ public abstract class TransitionPropagation {
+ ctor public TransitionPropagation();
+ method public abstract void captureValues(androidx.transition.TransitionValues!);
+ method public abstract String![]! getPropagationProperties();
+ method public abstract long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ }
+
+ public class TransitionSet extends androidx.transition.Transition {
+ ctor public TransitionSet();
+ ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.TransitionSet addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet addTarget(android.view.View);
+ method public androidx.transition.TransitionSet addTarget(@IdRes int);
+ method public androidx.transition.TransitionSet addTarget(String);
+ method public androidx.transition.TransitionSet addTarget(Class<?>);
+ method public androidx.transition.TransitionSet addTransition(androidx.transition.Transition);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public int getOrdering();
+ method public androidx.transition.Transition? getTransitionAt(int);
+ method public int getTransitionCount();
+ method public androidx.transition.TransitionSet removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet removeTarget(@IdRes int);
+ method public androidx.transition.TransitionSet removeTarget(android.view.View);
+ method public androidx.transition.TransitionSet removeTarget(Class<?>);
+ method public androidx.transition.TransitionSet removeTarget(String);
+ method public androidx.transition.TransitionSet removeTransition(androidx.transition.Transition);
+ method public androidx.transition.TransitionSet setDuration(long);
+ method public androidx.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator?);
+ method public androidx.transition.TransitionSet setOrdering(int);
+ method public androidx.transition.TransitionSet setStartDelay(long);
+ field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
+ field public static final int ORDERING_TOGETHER = 0; // 0x0
+ }
+
+ public class TransitionValues {
+ ctor @Deprecated public TransitionValues();
+ ctor public TransitionValues(android.view.View);
+ field public final java.util.Map<java.lang.String!,java.lang.Object!>! values;
+ field public android.view.View! view;
+ }
+
+ public abstract class Visibility extends androidx.transition.Transition {
+ ctor public Visibility();
+ ctor public Visibility(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public int getMode();
+ method public boolean isVisible(androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setMode(int);
+ field public static final int MODE_IN = 1; // 0x1
+ field public static final int MODE_OUT = 2; // 0x2
+ }
+
+ public abstract class VisibilityPropagation extends androidx.transition.TransitionPropagation {
+ ctor public VisibilityPropagation();
+ method public void captureValues(androidx.transition.TransitionValues!);
+ method public String![]! getPropagationProperties();
+ method public int getViewVisibility(androidx.transition.TransitionValues!);
+ method public int getViewX(androidx.transition.TransitionValues!);
+ method public int getViewY(androidx.transition.TransitionValues!);
+ }
+
+}
+
diff --git a/transition/transition/api/public_plus_experimental_1.4.0-beta01.txt b/transition/transition/api/public_plus_experimental_1.4.0-beta01.txt
new file mode 100644
index 0000000..e314794
--- /dev/null
+++ b/transition/transition/api/public_plus_experimental_1.4.0-beta01.txt
@@ -0,0 +1,283 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public class ArcMotion extends androidx.transition.PathMotion {
+ ctor public ArcMotion();
+ ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
+ method public float getMaximumAngle();
+ method public float getMinimumHorizontalAngle();
+ method public float getMinimumVerticalAngle();
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public void setMaximumAngle(float);
+ method public void setMinimumHorizontalAngle(float);
+ method public void setMinimumVerticalAngle(float);
+ }
+
+ public class AutoTransition extends androidx.transition.TransitionSet {
+ ctor public AutoTransition();
+ ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class ChangeBounds extends androidx.transition.Transition {
+ ctor public ChangeBounds();
+ ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getResizeClip();
+ method public void setResizeClip(boolean);
+ }
+
+ public class ChangeClipBounds extends androidx.transition.Transition {
+ ctor public ChangeClipBounds();
+ ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeImageTransform extends androidx.transition.Transition {
+ ctor public ChangeImageTransform();
+ ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeScroll extends androidx.transition.Transition {
+ ctor public ChangeScroll();
+ ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeTransform extends androidx.transition.Transition {
+ ctor public ChangeTransform();
+ ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getReparent();
+ method public boolean getReparentWithOverlay();
+ method public void setReparent(boolean);
+ method public void setReparentWithOverlay(boolean);
+ }
+
+ public class CircularPropagation extends androidx.transition.VisibilityPropagation {
+ ctor public CircularPropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ }
+
+ public class Explode extends androidx.transition.Visibility {
+ ctor public Explode();
+ ctor public Explode(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class Fade extends androidx.transition.Visibility {
+ ctor public Fade(int);
+ ctor public Fade();
+ ctor public Fade(android.content.Context, android.util.AttributeSet);
+ field public static final int IN = 1; // 0x1
+ field public static final int OUT = 2; // 0x2
+ }
+
+ public abstract class PathMotion {
+ ctor public PathMotion();
+ ctor public PathMotion(android.content.Context, android.util.AttributeSet);
+ method public abstract android.graphics.Path getPath(float, float, float, float);
+ }
+
+ public class PatternPathMotion extends androidx.transition.PathMotion {
+ ctor public PatternPathMotion();
+ ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
+ ctor public PatternPathMotion(android.graphics.Path!);
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public android.graphics.Path! getPatternPath();
+ method public void setPatternPath(android.graphics.Path!);
+ }
+
+ public class Scene {
+ ctor public Scene(android.view.ViewGroup);
+ ctor public Scene(android.view.ViewGroup, android.view.View);
+ method public void enter();
+ method public void exit();
+ method public static androidx.transition.Scene? getCurrentScene(android.view.ViewGroup);
+ method public static androidx.transition.Scene getSceneForLayout(android.view.ViewGroup, @LayoutRes int, android.content.Context);
+ method public android.view.ViewGroup getSceneRoot();
+ method public void setEnterAction(Runnable?);
+ method public void setExitAction(Runnable?);
+ }
+
+ public class SidePropagation extends androidx.transition.VisibilityPropagation {
+ ctor public SidePropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ method public void setSide(int);
+ }
+
+ public class Slide extends androidx.transition.Visibility {
+ ctor public Slide();
+ ctor public Slide(int);
+ ctor public Slide(android.content.Context, android.util.AttributeSet);
+ method public int getSlideEdge();
+ method public void setSlideEdge(int);
+ }
+
+ public abstract class Transition implements java.lang.Cloneable {
+ ctor public Transition();
+ ctor public Transition(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.Transition addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition addTarget(android.view.View);
+ method public androidx.transition.Transition addTarget(@IdRes int);
+ method public androidx.transition.Transition addTarget(String);
+ method public androidx.transition.Transition addTarget(Class<?>);
+ method public abstract void captureEndValues(androidx.transition.TransitionValues);
+ method public abstract void captureStartValues(androidx.transition.TransitionValues);
+ method public androidx.transition.Transition! clone();
+ method public android.animation.Animator? createAnimator(android.view.ViewGroup, androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method public androidx.transition.Transition excludeChildren(android.view.View, boolean);
+ method public androidx.transition.Transition excludeChildren(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeChildren(Class<?>, boolean);
+ method public androidx.transition.Transition excludeTarget(android.view.View, boolean);
+ method public androidx.transition.Transition excludeTarget(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeTarget(String, boolean);
+ method public androidx.transition.Transition excludeTarget(Class<?>, boolean);
+ method public long getDuration();
+ method public android.graphics.Rect? getEpicenter();
+ method public androidx.transition.Transition.EpicenterCallback? getEpicenterCallback();
+ method public android.animation.TimeInterpolator? getInterpolator();
+ method public String getName();
+ method public androidx.transition.PathMotion getPathMotion();
+ method public androidx.transition.TransitionPropagation? getPropagation();
+ method public long getStartDelay();
+ method public java.util.List<java.lang.Integer!> getTargetIds();
+ method public java.util.List<java.lang.String!>? getTargetNames();
+ method public java.util.List<java.lang.Class<?>!>? getTargetTypes();
+ method public java.util.List<android.view.View!> getTargets();
+ method public String![]? getTransitionProperties();
+ method public androidx.transition.TransitionValues? getTransitionValues(android.view.View, boolean);
+ method public boolean isTransitionRequired(androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method public androidx.transition.Transition removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition removeTarget(android.view.View);
+ method public androidx.transition.Transition removeTarget(@IdRes int);
+ method public androidx.transition.Transition removeTarget(String);
+ method public androidx.transition.Transition removeTarget(Class<?>);
+ method public androidx.transition.Transition setDuration(long);
+ method public void setEpicenterCallback(androidx.transition.Transition.EpicenterCallback?);
+ method public androidx.transition.Transition setInterpolator(android.animation.TimeInterpolator?);
+ method public void setMatchOrder(int...);
+ method public void setPathMotion(androidx.transition.PathMotion?);
+ method public void setPropagation(androidx.transition.TransitionPropagation?);
+ method public androidx.transition.Transition setStartDelay(long);
+ field public static final int MATCH_ID = 3; // 0x3
+ field public static final int MATCH_INSTANCE = 1; // 0x1
+ field public static final int MATCH_ITEM_ID = 4; // 0x4
+ field public static final int MATCH_NAME = 2; // 0x2
+ }
+
+ public abstract static class Transition.EpicenterCallback {
+ ctor public Transition.EpicenterCallback();
+ method public abstract android.graphics.Rect! onGetEpicenter(androidx.transition.Transition);
+ }
+
+ public static interface Transition.TransitionListener {
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionInflater {
+ method public static androidx.transition.TransitionInflater from(android.content.Context);
+ method public androidx.transition.Transition! inflateTransition(int);
+ method public androidx.transition.TransitionManager! inflateTransitionManager(int, android.view.ViewGroup!);
+ }
+
+ public class TransitionListenerAdapter implements androidx.transition.Transition.TransitionListener {
+ ctor public TransitionListenerAdapter();
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionManager {
+ ctor public TransitionManager();
+ method public static void beginDelayedTransition(android.view.ViewGroup);
+ method public static void beginDelayedTransition(android.view.ViewGroup, androidx.transition.Transition?);
+ method public static void endTransitions(android.view.ViewGroup!);
+ method public static void go(androidx.transition.Scene);
+ method public static void go(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Scene, androidx.transition.Transition?);
+ method public void transitionTo(androidx.transition.Scene);
+ }
+
+ public abstract class TransitionPropagation {
+ ctor public TransitionPropagation();
+ method public abstract void captureValues(androidx.transition.TransitionValues!);
+ method public abstract String![]! getPropagationProperties();
+ method public abstract long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ }
+
+ public class TransitionSet extends androidx.transition.Transition {
+ ctor public TransitionSet();
+ ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.TransitionSet addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet addTarget(android.view.View);
+ method public androidx.transition.TransitionSet addTarget(@IdRes int);
+ method public androidx.transition.TransitionSet addTarget(String);
+ method public androidx.transition.TransitionSet addTarget(Class<?>);
+ method public androidx.transition.TransitionSet addTransition(androidx.transition.Transition);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public int getOrdering();
+ method public androidx.transition.Transition? getTransitionAt(int);
+ method public int getTransitionCount();
+ method public androidx.transition.TransitionSet removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet removeTarget(@IdRes int);
+ method public androidx.transition.TransitionSet removeTarget(android.view.View);
+ method public androidx.transition.TransitionSet removeTarget(Class<?>);
+ method public androidx.transition.TransitionSet removeTarget(String);
+ method public androidx.transition.TransitionSet removeTransition(androidx.transition.Transition);
+ method public androidx.transition.TransitionSet setDuration(long);
+ method public androidx.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator?);
+ method public androidx.transition.TransitionSet setOrdering(int);
+ method public androidx.transition.TransitionSet setStartDelay(long);
+ field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
+ field public static final int ORDERING_TOGETHER = 0; // 0x0
+ }
+
+ public class TransitionValues {
+ ctor @Deprecated public TransitionValues();
+ ctor public TransitionValues(android.view.View);
+ field public final java.util.Map<java.lang.String!,java.lang.Object!>! values;
+ field public android.view.View! view;
+ }
+
+ public abstract class Visibility extends androidx.transition.Transition {
+ ctor public Visibility();
+ ctor public Visibility(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public int getMode();
+ method public boolean isVisible(androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setMode(int);
+ field public static final int MODE_IN = 1; // 0x1
+ field public static final int MODE_OUT = 2; // 0x2
+ }
+
+ public abstract class VisibilityPropagation extends androidx.transition.TransitionPropagation {
+ ctor public VisibilityPropagation();
+ method public void captureValues(androidx.transition.TransitionValues!);
+ method public String![]! getPropagationProperties();
+ method public int getViewVisibility(androidx.transition.TransitionValues!);
+ method public int getViewX(androidx.transition.TransitionValues!);
+ method public int getViewY(androidx.transition.TransitionValues!);
+ }
+
+}
+
diff --git a/transition/transition/api/res-1.4.0-beta01.txt b/transition/transition/api/res-1.4.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/transition/transition/api/res-1.4.0-beta01.txt
diff --git a/transition/transition/api/restricted_1.4.0-beta01.ignore b/transition/transition/api/restricted_1.4.0-beta01.ignore
new file mode 100644
index 0000000..c46825a
--- /dev/null
+++ b/transition/transition/api/restricted_1.4.0-beta01.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedMethod: androidx.transition.FragmentTransitionSupport#setListenerForTransitionEnd(Fragment, Object, androidx.core.os.CancellationSignal, Runnable):
+ Removed method androidx.transition.FragmentTransitionSupport.setListenerForTransitionEnd(Fragment,Object,androidx.core.os.CancellationSignal,Runnable)
diff --git a/transition/transition/api/restricted_1.4.0-beta01.txt b/transition/transition/api/restricted_1.4.0-beta01.txt
new file mode 100644
index 0000000..fdce88d
--- /dev/null
+++ b/transition/transition/api/restricted_1.4.0-beta01.txt
@@ -0,0 +1,320 @@
+// Signature format: 3.0
+package androidx.transition {
+
+ public class ArcMotion extends androidx.transition.PathMotion {
+ ctor public ArcMotion();
+ ctor public ArcMotion(android.content.Context, android.util.AttributeSet);
+ method public float getMaximumAngle();
+ method public float getMinimumHorizontalAngle();
+ method public float getMinimumVerticalAngle();
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public void setMaximumAngle(float);
+ method public void setMinimumHorizontalAngle(float);
+ method public void setMinimumVerticalAngle(float);
+ }
+
+ public class AutoTransition extends androidx.transition.TransitionSet {
+ ctor public AutoTransition();
+ ctor public AutoTransition(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class ChangeBounds extends androidx.transition.Transition {
+ ctor public ChangeBounds();
+ ctor public ChangeBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getResizeClip();
+ method public void setResizeClip(boolean);
+ }
+
+ public class ChangeClipBounds extends androidx.transition.Transition {
+ ctor public ChangeClipBounds();
+ ctor public ChangeClipBounds(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeImageTransform extends androidx.transition.Transition {
+ ctor public ChangeImageTransform();
+ ctor public ChangeImageTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeScroll extends androidx.transition.Transition {
+ ctor public ChangeScroll();
+ ctor public ChangeScroll(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ }
+
+ public class ChangeTransform extends androidx.transition.Transition {
+ ctor public ChangeTransform();
+ ctor public ChangeTransform(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public boolean getReparent();
+ method public boolean getReparentWithOverlay();
+ method public void setReparent(boolean);
+ method public void setReparentWithOverlay(boolean);
+ }
+
+ public class CircularPropagation extends androidx.transition.VisibilityPropagation {
+ ctor public CircularPropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ }
+
+ public class Explode extends androidx.transition.Visibility {
+ ctor public Explode();
+ ctor public Explode(android.content.Context, android.util.AttributeSet);
+ }
+
+ public class Fade extends androidx.transition.Visibility {
+ ctor public Fade(@androidx.transition.Visibility.Mode int);
+ ctor public Fade();
+ ctor public Fade(android.content.Context, android.util.AttributeSet);
+ field public static final int IN = 1; // 0x1
+ field public static final int OUT = 2; // 0x2
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FragmentTransitionSupport extends androidx.fragment.app.FragmentTransitionImpl {
+ ctor public FragmentTransitionSupport();
+ method public void addTarget(Object!, android.view.View!);
+ method public void addTargets(Object!, java.util.ArrayList<android.view.View!>!);
+ method public void beginDelayedTransition(android.view.ViewGroup!, Object!);
+ method public boolean canHandle(Object!);
+ method public Object! cloneTransition(Object!);
+ method public Object! mergeTransitionsInSequence(Object!, Object!, Object!);
+ method public Object! mergeTransitionsTogether(Object!, Object!, Object!);
+ method public void removeTarget(Object!, android.view.View!);
+ method public void replaceTargets(Object!, java.util.ArrayList<android.view.View!>!, java.util.ArrayList<android.view.View!>!);
+ method public void scheduleHideFragmentView(Object!, android.view.View!, java.util.ArrayList<android.view.View!>!);
+ method public void scheduleRemoveTargets(Object!, Object!, java.util.ArrayList<android.view.View!>!, Object!, java.util.ArrayList<android.view.View!>!, Object!, java.util.ArrayList<android.view.View!>!);
+ method public void setEpicenter(Object!, android.view.View!);
+ method public void setEpicenter(Object!, android.graphics.Rect!);
+ method public void setSharedElementTargets(Object!, android.view.View!, java.util.ArrayList<android.view.View!>!);
+ method public void swapSharedElementTargets(Object!, java.util.ArrayList<android.view.View!>!, java.util.ArrayList<android.view.View!>!);
+ method public Object! wrapTransitionInSet(Object!);
+ }
+
+ public abstract class PathMotion {
+ ctor public PathMotion();
+ ctor public PathMotion(android.content.Context, android.util.AttributeSet);
+ method public abstract android.graphics.Path getPath(float, float, float, float);
+ }
+
+ public class PatternPathMotion extends androidx.transition.PathMotion {
+ ctor public PatternPathMotion();
+ ctor public PatternPathMotion(android.content.Context, android.util.AttributeSet);
+ ctor public PatternPathMotion(android.graphics.Path!);
+ method public android.graphics.Path getPath(float, float, float, float);
+ method public android.graphics.Path! getPatternPath();
+ method public void setPatternPath(android.graphics.Path!);
+ }
+
+ public class Scene {
+ ctor public Scene(android.view.ViewGroup);
+ ctor public Scene(android.view.ViewGroup, android.view.View);
+ method public void enter();
+ method public void exit();
+ method public static androidx.transition.Scene? getCurrentScene(android.view.ViewGroup);
+ method public static androidx.transition.Scene getSceneForLayout(android.view.ViewGroup, @LayoutRes int, android.content.Context);
+ method public android.view.ViewGroup getSceneRoot();
+ method public void setEnterAction(Runnable?);
+ method public void setExitAction(Runnable?);
+ }
+
+ public class SidePropagation extends androidx.transition.VisibilityPropagation {
+ ctor public SidePropagation();
+ method public long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setPropagationSpeed(float);
+ method public void setSide(@androidx.transition.Slide.GravityFlag int);
+ }
+
+ public class Slide extends androidx.transition.Visibility {
+ ctor public Slide();
+ ctor public Slide(@androidx.transition.Slide.GravityFlag int);
+ ctor public Slide(android.content.Context, android.util.AttributeSet);
+ method @androidx.transition.Slide.GravityFlag public int getSlideEdge();
+ method public void setSlideEdge(@androidx.transition.Slide.GravityFlag int);
+ }
+
+ @IntDef({android.view.Gravity.LEFT, android.view.Gravity.TOP, android.view.Gravity.RIGHT, android.view.Gravity.BOTTOM, android.view.Gravity.START, android.view.Gravity.END}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface Slide.GravityFlag {
+ }
+
+ public abstract class Transition implements java.lang.Cloneable {
+ ctor public Transition();
+ ctor public Transition(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.Transition addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition addTarget(android.view.View);
+ method public androidx.transition.Transition addTarget(@IdRes int);
+ method public androidx.transition.Transition addTarget(String);
+ method public androidx.transition.Transition addTarget(Class<?>);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void animate(android.animation.Animator!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void cancel();
+ method public abstract void captureEndValues(androidx.transition.TransitionValues);
+ method public abstract void captureStartValues(androidx.transition.TransitionValues);
+ method public androidx.transition.Transition! clone();
+ method public android.animation.Animator? createAnimator(android.view.ViewGroup, androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void createAnimators(android.view.ViewGroup!, androidx.transition.TransitionValuesMaps!, androidx.transition.TransitionValuesMaps!, java.util.ArrayList<androidx.transition.TransitionValues!>!, java.util.ArrayList<androidx.transition.TransitionValues!>!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void end();
+ method public androidx.transition.Transition excludeChildren(android.view.View, boolean);
+ method public androidx.transition.Transition excludeChildren(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeChildren(Class<?>, boolean);
+ method public androidx.transition.Transition excludeTarget(android.view.View, boolean);
+ method public androidx.transition.Transition excludeTarget(@IdRes int, boolean);
+ method public androidx.transition.Transition excludeTarget(String, boolean);
+ method public androidx.transition.Transition excludeTarget(Class<?>, boolean);
+ method public long getDuration();
+ method public android.graphics.Rect? getEpicenter();
+ method public androidx.transition.Transition.EpicenterCallback? getEpicenterCallback();
+ method public android.animation.TimeInterpolator? getInterpolator();
+ method public String getName();
+ method public androidx.transition.PathMotion getPathMotion();
+ method public androidx.transition.TransitionPropagation? getPropagation();
+ method public long getStartDelay();
+ method public java.util.List<java.lang.Integer!> getTargetIds();
+ method public java.util.List<java.lang.String!>? getTargetNames();
+ method public java.util.List<java.lang.Class<?>!>? getTargetTypes();
+ method public java.util.List<android.view.View!> getTargets();
+ method public String![]? getTransitionProperties();
+ method public androidx.transition.TransitionValues? getTransitionValues(android.view.View, boolean);
+ method public boolean isTransitionRequired(androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void pause(android.view.View!);
+ method public androidx.transition.Transition removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.Transition removeTarget(android.view.View);
+ method public androidx.transition.Transition removeTarget(@IdRes int);
+ method public androidx.transition.Transition removeTarget(String);
+ method public androidx.transition.Transition removeTarget(Class<?>);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void resume(android.view.View!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void runAnimators();
+ method public androidx.transition.Transition setDuration(long);
+ method public void setEpicenterCallback(androidx.transition.Transition.EpicenterCallback?);
+ method public androidx.transition.Transition setInterpolator(android.animation.TimeInterpolator?);
+ method public void setMatchOrder(@androidx.transition.Transition.MatchOrder int...);
+ method public void setPathMotion(androidx.transition.PathMotion?);
+ method public void setPropagation(androidx.transition.TransitionPropagation?);
+ method public androidx.transition.Transition setStartDelay(long);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void start();
+ field public static final int MATCH_ID = 3; // 0x3
+ field public static final int MATCH_INSTANCE = 1; // 0x1
+ field public static final int MATCH_ITEM_ID = 4; // 0x4
+ field public static final int MATCH_NAME = 2; // 0x2
+ }
+
+ public abstract static class Transition.EpicenterCallback {
+ ctor public Transition.EpicenterCallback();
+ method public abstract android.graphics.Rect! onGetEpicenter(androidx.transition.Transition);
+ }
+
+ @IntDef({androidx.transition.Transition.MATCH_INSTANCE, androidx.transition.Transition.MATCH_NAME, androidx.transition.Transition.MATCH_ID, androidx.transition.Transition.MATCH_ITEM_ID}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface Transition.MatchOrder {
+ }
+
+ public static interface Transition.TransitionListener {
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionInflater {
+ method public static androidx.transition.TransitionInflater from(android.content.Context);
+ method public androidx.transition.Transition! inflateTransition(int);
+ method public androidx.transition.TransitionManager! inflateTransitionManager(int, android.view.ViewGroup!);
+ }
+
+ public class TransitionListenerAdapter implements androidx.transition.Transition.TransitionListener {
+ ctor public TransitionListenerAdapter();
+ method public void onTransitionCancel(androidx.transition.Transition);
+ method public void onTransitionEnd(androidx.transition.Transition);
+ method public void onTransitionPause(androidx.transition.Transition);
+ method public void onTransitionResume(androidx.transition.Transition);
+ method public void onTransitionStart(androidx.transition.Transition);
+ }
+
+ public class TransitionManager {
+ ctor public TransitionManager();
+ method public static void beginDelayedTransition(android.view.ViewGroup);
+ method public static void beginDelayedTransition(android.view.ViewGroup, androidx.transition.Transition?);
+ method public static void endTransitions(android.view.ViewGroup!);
+ method public static void go(androidx.transition.Scene);
+ method public static void go(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Transition?);
+ method public void setTransition(androidx.transition.Scene, androidx.transition.Scene, androidx.transition.Transition?);
+ method public void transitionTo(androidx.transition.Scene);
+ }
+
+ public abstract class TransitionPropagation {
+ ctor public TransitionPropagation();
+ method public abstract void captureValues(androidx.transition.TransitionValues!);
+ method public abstract String![]! getPropagationProperties();
+ method public abstract long getStartDelay(android.view.ViewGroup!, androidx.transition.Transition!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ }
+
+ public class TransitionSet extends androidx.transition.Transition {
+ ctor public TransitionSet();
+ ctor public TransitionSet(android.content.Context, android.util.AttributeSet);
+ method public androidx.transition.TransitionSet addListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet addTarget(android.view.View);
+ method public androidx.transition.TransitionSet addTarget(@IdRes int);
+ method public androidx.transition.TransitionSet addTarget(String);
+ method public androidx.transition.TransitionSet addTarget(Class<?>);
+ method public androidx.transition.TransitionSet addTransition(androidx.transition.Transition);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method public int getOrdering();
+ method public androidx.transition.Transition? getTransitionAt(int);
+ method public int getTransitionCount();
+ method public androidx.transition.TransitionSet removeListener(androidx.transition.Transition.TransitionListener);
+ method public androidx.transition.TransitionSet removeTarget(@IdRes int);
+ method public androidx.transition.TransitionSet removeTarget(android.view.View);
+ method public androidx.transition.TransitionSet removeTarget(Class<?>);
+ method public androidx.transition.TransitionSet removeTarget(String);
+ method public androidx.transition.TransitionSet removeTransition(androidx.transition.Transition);
+ method public androidx.transition.TransitionSet setDuration(long);
+ method public androidx.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator?);
+ method public androidx.transition.TransitionSet setOrdering(int);
+ method public androidx.transition.TransitionSet setStartDelay(long);
+ field public static final int ORDERING_SEQUENTIAL = 1; // 0x1
+ field public static final int ORDERING_TOGETHER = 0; // 0x0
+ }
+
+ public class TransitionValues {
+ ctor @Deprecated public TransitionValues();
+ ctor public TransitionValues(android.view.View);
+ field public final java.util.Map<java.lang.String!,java.lang.Object!>! values;
+ field public android.view.View! view;
+ }
+
+ public abstract class Visibility extends androidx.transition.Transition {
+ ctor public Visibility();
+ ctor public Visibility(android.content.Context, android.util.AttributeSet);
+ method public void captureEndValues(androidx.transition.TransitionValues);
+ method public void captureStartValues(androidx.transition.TransitionValues);
+ method @androidx.transition.Visibility.Mode public int getMode();
+ method public boolean isVisible(androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onAppear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, androidx.transition.TransitionValues!, int, androidx.transition.TransitionValues!, int);
+ method public android.animation.Animator? onDisappear(android.view.ViewGroup!, android.view.View!, androidx.transition.TransitionValues!, androidx.transition.TransitionValues!);
+ method public void setMode(@androidx.transition.Visibility.Mode int);
+ field public static final int MODE_IN = 1; // 0x1
+ field public static final int MODE_OUT = 2; // 0x2
+ }
+
+ @IntDef(flag=true, value={androidx.transition.Visibility.MODE_IN, androidx.transition.Visibility.MODE_OUT, androidx.transition.Fade.IN, androidx.transition.Fade.OUT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface Visibility.Mode {
+ }
+
+ public abstract class VisibilityPropagation extends androidx.transition.TransitionPropagation {
+ ctor public VisibilityPropagation();
+ method public void captureValues(androidx.transition.TransitionValues!);
+ method public String![]! getPropagationProperties();
+ method public int getViewVisibility(androidx.transition.TransitionValues!);
+ method public int getViewX(androidx.transition.TransitionValues!);
+ method public int getViewY(androidx.transition.TransitionValues!);
+ }
+
+}
+
diff --git a/tv-provider/tv-provider/api/1.1.0-alpha01.txt b/tv-provider/tv-provider/api/1.1.0-alpha01.txt
index 7adf9c2..663790c 100644
--- a/tv-provider/tv-provider/api/1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/1.1.0-alpha01.txt
@@ -178,6 +178,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -244,6 +245,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -283,6 +285,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -324,6 +327,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -505,6 +509,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -574,6 +579,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -638,6 +644,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -704,6 +711,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -792,6 +800,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -859,6 +868,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/api/api_lint.ignore b/tv-provider/tv-provider/api/api_lint.ignore
index 7c43e2f..783a749 100644
--- a/tv-provider/tv-provider/api/api_lint.ignore
+++ b/tv-provider/tv-provider/api/api_lint.ignore
@@ -305,12 +305,6 @@
Missing nullability on method `downloadBitmap` return
MissingNullability: androidx.tvprovider.media.tv.PreviewChannelHelper#getAllChannels():
Missing nullability on method `getAllChannels` return
-MissingNullability: androidx.tvprovider.media.tv.PreviewChannelHelper#getPreviewChannel(long):
- Missing nullability on method `getPreviewChannel` return
-MissingNullability: androidx.tvprovider.media.tv.PreviewChannelHelper#getPreviewProgram(long):
- Missing nullability on method `getPreviewProgram` return
-MissingNullability: androidx.tvprovider.media.tv.PreviewChannelHelper#getWatchNextProgram(long):
- Missing nullability on method `getWatchNextProgram` return
MissingNullability: androidx.tvprovider.media.tv.PreviewProgram#fromCursor(android.database.Cursor):
Missing nullability on method `fromCursor` return
MissingNullability: androidx.tvprovider.media.tv.PreviewProgram#fromCursor(android.database.Cursor) parameter #0:
diff --git a/tv-provider/tv-provider/api/current.txt b/tv-provider/tv-provider/api/current.txt
index 7adf9c2..663790c 100644
--- a/tv-provider/tv-provider/api/current.txt
+++ b/tv-provider/tv-provider/api/current.txt
@@ -178,6 +178,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -244,6 +245,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -283,6 +285,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -324,6 +327,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -505,6 +509,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -574,6 +579,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -638,6 +644,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -704,6 +711,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -792,6 +800,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -859,6 +868,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt b/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
index 7adf9c2..663790c 100644
--- a/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
@@ -178,6 +178,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -244,6 +245,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -283,6 +285,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -324,6 +327,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -505,6 +509,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -574,6 +579,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -638,6 +644,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -704,6 +711,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -792,6 +800,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -859,6 +868,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/api/public_plus_experimental_current.txt b/tv-provider/tv-provider/api/public_plus_experimental_current.txt
index 7adf9c2..663790c 100644
--- a/tv-provider/tv-provider/api/public_plus_experimental_current.txt
+++ b/tv-provider/tv-provider/api/public_plus_experimental_current.txt
@@ -178,6 +178,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -244,6 +245,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -283,6 +285,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -324,6 +327,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -505,6 +509,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -574,6 +579,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -638,6 +644,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -704,6 +711,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_STARTING_PRICE = "starting_price";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
@@ -792,6 +800,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -859,6 +868,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt b/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
index c7ea880..0747b53 100644
--- a/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
@@ -207,6 +207,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -275,6 +276,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -315,6 +317,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -357,6 +360,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -597,6 +601,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
field public static final String COLUMN_TITLE = "title";
@@ -638,6 +643,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -702,6 +708,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -736,6 +743,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
field public static final String COLUMN_TITLE = "title";
@@ -804,6 +812,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -873,6 +882,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/api/restricted_current.txt b/tv-provider/tv-provider/api/restricted_current.txt
index c7ea880..0747b53 100644
--- a/tv-provider/tv-provider/api/restricted_current.txt
+++ b/tv-provider/tv-provider/api/restricted_current.txt
@@ -207,6 +207,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -275,6 +276,7 @@
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.PreviewProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.PreviewProgram.Builder! setThumbnailAspectRatio(int);
@@ -315,6 +317,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public android.net.Uri! getThumbnailUri();
method public String! getTitle();
@@ -357,6 +360,7 @@
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.Program.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.Program.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.Program.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.Program.Builder! setThumbnailUri(android.net.Uri!);
method public androidx.tvprovider.media.tv.Program.Builder! setTitle(String!);
@@ -597,6 +601,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
field public static final String COLUMN_TITLE = "title";
@@ -638,6 +643,7 @@
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field @Deprecated public static final String COLUMN_SEASON_NUMBER = "season_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -702,6 +708,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -736,6 +743,7 @@
field public static final String COLUMN_SEARCHABLE = "searchable";
field public static final String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number";
field public static final String COLUMN_SEASON_TITLE = "season_title";
+ field public static final String COLUMN_SERIES_ID = "series_id";
field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
field public static final String COLUMN_TITLE = "title";
@@ -804,6 +812,7 @@
method public int getReviewRatingStyle();
method public String! getSeasonNumber();
method public String! getSeasonTitle();
+ method public String? getSeriesId();
method public long getStartTimeUtcMillis();
method public String! getStartingPrice();
method public int getThumbnailAspectRatio();
@@ -873,6 +882,7 @@
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonNumber(String!, int);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setSeasonTitle(String!);
+ method public androidx.tvprovider.media.tv.WatchNextProgram.Builder setSeriesId(String?);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartTimeUtcMillis(long);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setStartingPrice(String!);
method public androidx.tvprovider.media.tv.WatchNextProgram.Builder! setThumbnailAspectRatio(int);
diff --git a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/BaseProgram.java b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/BaseProgram.java
index fc74e69..645ad7f 100644
--- a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/BaseProgram.java
+++ b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/BaseProgram.java
@@ -25,6 +25,8 @@
import android.os.Build;
import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.tvprovider.media.tv.TvContractCompat.BaseTvColumns;
import androidx.tvprovider.media.tv.TvContractCompat.ProgramColumns;
@@ -290,6 +292,16 @@
return mValues.getAsString(Programs.COLUMN_REVIEW_RATING);
}
+ /**
+ *
+ * @return The series ID for the program.
+ * @see androidx.tvprovider.media.tv.TvContractCompat.Programs#COLUMN_SERIES_ID
+ */
+ @Nullable
+ public String getSeriesId() {
+ return mValues.getAsString(Programs.COLUMN_SERIES_ID);
+ }
+
@Override
public int hashCode() {
return mValues.hashCode();
@@ -466,6 +478,10 @@
builder.setReviewRating(cursor.getString(index));
}
}
+ if ((index = cursor.getColumnIndex(ProgramColumns.COLUMN_SERIES_ID)) >= 0
+ && !cursor.isNull(index)) {
+ builder.setSeriesId(cursor.getString(index));
+ }
}
@SuppressWarnings("deprecation")
@@ -490,7 +506,8 @@
ProgramColumns.COLUMN_CONTENT_RATING,
ProgramColumns.COLUMN_VIDEO_WIDTH,
ProgramColumns.COLUMN_VIDEO_HEIGHT,
- ProgramColumns.COLUMN_INTERNAL_PROVIDER_DATA
+ ProgramColumns.COLUMN_INTERNAL_PROVIDER_DATA,
+ ProgramColumns.COLUMN_SERIES_ID,
};
String[] marshmallowColumns = new String[] {
ProgramColumns.COLUMN_SEARCHABLE,
@@ -901,5 +918,18 @@
mValues.put(ProgramColumns.COLUMN_SEASON_TITLE, seasonTitle);
return (T) this;
}
+
+ /**
+ * Sets the series ID for this program.
+ *
+ * @param seriesId The series ID for the program.
+ * @return This Builder object to allow for chaining of calls to builder methods.
+ * @see androidx.tvprovider.media.tv.TvContractCompat.Programs#COLUMN_SERIES_ID
+ */
+ @NonNull
+ public T setSeriesId(@Nullable String seriesId) {
+ mValues.put(ProgramColumns.COLUMN_SERIES_ID, seriesId);
+ return (T) this;
+ }
}
}
diff --git a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/TvContractCompat.java b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/TvContractCompat.java
index a36c83d..05de3ea 100644
--- a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/TvContractCompat.java
+++ b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/TvContractCompat.java
@@ -914,6 +914,17 @@
* @see #COLUMN_REVIEW_RATING_STYLE
*/
String COLUMN_REVIEW_RATING = "review_rating";
+
+ /**
+ * The series ID of this TV program for episodic TV shows.
+ *
+ * <p>This is used to indicate the series ID. Programs in the same series share a series ID.
+ *
+ * <p>Can be empty.
+ *
+ * <p>Type: TEXT
+ */
+ String COLUMN_SERIES_ID = "series_id";
}
/**
diff --git a/ui/integration-tests/benchmark/build.gradle b/ui/integration-tests/benchmark/build.gradle
index 407eb1e..40db4f5 100644
--- a/ui/integration-tests/benchmark/build.gradle
+++ b/ui/integration-tests/benchmark/build.gradle
@@ -36,6 +36,7 @@
implementation project(":compose:compose-runtime")
implementation project(":ui:integration-tests")
implementation project(":ui:ui-test")
+ implementation project(":ui:ui-layout")
implementation(KOTLIN_STDLIB)
implementation(KOTLIN_REFLECT)
implementation(ANDROIDX_TEST_RULES)
diff --git a/ui/integration-tests/benchmark/src/androidTest/AndroidManifest.xml b/ui/integration-tests/benchmark/src/androidTest/AndroidManifest.xml
index a7345d6..1983f55 100644
--- a/ui/integration-tests/benchmark/src/androidTest/AndroidManifest.xml
+++ b/ui/integration-tests/benchmark/src/androidTest/AndroidManifest.xml
@@ -23,7 +23,11 @@
~ requestLegacyExternalStorage to enable legacy JSON reporting when targeting Q
-->
<application
- android:requestLegacyExternalStorage="true"
- android:debuggable="false"
- tools:replace="android:debuggable" />
+ android:requestLegacyExternalStorage="true"
+ android:debuggable="false"
+ tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+ </application>
</manifest>
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/AnimationBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/AnimationBenchmark.kt
index 58bc249..985c5f9 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/AnimationBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/AnimationBenchmark.kt
@@ -21,13 +21,13 @@
import androidx.animation.AnimationVector3D
import androidx.animation.AnimationVector4D
import androidx.animation.FastOutSlowInEasing
-import androidx.animation.KeyframesSpec
import androidx.animation.LinearEasing
import androidx.animation.LinearOutSlowInEasing
-import androidx.animation.SnapSpec
import androidx.animation.Spring
-import androidx.animation.SpringSpec
-import androidx.animation.TweenSpec
+import androidx.animation.VectorizedKeyframesSpec
+import androidx.animation.VectorizedSnapSpec
+import androidx.animation.VectorizedSpringSpec
+import androidx.animation.VectorizedTweenSpec
import androidx.animation.createAnimation
import androidx.benchmark.junit4.BenchmarkRule
import androidx.benchmark.junit4.measureRepeated
@@ -45,7 +45,7 @@
@Test
fun animationSpec1D() {
- val anim = SpringSpec<AnimationVector1D>(1f, Spring.StiffnessLow)
+ val anim = VectorizedSpringSpec<AnimationVector1D>(1f, Spring.StiffnessLow)
val start = AnimationVector1D(0f)
val end = AnimationVector1D(100f)
@@ -58,7 +58,7 @@
@Test
fun animation1D() {
- val anim = SpringSpec<AnimationVector1D>(1f, Spring.StiffnessLow)
+ val anim = VectorizedSpringSpec<AnimationVector1D>(1f, Spring.StiffnessLow)
val start = AnimationVector1D(0f)
val end = AnimationVector1D(100f)
val fixedAnimation = anim.createAnimation(start, end, start)
@@ -72,7 +72,7 @@
@Test
fun animationSpec2D() {
- val anim = TweenSpec<AnimationVector2D>(1000)
+ val anim = VectorizedTweenSpec<AnimationVector2D>(1000)
val start = AnimationVector2D(0f, 0f)
val end = AnimationVector2D(100f, 300f)
@@ -85,7 +85,7 @@
@Test
fun animation2D() {
- val anim = TweenSpec<AnimationVector2D>(1000)
+ val anim = VectorizedTweenSpec<AnimationVector2D>(1000)
val start = AnimationVector2D(0f, 0f)
val end = AnimationVector2D(100f, 300f)
val fixedAnimation = anim.createAnimation(start, end, start)
@@ -99,7 +99,7 @@
@Test
fun animationSpec3D() {
- val anim = SnapSpec<AnimationVector3D>()
+ val anim = VectorizedSnapSpec<AnimationVector3D>()
val start = AnimationVector3D(0f, 0f, -500f)
val end = AnimationVector3D(100f, 300f, 780f)
@@ -112,7 +112,7 @@
@Test
fun animation3D() {
- val anim = SnapSpec<AnimationVector3D>()
+ val anim = VectorizedSnapSpec<AnimationVector3D>()
val start = AnimationVector3D(0f, 0f, -500f)
val end = AnimationVector3D(100f, 300f, 780f)
val fixedAnimation = anim.createAnimation(start, end, start)
@@ -128,12 +128,12 @@
fun animationSpec4D() {
val start = AnimationVector4D(0f, 0f, 0f, 0f)
val end = AnimationVector4D(120f, -50f, 256f, 0f)
- val anim = KeyframesSpec<AnimationVector4D>(
+ val anim = VectorizedKeyframesSpec<AnimationVector4D>(
keyframes = mapOf(
- 0L to (start to LinearEasing),
- 900L to (start to FastOutSlowInEasing), 1000L to (end to LinearOutSlowInEasing)
+ 0 to (start to LinearEasing),
+ 900 to (start to FastOutSlowInEasing), 1000 to (end to LinearOutSlowInEasing)
),
- duration = 1000L
+ durationMillis = 1000
)
benchmarkRule.measureRepeated {
@@ -147,12 +147,12 @@
fun animation4D() {
val start = AnimationVector4D(0f, 0f, 0f, 0f)
val end = AnimationVector4D(120f, -50f, 256f, 0f)
- val anim = KeyframesSpec<AnimationVector4D>(
+ val anim = VectorizedKeyframesSpec<AnimationVector4D>(
keyframes = mapOf(
- 0L to (start to LinearEasing),
- 900L to (start to FastOutSlowInEasing), 1000L to (end to LinearOutSlowInEasing)
+ 0 to (start to LinearEasing),
+ 900 to (start to FastOutSlowInEasing), 1000 to (end to LinearOutSlowInEasing)
),
- duration = 1000L
+ durationMillis = 1000
)
val fixedAnimation = anim.createAnimation(start, end, start)
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
new file mode 100644
index 0000000..e3efcc0
--- /dev/null
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2019 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 androidx.ui.benchmark.test
+
+import android.view.ViewGroup
+import androidx.activity.ComponentActivity
+import androidx.benchmark.junit4.BenchmarkRule
+import androidx.benchmark.junit4.measureRepeated
+import androidx.test.filters.LargeTest
+import androidx.ui.core.AndroidOwner
+import androidx.ui.core.LayoutNode
+import androidx.ui.core.Modifier
+import androidx.ui.core.drawBehind
+import androidx.ui.core.drawLayer
+import androidx.ui.core.gesture.pressIndicatorGestureFilter
+import androidx.ui.core.keyinput.keyInputFilter
+import androidx.ui.core.layoutId
+import androidx.ui.core.onPositioned
+import androidx.ui.core.semantics.semantics
+import androidx.ui.core.setContent
+import androidx.ui.core.zIndex
+import androidx.ui.foundation.Box
+import androidx.ui.layout.padding
+import androidx.ui.test.DisableTransitions
+import androidx.ui.unit.dp
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TestRule
+import org.junit.runner.Description
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import org.junit.runners.model.Statement
+
+/**
+ * Benchmark that sets the [LayoutNode.modifier].
+ */
+@LargeTest
+@RunWith(Parameterized::class)
+class LayoutNodeModifierBenchmark(
+ private val numberOfModifiers: Int
+) {
+ companion object {
+ @JvmStatic
+ @Parameterized.Parameters(name = "modifiers={0}")
+ fun initParameters(): Array<Any> = arrayOf(1, 5, 10)
+ }
+
+ @get:Rule
+ val rule = SimpleAndroidBenchmarkRule()
+
+ var modifiers = emptyList<Modifier>()
+ var combinedModifier: Modifier = Modifier
+ lateinit var layoutNode: LayoutNode
+
+ @Before
+ fun setup() {
+ modifiers = listOf(
+ Modifier.padding(10.dp),
+ Modifier.drawBehind { },
+ Modifier.drawLayer(),
+ Modifier.keyInputFilter { _ -> true },
+ Modifier.semantics(),
+ Modifier.pressIndicatorGestureFilter(),
+ Modifier.layoutId("Hello"),
+ Modifier.padding(10.dp),
+ Modifier.onPositioned { _ -> },
+ Modifier.zIndex(1f)
+ ).subList(0, numberOfModifiers)
+
+ combinedModifier = modifiers.fold<Modifier, Modifier>(Modifier) { acc, modifier ->
+ acc + modifier
+ }
+
+ rule.activityTestRule.runOnUiThread {
+ rule.activityTestRule.activity.setContent { Box() }
+ }
+ rule.activityTestRule.runOnUiThread {
+ val composeView = rule.findAndroidOwner()
+ val root = composeView.root
+ val selection = root.children[0]
+ check(selection.children.size == 1) { "Expecting only a Box" }
+ layoutNode = selection.children[0]
+ check(layoutNode.children.isEmpty()) { "Box should be empty" }
+ }
+ }
+
+ @Test
+ fun setAndClearModifiers() {
+ rule.activityTestRule.runOnUiThread {
+ rule.benchmarkRule.measureRepeated {
+ layoutNode.modifier = combinedModifier
+ layoutNode.modifier = Modifier
+ }
+ }
+ }
+
+ @Test
+ fun smallModifierChange() {
+ rule.activityTestRule.runOnUiThread {
+ val altModifier = Modifier.padding(10.dp) + combinedModifier
+ layoutNode.modifier = altModifier
+
+ rule.benchmarkRule.measureRepeated {
+ layoutNode.modifier = combinedModifier
+ layoutNode.modifier = altModifier
+ }
+ }
+ }
+
+ class SimpleAndroidBenchmarkRule() : TestRule {
+ @Suppress("DEPRECATION")
+ val activityTestRule =
+ androidx.test.rule.ActivityTestRule<ComponentActivity>(ComponentActivity::class.java)
+
+ val benchmarkRule = BenchmarkRule()
+
+ private val disableTransitionsRule = DisableTransitions()
+
+ override fun apply(base: Statement, description: Description?): Statement {
+ val statement = benchmarkRule.apply(
+ activityTestRule.apply(base, description), description!!)
+ return disableTransitionsRule.apply(statement, description)
+ }
+
+ fun findAndroidOwner(): AndroidOwner {
+ return activityTestRule.activity.findViewById<ViewGroup>(android.R.id.content)
+ .getChildAt(0) as AndroidOwner
+ }
+ }
+}
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/ModelObserverBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/ModelObserverBenchmark.kt
deleted file mode 100644
index d1d3ef2..0000000
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/ModelObserverBenchmark.kt
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2019 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 androidx.ui.benchmark.test
-
-import android.os.Handler
-import android.os.Looper
-import androidx.compose.FrameManager
-import androidx.compose.frames.commit
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
-import androidx.compose.mutableStateOf
-import androidx.test.filters.LargeTest
-import androidx.ui.benchmark.ComposeBenchmarkRule
-import androidx.ui.core.ModelObserver
-import androidx.ui.integration.test.foundation.RectsInColumnSharedModelTestCase
-import org.junit.After
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
-import kotlin.random.Random
-
-/**
- * Benchmark that runs [RectsInColumnSharedModelTestCase].
- */
-@LargeTest
-@RunWith(Parameterized::class)
-class ModelObserverBenchmark(
- private val numberOfModels: Int,
- private val numberOfNodes: Int
-) {
- companion object {
- @JvmStatic
- @Parameterized.Parameters(name = "models = {0}, nodes = {1}")
- fun initParameters(): Array<Any> = arrayOf(
- arrayOf(1000, 1000),
- arrayOf(10000, 100),
- arrayOf(100000, 10),
- arrayOf(100, 1000)
- )
- }
-
- private val doNothing: (Int) -> Unit = { _ -> }
-
- @get:Rule
- val rule = ComposeBenchmarkRule(enableTransitions = false)
-
- lateinit var modelObserver: ModelObserver
- val models = List(numberOfModels) { mutableStateOf(0) }
- val nodes = List(numberOfNodes) { it }
- lateinit var random: Random
- val numObservations = numberOfModels / 10
-
- @Before
- fun setup() {
- random = Random(0)
- rule.runOnUiThread {
- val handler = Handler(Looper.getMainLooper())
- modelObserver = ModelObserver { command ->
- if (Looper.myLooper() !== handler.looper) {
- handler.post(command)
- } else {
- command()
- }
- }
- FrameManager.ensureStarted()
- }
- if (!inFrame) {
- open(readOnly = true)
- }
- modelObserver.enableModelUpdatesObserving(true)
- setupObservations()
- commit()
- }
-
- @After
- fun teardown() {
- rule.runOnUiThread {
- modelObserver.enableModelUpdatesObserving(false)
- }
- }
-
- @Test
- fun modelObservation() {
- rule.runOnUiThread {
- rule.measureRepeated {
- random = Random(0)
- val node = nodes[random.nextInt(numberOfNodes)]
- observeForNode(node)
- }
- }
- }
-
- @Test
- fun nestedModelObservation() {
- rule.runOnUiThread {
- modelObserver.observeReads(nodes[0], doNothing) {
- rule.measureRepeated {
- random = Random(0)
- val node = nodes[random.nextInt(numberOfNodes)]
- observeForNode(node)
- }
- }
- }
- }
-
- @Test
- fun modelClear() {
- rule.runOnUiThread {
- rule.measureRepeated {
- random = Random(0)
- val node = nodes[random.nextInt(numberOfNodes)]
- modelObserver.clear(node)
- runWithTimingDisabled {
- observeForNode(node)
- }
- }
- }
- }
-
- @Test
- fun modelNotification() {
- // assume 5 model changes
- val fakeChanges = setOf(
- models[random.nextInt(numberOfModels)],
- models[random.nextInt(numberOfModels)],
- models[random.nextInt(numberOfModels)],
- models[random.nextInt(numberOfModels)],
- models[random.nextInt(numberOfModels)]
- )
- val fakeFrame = open(readOnly = true)
- commit(fakeFrame)
- rule.runOnUiThread {
- rule.measureRepeated {
- modelObserver.frameCommitObserver(fakeChanges, fakeFrame)
- }
- }
- }
-
- private fun setupObservations() {
- nodes.forEach { observeForNode(it) }
- }
-
- private fun observeForNode(node: Int) {
- modelObserver.observeReads(node, doNothing) {
- repeat(numObservations) {
- // just access the value
- models[random.nextInt(numberOfModels)].value
- }
- }
- }
-}
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
index 18eabf83..5419894 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
@@ -190,7 +190,7 @@
@Composable
fun FillerContainer(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(children, modifier) { measurable, constraints, _ ->
+ Layout(children, modifier) { measurable, constraints ->
val childConstraints = constraints.copy(minWidth = 0, minHeight = 0)
val placeable = measurable.firstOrNull()?.measure(childConstraints)
val width =
@@ -233,7 +233,7 @@
children: @Composable () -> Unit
) {
val padding = InnerPadding(all)
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val measurable = measurables.firstOrNull()
if (measurable == null) {
layout(constraints.minWidth, constraints.minHeight) { }
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
index 03c2c83..57edb60 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
@@ -121,7 +121,7 @@
@Composable
private fun ChangingConstraintsLayout(size: State<Int>, children: @Composable () -> Unit) {
- Layout(children) { measurables, _, _ ->
+ Layout(children) { measurables, _ ->
val constraints = Constraints.fixed(size.value, size.value)
with(PlacementScope) { measurables.first().measure(constraints).place(0, 0) }
layout(100, 100) {}
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphBenchmark.kt
index eee247c..755737b 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphBenchmark.kt
@@ -29,7 +29,7 @@
import androidx.ui.integration.test.TextType
import androidx.ui.integration.test.cartesian
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -107,7 +107,7 @@
density = Density(density = 1f),
style = TextStyle(
fontSize = 12.sp,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
resourceLoader = resourceLoader,
spanStyles = spanStyles
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphMethodBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphMethodBenchmark.kt
index 9b3fb3e..95d587e8 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphMethodBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/text/ParagraphMethodBenchmark.kt
@@ -27,7 +27,7 @@
import androidx.ui.integration.test.TextType
import androidx.ui.integration.test.cartesian
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -76,7 +76,7 @@
density = Density(density = 1f),
style = TextStyle(
fontSize = 12.sp,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
resourceLoader = resourceLoader,
spanStyles = spanStyles
diff --git a/ui/settings.gradle b/ui/settings.gradle
index 8b26b29..5b451f7 100644
--- a/ui/settings.gradle
+++ b/ui/settings.gradle
@@ -34,12 +34,15 @@
project(name).projectDir = file
}
+includeProject(":annotation", "../annotation")
includeProject(":annotation:annotation-sampled", "../annotation/annotation-sampled")
includeProject(":annotation:annotation-experimental", "../annotation/annotation-experimental")
includeProject(":annotation:annotation-experimental-lint", "../annotation/annotation-experimental-lint")
includeProject(":annotation:annotation-experimental-lint-integration-tests", "../annotation/annotation-experimental-lint/integration-tests")
+includeProject(":benchmark", "../benchmark")
includeProject(":benchmark:benchmark-common", "../benchmark/common")
includeProject(":benchmark:benchmark-junit4", "../benchmark/junit4")
+includeProject(":compose", "../compose")
includeProject(":compose:compose-compiler", "../compose/compose-compiler")
includeProject(":compose:compose-compiler-hosted", "../compose/compose-compiler-hosted")
includeProject(":compose:compose-compiler-hosted:integration-tests", "../compose/compose-compiler-hosted/integration-tests")
@@ -48,8 +51,10 @@
includeProject(":compose:compose-runtime-benchmark", "../compose/compose-runtime/compose-runtime-benchmark")
includeProject(":compose:compose-runtime:samples", "../compose/compose-runtime/samples")
includeProject(":lint-checks", "../lint-checks")
+includeProject(":tracing", "../tracing")
includeProject(":tracing:tracing", "../tracing/tracing")
includeProject(":tracing:tracing-ktx", "../tracing/tracing-ktx")
+includeProject(":ui", "ui")
includeProject(":ui:integration-tests:benchmark", "integration-tests/benchmark")
includeProject(":ui:integration-tests:demos", "integration-tests/demos")
includeProject(":ui:integration-tests:demos:common", "integration-tests/demos/common")
@@ -63,6 +68,7 @@
includeProject(":ui:ui-animation-core:samples", "ui-animation-core/samples")
includeProject(":ui:ui-animation:integration-tests:ui-animation-demos", "ui-animation/integration-tests/animation-demos")
includeProject(":ui:ui-animation:samples", "ui-animation/samples")
+includeProject(":ui:ui-animation-tooling-internal", "ui-animation-tooling-internal")
includeProject(":ui:ui-core", "ui-core")
includeProject(":ui:ui-core:integration-tests:ui-core-demos", "ui-core/integration-tests/ui-core-demos")
includeProject(":ui:ui-core:samples", "ui-core/samples")
diff --git a/ui/ui-android-view/build.gradle b/ui/ui-android-view/build.gradle
index efb20b7..7d716ba 100644
--- a/ui/ui-android-view/build.gradle
+++ b/ui/ui-android-view/build.gradle
@@ -62,7 +62,7 @@
androidx {
name = "AndroidX UI View components"
- publish = Publish.SNAPSHOT_AND_RELEASE
+ publish = Publish.NONE
mavenVersion = LibraryVersions.UI
mavenGroup = LibraryGroups.UI
inceptionYear = "2019"
diff --git a/ui/ui-animation-core/api/0.1.0-dev02.txt b/ui/ui-animation-core/api/0.1.0-dev02.txt
index ef7da53..d36531f 100644
--- a/ui/ui-animation-core/api/0.1.0-dev02.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev02.txt
@@ -30,6 +30,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -129,6 +131,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
diff --git a/ui/ui-animation-core/api/0.1.0-dev04.txt b/ui/ui-animation-core/api/0.1.0-dev04.txt
index 900a35b..21530e2 100644
--- a/ui/ui-animation-core/api/0.1.0-dev04.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev04.txt
@@ -47,6 +47,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -182,6 +184,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -250,7 +254,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev06.txt b/ui/ui-animation-core/api/0.1.0-dev06.txt
index e90abb2..4a613de 100644
--- a/ui/ui-animation-core/api/0.1.0-dev06.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev06.txt
@@ -46,6 +46,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -210,6 +212,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -279,7 +283,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev07.txt b/ui/ui-animation-core/api/0.1.0-dev07.txt
index b3433f9..679fb17 100644
--- a/ui/ui-animation-core/api/0.1.0-dev07.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev07.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -144,7 +146,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -214,6 +216,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -285,7 +289,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev08.txt b/ui/ui-animation-core/api/0.1.0-dev08.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/0.1.0-dev08.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev08.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev09.txt b/ui/ui-animation-core/api/0.1.0-dev09.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/0.1.0-dev09.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev09.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev10.txt b/ui/ui-animation-core/api/0.1.0-dev10.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/0.1.0-dev10.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev10.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev11.txt b/ui/ui-animation-core/api/0.1.0-dev11.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/0.1.0-dev11.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev11.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev12.txt b/ui/ui-animation-core/api/0.1.0-dev12.txt
index 3944e4a..e5abd87 100644
--- a/ui/ui-animation-core/api/0.1.0-dev12.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev12.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -213,6 +215,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -287,7 +291,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev14.txt b/ui/ui-animation-core/api/0.1.0-dev14.txt
index 5b19c68..27407b0 100644
--- a/ui/ui-animation-core/api/0.1.0-dev14.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev14.txt
@@ -60,6 +60,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -169,7 +171,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -292,6 +294,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -394,7 +398,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/0.1.0-dev15.txt b/ui/ui-animation-core/api/0.1.0-dev15.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev15.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/api/api_lint.ignore b/ui/ui-animation-core/api/api_lint.ignore
index 35e0da1..6173497 100644
--- a/ui/ui-animation-core/api/api_lint.ignore
+++ b/ui/ui-animation-core/api/api_lint.ignore
@@ -7,28 +7,10 @@
AutoBoxing: androidx.animation.CubicBezierEasing#invoke(float):
Must avoid boxed primitives (`java.lang.Float`)
-AutoBoxing: androidx.animation.DecayAnimation#getValue(long):
- Must avoid boxed primitives (`java.lang.Float`)
-AutoBoxing: androidx.animation.RepeatableBuilder#getIterations():
- Must avoid boxed primitives (`java.lang.Integer`)
-AutoBoxing: androidx.animation.RepeatableBuilder#setIterations(Integer) parameter #0:
- Must avoid boxed primitives (`java.lang.Integer`)
CallbackName: androidx.animation.AnimationClockObserver:
Class should be named AnimationClockCallback
-CallbackName: androidx.animation.TransitionAnimation.TransitionAnimationClockObserver:
- Class should be named TransitionAnimationClockCallback
-
-
-DocumentExceptions: androidx.animation.DurationBasedAnimationBuilder#setDelay(int):
- Method DurationBasedAnimationBuilder.setDelay appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.animation.DurationBasedAnimationBuilder#setDuration(int):
- Method DurationBasedAnimationBuilder.setDuration appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.animation.KeyframesBuilder#at(T, int):
- Method KeyframesBuilder.at appears to be throwing java.lang.IllegalArgumentException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
-DocumentExceptions: androidx.animation.RepeatableBuilder#setIterations(Integer):
- Method RepeatableBuilder.setIterations appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
HiddenTypeParameter: androidx.animation.BaseAnimationClock#Companion:
@@ -37,13 +19,7 @@
MissingNullability: androidx.animation.CubicBezierEasing#invoke(float):
Missing nullability on method `invoke` return
-MissingNullability: androidx.animation.DecayAnimation#getValue(long):
- Missing nullability on method `getValue` return
NotCloseable: androidx.animation.BaseAnimatedValue:
Classes that release resources (stop()) should implement AutoClosable and CloseGuard: class androidx.animation.BaseAnimatedValue
-
-
-TopLevelBuilder: androidx.animation.AnimationBuilder:
- Builder should be defined as inner class: androidx.animation.AnimationBuilder
diff --git a/ui/ui-animation-core/api/current.txt b/ui/ui-animation-core/api/current.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/current.txt
+++ b/ui/ui-animation-core/api/current.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev02.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev02.txt
index ef7da53..d36531f 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev02.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev02.txt
@@ -30,6 +30,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -129,6 +131,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev04.txt
index 900a35b..21530e2 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev04.txt
@@ -47,6 +47,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -182,6 +184,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -250,7 +254,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev06.txt
index e90abb2..4a613de 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev06.txt
@@ -46,6 +46,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -210,6 +212,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -279,7 +283,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev07.txt
index b3433f9..679fb17 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev07.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -144,7 +146,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -214,6 +216,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -285,7 +289,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev08.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev08.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev09.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev09.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev10.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev10.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev11.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev11.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev12.txt
index 8ac97dd..198bd93 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -213,6 +215,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -295,7 +299,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev14.txt
index 5b19c68..27407b0 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev14.txt
@@ -60,6 +60,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -169,7 +171,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -292,6 +294,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -394,7 +398,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/api/public_plus_experimental_current.txt b/ui/ui-animation-core/api/public_plus_experimental_current.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_current.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev02.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev02.txt
index ef7da53..d36531f 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev02.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev02.txt
@@ -30,6 +30,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -129,6 +131,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev04.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev04.txt
index 900a35b..21530e2 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev04.txt
@@ -47,6 +47,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -182,6 +184,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -250,7 +254,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev06.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev06.txt
index e90abb2..4a613de 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev06.txt
@@ -46,6 +46,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -210,6 +212,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -279,7 +283,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev07.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev07.txt
index b3433f9..679fb17 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev07.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -144,7 +146,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -214,6 +216,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -285,7 +289,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev08.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev08.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev08.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev09.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev09.txt
index 5100755..ff816cb 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev09.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -284,7 +288,7 @@
field public static final float DampingRatioLowBouncy = 0.75f;
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev10.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev10.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev10.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev11.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev11.txt
index 52e3d3d..ee7ed77 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev11.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -211,6 +213,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -283,7 +287,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev12.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev12.txt
index 8ac97dd..198bd93 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev12.txt
@@ -49,6 +49,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -141,7 +143,7 @@
public abstract sealed class BaseAnimationClock implements androidx.animation.AnimationClockObservable {
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -213,6 +215,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -295,7 +299,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev14.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev14.txt
index 5b19c68..27407b0 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev14.txt
@@ -60,6 +60,8 @@
}
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
@@ -169,7 +171,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -292,6 +294,8 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
@@ -394,7 +398,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/api/restricted_current.txt b/ui/ui-animation-core/api/restricted_current.txt
index 5b19c68..66a0aff 100644
--- a/ui/ui-animation-core/api/restricted_current.txt
+++ b/ui/ui-animation-core/api/restricted_current.txt
@@ -14,39 +14,19 @@
}
public abstract class AnimatedValue<T, V extends androidx.animation.AnimationVector> extends androidx.animation.BaseAnimatedValue<T,V> {
- ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValue(androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public final V getVelocity();
property public final V velocity;
}
public final class AnimatedValueKt {
method public static androidx.animation.AnimatedFloat AnimatedFloat(float initVal, androidx.animation.AnimationClockObservable clock, float visibilityThreshold = 0.01f);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = typeConverter.invoke(initVal).newInstanceOfValue(Spring.DefaultDisplacementThreshold));
+ method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> AnimatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold = null);
method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<V,V> AnimatedVector(V initVal, androidx.animation.AnimationClockObservable clock, V visibilityThreshold = initVal.newInstanceOfValue(Spring.DefaultDisplacementThreshold));
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
method public static void fling(androidx.animation.AnimatedFloat, float startVelocity, androidx.animation.FloatDecayAnimationSpec decay = androidx.animation.ExponentialDecay(), kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget, kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onEnd = null);
}
- public interface Animation<T, V extends androidx.animation.AnimationVector> {
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- method public default boolean isFinished(long playTime);
- property public abstract androidx.animation.TwoWayConverter<T,V> converter;
- property public abstract long durationMillis;
- }
-
- public abstract class AnimationBuilder<T> {
- ctor public AnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- }
-
- public final class AnimationBuilderKt {
- field public static final long DefaultDuration = 300L; // 0x12cL
- field public static final int Infinite = 2147483647; // 0x7fffffff
- }
-
public final class AnimationClockKt {
}
@@ -59,23 +39,25 @@
method public void onAnimationFrame(long frameTimeMillis);
}
+ public final class AnimationConstants {
+ field public static final int DefaultDurationMillis = 300; // 0x12c
+ field public static final androidx.animation.AnimationConstants INSTANCE;
+ field public static final int Infinite = 2147483647; // 0x7fffffff
+ }
+
public enum AnimationEndReason {
+ method public static androidx.animation.AnimationEndReason valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.AnimationEndReason[] values();
enum_constant public static final androidx.animation.AnimationEndReason BoundReached;
enum_constant public static final androidx.animation.AnimationEndReason Interrupted;
enum_constant public static final androidx.animation.AnimationEndReason TargetReached;
}
public final class AnimationKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<V,V> createAnimation(androidx.animation.AnimationSpec<V>, V startValue, V endValue, V startVelocity);
- method public static <T, V extends androidx.animation.AnimationVector> androidx.animation.TargetBasedAnimation<T,V> createAnimation(androidx.animation.AnimationSpec<V>, T? startValue, T? endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- method public static <T, V extends androidx.animation.AnimationVector> T! getVelocity(androidx.animation.Animation<T,V>, long playTime);
}
- public interface AnimationSpec<V extends androidx.animation.AnimationVector> {
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public default V getEndVelocity(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public interface AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class AnimationSpecKt {
@@ -152,7 +134,7 @@
}
public abstract sealed class BaseAnimatedValue<T, V extends androidx.animation.AnimationVector> {
- method public final void animateTo(T? targetValue, androidx.animation.AnimationBuilder<T> anim = defaultPhysicsBuilder(), kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
+ method public final void animateTo(T? targetValue, androidx.animation.AnimationSpec<T> anim = androidx.animation.BaseAnimatedValue.defaultSpringSpec, kotlin.jvm.functions.Function2<? super androidx.animation.AnimationEndReason,? super T,kotlin.Unit>? onEnd = null);
method protected void checkFinished(long playtime);
method public final T! getTargetValue();
method public abstract T! getValue();
@@ -169,7 +151,7 @@
ctor public BaseAnimationClock();
method public void subscribe(androidx.animation.AnimationClockObserver observer);
method public void unsubscribe(androidx.animation.AnimationClockObserver observer);
- field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion! Companion;
+ field @Deprecated public static final androidx.animation.BaseAnimationClock.Companion Companion;
}
public final class ComplexDoubleKt {
@@ -180,38 +162,13 @@
method public Float! invoke(float fraction);
}
- public final class DecayAnimation implements androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> {
- ctor public DecayAnimation(androidx.animation.FloatDecayAnimationSpec anim, float startValue, float startVelocity);
- method public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getConverter();
- method public long getDurationMillis();
- method public Float! getValue(long playTime);
- method public androidx.animation.AnimationVector1D getVelocityVector(long playTime);
- property public androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> converter;
- property public long durationMillis;
- }
-
public final class DefaultAnimationClock extends androidx.animation.BaseAnimationClock {
ctor public DefaultAnimationClock();
method public void dispatchTime$lintWithKotlin(long frameTimeMillis);
}
- public abstract class DurationBasedAnimationBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public DurationBasedAnimationBuilder();
- method public abstract <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public final int getDelay();
- method public final int getDuration();
- method public final void setDelay(int value);
- method public final void setDuration(int value);
- property public final int delay;
- property public final int duration;
- }
-
- public interface DurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.AnimationSpec<V> {
- method public long getDelay();
- method public long getDuration();
- method public default long getDurationMillis(V start, V end, V startVelocity);
- property public abstract long delay;
- property public abstract long duration;
+ public interface DurationBasedAnimationSpec<T> extends androidx.animation.AnimationSpec<T> {
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class EasingKt {
@@ -232,15 +189,12 @@
property public float absVelocityThreshold;
}
- public interface FloatAnimationSpec {
+ public interface FloatAnimationSpec extends androidx.animation.AnimationSpec<java.lang.Float> {
method public long getDurationMillis(float start, float end, float startVelocity);
method public default float getEndVelocity(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
- }
-
- public final class FloatAnimationSpecKt {
- method public static <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> vectorize(androidx.animation.FloatAnimationSpec);
+ method public default <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedFloatAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<java.lang.Float,V> converter);
}
public interface FloatDecayAnimationSpec {
@@ -253,7 +207,6 @@
}
public final class FloatDecayAnimationSpecKt {
- method public static androidx.animation.Animation<java.lang.Float,androidx.animation.AnimationVector1D> createAnimation(androidx.animation.FloatDecayAnimationSpec, float startValue, float startVelocity = 0f);
}
public final class FloatPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
@@ -264,18 +217,20 @@
}
public final class FloatSpringSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatSpringSpec(float dampingRatio, float stiffness, float displacementThreshold);
+ ctor public FloatSpringSpec(float dampingRatio, float stiffness, float visibilityThreshold);
ctor public FloatSpringSpec();
+ method public float getDampingRatio();
method public long getDurationMillis(float start, float end, float startVelocity);
+ method public float getStiffness();
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
}
public final class FloatTweenSpec implements androidx.animation.FloatAnimationSpec {
- ctor public FloatTweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public FloatTweenSpec(int duration, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public FloatTweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDuration();
method public long getDurationMillis(float start, float end, float startVelocity);
method public float getValue(long playTime, float start, float end, float startVelocity);
method public float getVelocity(long playTime, float start, float end, float startVelocity);
@@ -292,28 +247,33 @@
}
public enum InterruptionHandling {
+ method public static androidx.animation.InterruptionHandling valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.animation.InterruptionHandling[] values();
enum_constant public static final androidx.animation.InterruptionHandling PHYSICS;
enum_constant public static final androidx.animation.InterruptionHandling SNAP_TO_END;
enum_constant public static final androidx.animation.InterruptionHandling TWEEN;
enum_constant public static final androidx.animation.InterruptionHandling UNINTERRUPTIBLE;
}
- public final class KeyframesBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public KeyframesBuilder();
- method public infix androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T> at(T?, int timeStamp);
- method public <V extends androidx.animation.AnimationVector> androidx.animation.DurationBasedAnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public infix void with(androidx.animation.KeyframesBuilder<T>.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class KeyframesSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public KeyframesSpec(androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> config);
+ method public androidx.animation.KeyframesSpec.KeyframesSpecConfig<T> getConfig();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedKeyframesSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class KeyframesBuilder.KeyframeEntity<T> {
+ public static final class KeyframesSpec.KeyframeEntity<T> {
}
- public final class KeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public KeyframesSpec(java.util.Map<java.lang.Long,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, long duration, long delay);
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ public static final class KeyframesSpec.KeyframesSpecConfig<T> {
+ ctor public KeyframesSpec.KeyframesSpecConfig();
+ method public infix androidx.animation.KeyframesSpec.KeyframeEntity<T> at(T?, @IntRange(from=0) int timeStamp);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public void setDelayMillis(int p);
+ method public void setDurationMillis(int p);
+ method public infix void with(androidx.animation.KeyframesSpec.KeyframeEntity<T>, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ property public final int delayMillis;
+ property public final int durationMillis;
}
public final class ManualAnimationClock extends androidx.animation.BaseAnimationClock {
@@ -329,16 +289,6 @@
method public operator <T, V extends androidx.animation.AnimationVector> void set(androidx.animation.PropKey<T,V> propKey, T? prop);
}
- public final class PhysicsBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public PhysicsBuilder(float dampingRatio, float stiffness, T? displacementThreshold);
- ctor public PhysicsBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SpringSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public float getDampingRatio();
- method public float getStiffness();
- method public void setDampingRatio(float p);
- method public void setStiffness(float p);
- }
-
public interface PropKey<T, V extends androidx.animation.AnimationVector> {
method public default String getLabel();
method public androidx.animation.TwoWayConverter<T,V> getTypeConverter();
@@ -352,40 +302,18 @@
method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntToVectorConverter();
}
- public final class RepeatableBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public RepeatableBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.AnimationSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.DurationBasedAnimationBuilder<T>? getAnimation();
- method public Integer? getIterations();
- method public void setAnimation(androidx.animation.DurationBasedAnimationBuilder<T>? p);
- method public void setIterations(Integer? value);
- property public final androidx.animation.DurationBasedAnimationBuilder<T>? animation;
- property public final Integer? iterations;
+ public final class RepeatableSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public RepeatableSpec(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public androidx.animation.DurationBasedAnimationSpec<T> getAnimation();
+ method public int getIterations();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
- public final class RepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public RepeatableSpec(long iterationCount, androidx.animation.DurationBasedAnimationSpec<V> animation);
- method public long getDurationMillis(V start, V end, V startVelocity);
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- }
-
- public final class SnapBuilder<T> extends androidx.animation.AnimationBuilder<T> {
- ctor public SnapBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.SnapSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public int getDelay();
- method public void setDelay(int p);
- property public final int delay;
- }
-
- public final class SnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public SnapSpec(long delay);
+ public final class SnapSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SnapSpec(int delay);
ctor public SnapSpec();
- method public long getDelay();
- method public long getDuration();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
- property public long duration;
+ method public int getDelay();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedDurationBasedAnimationSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class Spring {
@@ -394,7 +322,7 @@
field public static final float DampingRatioMediumBouncy = 0.5f;
field public static final float DampingRatioNoBouncy = 1.0f;
field public static final float DefaultDisplacementThreshold = 0.01f;
- field public static final androidx.animation.Spring! INSTANCE;
+ field public static final androidx.animation.Spring INSTANCE;
field public static final float StiffnessHigh = 10000.0f;
field public static final float StiffnessLow = 200.0f;
field public static final float StiffnessMedium = 1500.0f;
@@ -402,40 +330,29 @@
}
public final class SpringEstimationKt {
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(float stiffness, float dampingRatio, float initialVelocity, float initialDisplacement, float delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double stiffness, double dampingRatio, double initialVelocity, double initialDisplacement, double delta);
- method @VisibleForTesting(otherwise=3) public static long estimateAnimationDurationMillis(double springConstant, double dampingCoefficient, double mass, double initialVelocity, double initialDisplacement, double delta);
}
public final class SpringSimulationKt {
}
- public final class SpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.AnimationSpec<V> {
- ctor public SpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ public final class SpringSpec<T> implements androidx.animation.AnimationSpec<T> {
+ ctor public SpringSpec(float dampingRatio, float stiffness, T? visibilityThreshold);
+ ctor public SpringSpec();
method public float getDampingRatio();
method public float getStiffness();
+ method public T? getVisibilityThreshold();
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedSpringSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public final class TargetAnimation {
- ctor public TargetAnimation(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
+ ctor public TargetAnimation(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
method public float component1();
- method public androidx.animation.AnimationBuilder<java.lang.Float> component2();
- method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationBuilder<java.lang.Float> animation);
- method public androidx.animation.AnimationBuilder<java.lang.Float> getAnimation();
+ method public androidx.animation.AnimationSpec<java.lang.Float> component2();
+ method public androidx.animation.TargetAnimation copy(float target, androidx.animation.AnimationSpec<java.lang.Float> animation);
+ method public androidx.animation.AnimationSpec<java.lang.Float> getAnimation();
method public float getTarget();
}
- public final class TargetBasedAnimation<T, V extends androidx.animation.AnimationVector> implements androidx.animation.Animation<T,V> {
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, V startVelocityVector, androidx.animation.TwoWayConverter<T,V> converter);
- ctor public TargetBasedAnimation(androidx.animation.AnimationSpec<V> animationSpec, T! startValue, T! endValue, T! startVelocity, androidx.animation.TwoWayConverter<T,V> converter);
- method public androidx.animation.TwoWayConverter<T,V> getConverter();
- method public long getDurationMillis();
- method public T! getEndValue();
- method public T! getValue(long playTime);
- method public V getVelocityVector(long playTime);
- property public long durationMillis;
- }
-
public final class ToolingGlueKt {
}
@@ -467,20 +384,20 @@
public final class TransitionDefinitionKt {
method public static <T> androidx.animation.TransitionAnimation<T> createAnimation(androidx.animation.TransitionDefinition<T>, androidx.animation.AnimationClockObservable clock, T? initState = null);
+ method public static <T> androidx.animation.KeyframesSpec<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesSpec.KeyframesSpecConfig<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.AnimationSpec<T> repeatable(int iterations, androidx.animation.DurationBasedAnimationSpec<T> animation);
+ method public static <T> androidx.animation.AnimationSpec<T> snap(int delayMillis = 0);
+ method public static <T> androidx.animation.SpringSpec<T> spring(float dampingRatio = 1.0f, float stiffness = 1500.0f, T? visibilityThreshold = null);
method public static <T> androidx.animation.TransitionDefinition<T> transitionDefinition(@kotlin.BuilderInference kotlin.jvm.functions.Function1<? super androidx.animation.TransitionDefinition<T>,kotlin.Unit> init);
+ method public static <T> androidx.animation.TweenSpec<T> tween(int durationMillis = 300, int delayMillis = 0, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing = FastOutSlowInEasing);
}
public final class TransitionSpec<S> {
method public androidx.animation.InterruptionHandling getInterruptionHandling();
method public S? getNextState();
- method public <T> androidx.animation.KeyframesBuilder<T> keyframes(kotlin.jvm.functions.Function1<? super androidx.animation.KeyframesBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> physics(kotlin.jvm.functions.Function1<? super androidx.animation.PhysicsBuilder<T>,kotlin.Unit> init);
- method public <T> androidx.animation.AnimationBuilder<T> repeatable(kotlin.jvm.functions.Function1<? super androidx.animation.RepeatableBuilder<T>,kotlin.Unit> init);
method public void setInterruptionHandling(androidx.animation.InterruptionHandling p);
method public void setNextState(S? p);
- method public <T> androidx.animation.AnimationBuilder<T> snap();
- method public <T> androidx.animation.DurationBasedAnimationBuilder<T> tween(kotlin.jvm.functions.Function1<? super androidx.animation.TweenBuilder<T>,kotlin.Unit> init);
- method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationBuilder<T> builder);
+ method public infix <T, V extends androidx.animation.AnimationVector> void using(androidx.animation.PropKey<T,V>, androidx.animation.AnimationSpec<T> animationSpec);
property public final androidx.animation.InterruptionHandling interruptionHandling;
property public final S? nextState;
}
@@ -489,22 +406,13 @@
method public operator <T, V extends androidx.animation.AnimationVector> T! get(androidx.animation.PropKey<T,V> propKey);
}
- public final class TweenBuilder<T> extends androidx.animation.DurationBasedAnimationBuilder<T> {
- ctor public TweenBuilder();
- method public <V extends androidx.animation.AnimationVector> androidx.animation.TweenSpec<V> build(androidx.animation.TwoWayConverter<T,V> converter);
- method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public void setEasing(kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> p);
- property public final kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> easing;
- }
-
- public final class TweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.DurationBasedAnimationSpec<V> {
- ctor public TweenSpec(long duration, long delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ public final class TweenSpec<T> implements androidx.animation.DurationBasedAnimationSpec<T> {
+ ctor public TweenSpec(int durationMillis, int delay, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
ctor public TweenSpec();
- method public long getDelay();
- method public long getDuration();
+ method public int getDelay();
+ method public int getDurationMillis();
method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
- method public V getValue(long playTime, V start, V end, V startVelocity);
- method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ method public <V extends androidx.animation.AnimationVector> androidx.animation.VectorizedTweenSpec<V> vectorize(androidx.animation.TwoWayConverter<T,V> converter);
}
public interface TwoWayConverter<T, V extends androidx.animation.AnimationVector> {
@@ -514,5 +422,71 @@
property public abstract kotlin.jvm.functions.Function1<T,V> convertToVector;
}
+ public interface VectorizedAnimationSpec<V extends androidx.animation.AnimationVector> {
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public default V getEndVelocity(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedAnimationSpecKt {
+ }
+
+ public interface VectorizedDurationBasedAnimationSpec<V extends androidx.animation.AnimationVector> extends androidx.animation.VectorizedAnimationSpec<V> {
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public default long getDurationMillis(V start, V end, V startVelocity);
+ property public abstract int delayMillis;
+ property public abstract int durationMillis;
+ }
+
+ public final class VectorizedFloatAnimationSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedFloatAnimationSpec(androidx.animation.FloatAnimationSpec anim);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedKeyframesSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedKeyframesSpec(java.util.Map<java.lang.Integer,? extends kotlin.Pair<? extends V,? extends kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float>>> keyframes, int durationMillis, int delayMillis);
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedRepeatableSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedRepeatableSpec(int iterations, androidx.animation.VectorizedDurationBasedAnimationSpec<V> animation);
+ method public long getDurationMillis(V start, V end, V startVelocity);
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
+ public final class VectorizedSnapSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedSnapSpec(int delayMillis);
+ ctor public VectorizedSnapSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ property public int durationMillis;
+ }
+
+ public final class VectorizedSpringSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedAnimationSpec<V> {
+ ctor public VectorizedSpringSpec(float dampingRatio, float stiffness, V? visibilityThreshold);
+ method public float getDampingRatio();
+ method public float getStiffness();
+ }
+
+ public final class VectorizedTweenSpec<V extends androidx.animation.AnimationVector> implements androidx.animation.VectorizedDurationBasedAnimationSpec<V> {
+ ctor public VectorizedTweenSpec(int durationMillis, int delayMillis, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Float> easing);
+ ctor public VectorizedTweenSpec();
+ method public int getDelayMillis();
+ method public int getDurationMillis();
+ method public kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Float> getEasing();
+ method public V getValue(long playTime, V start, V end, V startVelocity);
+ method public V getVelocity(long playTime, V start, V end, V startVelocity);
+ }
+
}
diff --git a/ui/ui-animation-core/samples/build.gradle b/ui/ui-animation-core/samples/build.gradle
index cc0bdb8..174f7a4 100644
--- a/ui/ui-animation-core/samples/build.gradle
+++ b/ui/ui-animation-core/samples/build.gradle
@@ -33,4 +33,5 @@
implementation project(":annotation:annotation-sampled")
implementation project(":ui:ui-animation-core")
+ implementation project(":ui:ui-unit")
}
diff --git a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/KeyframesBuilderSample.kt b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/KeyframesBuilderSample.kt
index d66c819..9b5d25f 100644
--- a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/KeyframesBuilderSample.kt
+++ b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/KeyframesBuilderSample.kt
@@ -17,26 +17,45 @@
package androidx.animation.samples
import androidx.animation.FastOutSlowInEasing
-import androidx.animation.KeyframesBuilder
+import androidx.animation.KeyframesSpec
+import androidx.animation.LinearEasing
+import androidx.animation.LinearOutSlowInEasing
+import androidx.animation.keyframes
import androidx.annotation.Sampled
+import androidx.ui.unit.Position
+import androidx.ui.unit.dp
@Sampled
fun FloatKeyframesBuilder() {
- KeyframesBuilder<Float>().apply {
+ KeyframesSpec(KeyframesSpec.KeyframesSpecConfig<Float>().apply {
0f at 0 // ms // Optional
- duration = 375
0.4f at 75 // ms
0.4f at 225 // ms
0f at 375 // ms // Optional
- }
+ durationMillis = 375
+ })
}
@Sampled
fun KeyframesBuilderWithEasing() {
- // Use FastOutSlowInEasing for the interval from 0 to 100 ms.
- KeyframesBuilder<Float>().apply {
- duration = 100
+ // Use FastOutSlowInEasing for the interval from 0 to 50 ms, and LinearOutSlowInEasing for the
+ // time between 50 and 100ms
+ keyframes<Float> {
+ durationMillis = 100
0f at 0 with FastOutSlowInEasing
+ 1.5f at 50 with LinearOutSlowInEasing
1f at 100
}
}
+
+@Sampled
+fun KeyframesBuilderForPosition() {
+ // Use FastOutSlowInEasing for the interval from 0 to 50 ms, and LinearOutSlowInEasing for the
+ // time between 50 and 100ms
+ keyframes<Position> {
+ durationMillis = 200
+ Position(0.dp, 0.dp) at 0 with LinearEasing
+ Position(500.dp, 100.dp) at 100 with LinearOutSlowInEasing
+ Position(400.dp, 50.dp) at 150
+ }
+}
diff --git a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionDefinitionSamples.kt b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionDefinitionSamples.kt
index 35e1c6b..364b13b 100644
--- a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionDefinitionSamples.kt
+++ b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionDefinitionSamples.kt
@@ -18,6 +18,8 @@
import androidx.animation.FloatPropKey
import androidx.animation.InterruptionHandling
+import androidx.animation.keyframes
+import androidx.animation.spring
import androidx.animation.transitionDefinition
import androidx.annotation.Sampled
@@ -40,11 +42,11 @@
// Optional configuration for transition from Pressed to Released. If no transition is
// defined, the default physics-based transition will be used.
transition(fromState = ButtonState.Released, toState = ButtonState.Pressed) {
- radius using physics {
+ radius using spring(
dampingRatio = 1.0f
- }
+ )
alpha using keyframes {
- duration = 375
+ durationMillis = 375
0f at 0 // ms // Optional
0.4f at 75 // ms
0.4f at 225 // ms
diff --git a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionSpecSamples.kt b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionSpecSamples.kt
index e2c51a8..09fb766 100644
--- a/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionSpecSamples.kt
+++ b/ui/ui-animation-core/samples/src/main/java/androidx/animation/samples/TransitionSpecSamples.kt
@@ -19,7 +19,10 @@
import androidx.animation.FloatPropKey
import androidx.animation.InterruptionHandling
import androidx.animation.LinearEasing
+import androidx.animation.keyframes
+import androidx.animation.spring
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.annotation.Sampled
enum class ButtonState {
@@ -38,20 +41,20 @@
transitionDefinition {
// This defines animations for 3 properties: Radius, Alpha, and Background.
transition(fromState = ButtonState.Released, toState = ButtonState.Pressed) {
- Radius using tween {
- easing = LinearEasing
- duration = 75
- }
+ Radius using tween(
+ easing = LinearEasing,
+ durationMillis = 75
+ )
Alpha using keyframes {
- duration = 375
+ durationMillis = 375
0f at 0 // ms // Optional
0.4f at 75 // ms
0.4f at 225 // ms
0f at 375 // ms // Optional
}
- Background using physics {
+ Background using spring(
dampingRatio = 1.0f
- }
+ )
interruptionHandling = InterruptionHandling.UNINTERRUPTIBLE
}
}
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimatedValue.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimatedValue.kt
index ce8138a..ff6f5a9 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimatedValue.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimatedValue.kt
@@ -34,13 +34,13 @@
* versa.
* @param clock An animation clock observable controlling the progression of the animated value
* @param visibilityThreshold Visibility threshold of the animation specifies the end condition:
- * for t > duration, value < visibilityThreshold. Null value defaults to [PhysicsBuilder]
+ * for t > duration, value < visibilityThreshold. Null value defaults to [SpringSpec]
* default.
*/
sealed class BaseAnimatedValue<T, V : AnimationVector>(
internal val typeConverter: TwoWayConverter<T, V>,
private val clock: AnimationClockObservable,
- internal val visibilityThreshold: V?
+ internal val visibilityThreshold: T?
) {
/**
@@ -113,11 +113,8 @@
}
}
- private fun defaultPhysicsBuilder(): PhysicsBuilder<T> {
- return visibilityThreshold?.let {
- PhysicsBuilder(displacementThreshold = typeConverter.convertFromVector(it))
- } ?: PhysicsBuilder()
- }
+ private val defaultSpringSpec: SpringSpec<T> =
+ SpringSpec<T>(visibilityThreshold = visibilityThreshold)
// TODO: Need a test for animateTo(...) being called with the same target value
/**
@@ -134,7 +131,7 @@
*/
fun animateTo(
targetValue: T,
- anim: AnimationBuilder<T> = defaultPhysicsBuilder(),
+ anim: AnimationSpec<T> = defaultSpringSpec,
onEnd: ((AnimationEndReason, T) -> Unit)? = null
) {
if (isRunning) {
@@ -142,8 +139,10 @@
}
this.targetValue = targetValue
- val animationWrapper = TargetBasedAnimation(anim.build(typeConverter),
- value, targetValue, velocityVector, typeConverter)
+ val animationWrapper = TargetBasedAnimation(
+ anim.vectorize(typeConverter),
+ value, targetValue, velocityVector, typeConverter
+ )
this.onEnd = onEnd
startAnimation(animationWrapper)
@@ -236,11 +235,14 @@
* transition AnimatedValue from its current value (i.e. value at the point of interruption) to the
* new target. This ensures that the value change is always continuous.
*
+ * @param typeConverter Converter for converting value type [T] to [AnimationVector], and vice versa
+ * @param clock The animation clock used to drive the animation.
+ * @param visibilityThreshold Threshold at which the animation may round off to its target value.
*/
abstract class AnimatedValue<T, V : AnimationVector>(
typeConverter: TwoWayConverter<T, V>,
clock: AnimationClockObservable,
- visibilityThreshold: V? = null
+ visibilityThreshold: T? = null
) : BaseAnimatedValue<T, V>(typeConverter, clock, visibilityThreshold) {
val velocity: V
get() = velocityVector
@@ -253,12 +255,14 @@
* velocity is non-zero.
*
* @param clock An animation clock observable controlling the progression of the animated value
+ * @param visibilityThreshold Threshold at which the animation may round off to its target value.
*/
abstract class AnimatedFloat(
clock: AnimationClockObservable,
visibilityThreshold: Float = Spring.DefaultDisplacementThreshold
) : BaseAnimatedValue<Float, AnimationVector1D>(
- FloatToVectorConverter, clock, AnimationVector(visibilityThreshold)) {
+ FloatToVectorConverter, clock, visibilityThreshold
+) {
/**
* Lower bound of the animation value. When animations reach this lower bound, it will
@@ -399,7 +403,7 @@
} else {
targetValue = targetAnimation.target
val animWrapper = TargetBasedAnimation(
- targetAnimation.animation.build(typeConverter),
+ targetAnimation.animation,
value,
targetAnimation.target,
AnimationVector1D(startVelocity),
@@ -418,14 +422,13 @@
* @param initVal Initial value to initialize the animation to.
* @param typeConverter Converter for converting value type [T] to [AnimationVector], and vice versa
* @param clock The animation clock used to drive the animation.
+ * @param visibilityThreshold Threshold at which the animation may round off to its target value.
*/
fun <T, V : AnimationVector> AnimatedValue(
initVal: T,
typeConverter: TwoWayConverter<T, V>,
clock: AnimationClockObservable,
- visibilityThreshold: V = typeConverter
- .convertToVector(initVal)
- .newInstanceOfValue(Spring.DefaultDisplacementThreshold)
+ visibilityThreshold: T? = null
): AnimatedValue<T, V> =
AnimatedValueImpl(initVal, typeConverter, clock, visibilityThreshold)
@@ -435,6 +438,7 @@
*
* @param initVal Initial value to initialize the animation to.
* @param clock The animation clock used to drive the animation.
+ * @param visibilityThreshold Threshold at which the animation may round off to its target value.
*/
fun <V : AnimationVector> AnimatedVector(
initVal: V,
@@ -462,7 +466,7 @@
initVal: T,
typeConverter: TwoWayConverter<T, V>,
clock: AnimationClockObservable,
- visibilityThreshold: V
+ visibilityThreshold: T? = null
) : AnimatedValue<T, V>(typeConverter, clock, visibilityThreshold) {
override var value: T = initVal
}
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/Animation.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/Animation.kt
index 2d7c766..ab8ab06 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/Animation.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/Animation.kt
@@ -16,10 +16,11 @@
package androidx.animation
+import androidx.ui.util.annotation.VisibleForTesting
import kotlin.math.sign
/**
- * This interface provides a convenient way to query from an [AnimationSpec] or
+ * This interface provides a convenient way to query from an [VectorizedAnimationSpec] or
* [FloatDecayAnimationSpec]: It spares the need to pass the starting conditions and in some cases
* ending condition for each value or velocity query, and instead only requires the play time to be
* passed for such queries.
@@ -35,7 +36,9 @@
*
* @see [AnimatedValue]
* @see [androidx.ui.animation.Transition]
+ * @suppress
*/
+@VisibleForTesting(otherwise = 3 /*package private*/)
interface Animation<T, V : AnimationVector> {
/**
* This amount of time in milliseconds that the animation will run before it finishes
@@ -77,19 +80,21 @@
*
* @param playTime the play time that is used to calculate the velocity of the animation.
*/
-fun <T, V : AnimationVector> Animation<T, V>.getVelocity(playTime: Long): T =
+internal fun <T, V : AnimationVector> Animation<T, V>.getVelocity(playTime: Long): T =
converter.convertFromVector(getVelocityVector(playTime))
/**
- * Creates a [TargetBasedAnimation] from a given [AnimationSpec] of [AnimationVector] type. This
+ * Creates a [TargetBasedAnimation] from a given [VectorizedAnimationSpec] of [AnimationVector] type. This
* convenient method is intended for when the value being animated (i.e. start value, end value,
* etc) is of [AnimationVector] type.
*
* @param startValue the value that the animation will start from
* @param endValue the value that the animation will end at
* @param startVelocity the initial velocity to start the animation at
+ * @suppress
*/
-fun <V : AnimationVector> AnimationSpec<V>.createAnimation(
+@VisibleForTesting(otherwise = 3 /*PACKAGE_PRIVATE*/)
+fun <V : AnimationVector> VectorizedAnimationSpec<V>.createAnimation(
startValue: V,
endValue: V,
startVelocity: V
@@ -103,7 +108,7 @@
)
/**
- * Creates a [TargetBasedAnimation] from a given [AnimationSpec] of [AnimationVector] type.
+ * Creates a [TargetBasedAnimation] from a given [VectorizedAnimationSpec] of [AnimationVector] type.
*
* @param startValue the value that the animation will start from
* @param endValue the value that the animation will end at
@@ -114,7 +119,7 @@
*
* @see TargetBasedAnimation
*/
-fun <T, V : AnimationVector> AnimationSpec<V>.createAnimation(
+internal fun <T, V : AnimationVector> VectorizedAnimationSpec<V>.createAnimation(
startValue: T,
endValue: T,
startVelocityVector: V,
@@ -127,6 +132,22 @@
converter = converter
)
+// TODO("Doc")
+internal fun <T, V : AnimationVector> TargetBasedAnimation(
+ animationSpec: AnimationSpec<T>,
+ startValue: T,
+ endValue: T,
+ startVelocityVector: V,
+ converter: TwoWayConverter<T, V>
+): TargetBasedAnimation<T, V> =
+ TargetBasedAnimation(
+ animationSpec.vectorize(converter),
+ startValue,
+ endValue,
+ startVelocityVector,
+ converter
+ )
+
/**
* This is a convenient animation wrapper class that works for all target based animations, i.e.
* animations that has a pre-defined end value, unlike decay.
@@ -141,7 +162,7 @@
* [TransitionAnimation]. Consider using those APIs for the interruption handling, as well as
* built-in animation lifecycle management.
*
- * @param animationSpec the [AnimationSpec] that will be used to calculate value/velocity
+ * @param animationSpec the [VectorizedAnimationSpec] that will be used to calculate value/velocity
* @param startValue the start value of the animation
* @param endValue the end value of the animation
* @param startVelocityVector the start velocity of the animation in the form of [AnimationVector]
@@ -150,9 +171,11 @@
* @see [TransitionAnimation]
* @see [androidx.ui.animation.Transition]
* @see [AnimatedValue]
+ * @suppress
*/
+@VisibleForTesting(otherwise = 3 /*PACKAGE_PRIVATE*/)
class TargetBasedAnimation<T, V : AnimationVector>(
- private val animationSpec: AnimationSpec<V>,
+ private val animationSpec: VectorizedAnimationSpec<V>,
startValue: T,
val endValue: T,
private val startVelocityVector: V,
@@ -173,14 +196,14 @@
* [TransitionAnimation]. Consider using those APIs for the interruption handling, as well as
* built-in animation lifecycle management.
*
- * @param animationSpec the [AnimationSpec] that will be used to calculate value/velocity
+ * @param animationSpec the [VectorizedAnimationSpec] that will be used to calculate value/velocity
* @param startValue the start value of the animation
* @param endValue the end value of the animation
* @param startVelocity the start velocity (of type [T] of the animation
* @param converter the [TwoWayConverter] that is used to convert animation type [T] from/to [V]
*/
constructor(
- animationSpec: AnimationSpec<V>,
+ animationSpec: VectorizedAnimationSpec<V>,
startValue: T,
endValue: T,
startVelocity: T,
@@ -243,7 +266,7 @@
* @param startValue starting value that will be passed to the decay animation
* @param startVelocity starting velocity for the decay animation
*/
-class DecayAnimation(
+internal class DecayAnimation(
private val anim: FloatDecayAnimationSpec,
private val startValue: Float,
private val startVelocity: Float = 0f
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationBuilder.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationBuilder.kt
deleted file mode 100644
index 44e4d51..0000000
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationBuilder.kt
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright 2019 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 androidx.animation
-
-import androidx.animation.Spring.DampingRatioNoBouncy
-import androidx.animation.Spring.StiffnessMedium
-import androidx.animation.Spring.StiffnessVeryLow
-
-/**
- * Animation builder for creating an animation that animates a value of type [T].
- */
-abstract class AnimationBuilder<T> {
- abstract fun <V : AnimationVector> build(
- converter: TwoWayConverter<T, V>
- ): AnimationSpec<V>
-}
-
-/**
- * The default duration used in [AnimationSpec]s.
- */
-const val DefaultDuration: Long = 300L
-
-/**
- * Used as a iterations count for [RepeatableBuilder] to create an infinity repeating animation.
- */
-const val Infinite: Int = Int.MAX_VALUE
-
-/**
- * [KeyframesBuilder] creates a [KeyframesSpec] animation.
- * [KeyframesSpec] animation based on the values defined at different timestamps in
- * the duration of the animation (i.e. different keyframes). Each keyframe can be defined using
- * [at]. [KeyframesSpec] allows very specific animation definitions with a precision to millisecond.
- *
- * @sample androidx.animation.samples.FloatKeyframesBuilder
- *
- * You can also provide a custom [Easing] for the interval with use of [with] function applied
- * for the interval starting keyframe.
- * @sample androidx.animation.samples.KeyframesBuilderWithEasing
- */
-class KeyframesBuilder<T> : DurationBasedAnimationBuilder<T>() {
-
- private val keyframes = mutableMapOf<Long, KeyframeEntity<T>>()
- /**
- * Adds a keyframe so that animation value will be [this] at time: [timeStamp]
- *
- * @param timeStamp The time in the during when animation should reach value: [this]
- * @return an [KeyframeEntity] so a custom [Easing] can be added by [with] method.
- */
- infix fun T.at(timeStamp: Int): KeyframeEntity<T> {
- return if (timeStamp >= 0) {
- KeyframeEntity(this).also {
- keyframes[timeStamp.toLong()] = it
- }
- } else {
- // TODO: adding a timestamp < 0 should cause a compile time error
- throw IllegalArgumentException("Time cannot be negative.")
- }
- }
-
- /**
- * Adds an [Easing] for the interval started with the just provided timestamp.
- *
- * @sample androidx.animation.samples.KeyframesBuilderWithEasing
- * @param easing [Easing] to be used for the next interval.
- */
- infix fun KeyframeEntity<T>.with(easing: Easing) {
- this.easing = easing
- }
-
- override fun <V : AnimationVector> build(
- converter: TwoWayConverter<T, V>
- ): DurationBasedAnimationSpec<V> {
- return KeyframesSpec(keyframes.mapValues {
- it.value.toPair(converter.convertToVector)
- }, duration.toLong(), delay.toLong())
- }
-
- /**
- * Holder class for building a keyframes animation.
- */
- inner class KeyframeEntity<T> internal constructor(
- internal val value: T,
- internal var easing: Easing = LinearEasing
- ) {
- internal fun <V : AnimationVector> toPair(convertToVector: (T) -> V) =
- convertToVector.invoke(value) to easing
- }
-}
-
-/**
- * Used for creating repeated animations where each iteration is defined by one of
- * the duration based animations like [TweenBuilder] or [KeyframesBuilder].
- */
-class RepeatableBuilder<T> : AnimationBuilder<T>() {
- /**
- * The count of iterations. Can't be less then 1. Use [Infinite] to
- * have an infinity repeating animation.
- */
- var iterations: Int? = null
- set(value) {
- if (value != null && value < 1) {
- throw IllegalStateException("Iterations count can't be less than 1")
- }
- field = value
- }
-
- /**
- * Use [TransitionSpec.tween] or [TransitionSpec.keyframes] as a specification
- * for the animation iteration.
- */
- var animation: DurationBasedAnimationBuilder<T>? = null
-
- /**
- * Creates a repeating animation that runs [animation] for the given [iterations].
- *
- * @throws IllegalStateException if the [iterations] or [animation] are undefined
- */
- override fun <V : AnimationVector> build(converter: TwoWayConverter<T, V>): AnimationSpec<V> {
- val iterationsCount = iterations?.toLong()
- ?: throw IllegalStateException("The iterations count should be provided")
- val animation = animation
- ?: throw IllegalStateException("The animation should be provided")
- return RepeatableSpec(
- iterationsCount,
- animation.build(converter)
- )
- }
-}
-
-/**
- * Base class for an [AnimationBuilder] to create animations based on a fixed duration.
- */
-abstract class DurationBasedAnimationBuilder<T> : AnimationBuilder<T>() {
- /**
- * Duration of the animation in milliseconds. Defaults to [DefaultDuration]
- */
- var duration: Int = DefaultDuration.toInt()
- set(value) {
- if (value < 0) {
- throw IllegalStateException("Duration shouldn't be negative")
- }
- field = value
- }
-
- /**
- * The amount of time that the animation should be delayed.
- */
- var delay: Int = 0
- set(value) {
- if (value < 0) {
- throw IllegalStateException("Delay shouldn't be negative")
- }
- field = value
- }
-
- abstract override fun <V : AnimationVector> build(
- converter: TwoWayConverter<T, V>
- ): DurationBasedAnimationSpec<V>
-}
-
-/**
- * TweenBuilder builds a tween animation that animates from start to end value, based on an
- * [easing] curve within the given [duration].
- */
-class TweenBuilder<T> : DurationBasedAnimationBuilder<T>() {
- /**
- * Easing function for the Tween animation. Default: [FastOutSlowInEasing]
- *
- * Easing functions define the rate of change of the value being animated. They allow animation
- * to accelerate or decelerate in a specific pattern.
- */
- var easing: Easing = FastOutSlowInEasing
-
- override fun <V : AnimationVector> build(
- converter: TwoWayConverter<T, V>
- ): TweenSpec<V> {
- val delay = this.delay.toLong()
- val duration = this.duration.toLong()
- return TweenSpec(duration, delay, easing)
- }
-}
-
-/**
- * PhysicsBuilder takes in the configuration of a spring as its constructor parameters.
- *
- * @param dampingRatio Damping ratio of the spring. Defaults to [DampingRatioNoBouncy]
- * @param stiffness Stiffness of the spring. Defaults to [StiffnessVeryLow]
- */
-class PhysicsBuilder<T>(
- var dampingRatio: Float = DampingRatioNoBouncy,
- var stiffness: Float = StiffnessMedium,
- displacementThreshold: T? = null
-) : AnimationBuilder<T>() {
-
- private val genericThreshold: T? = displacementThreshold
-
- override fun <V : AnimationVector> build(
- converter: TwoWayConverter<T, V>
- ): SpringSpec<V> {
- val threshold: V? = genericThreshold?.let { converter.convertToVector(genericThreshold) }
- return SpringSpec(
- dampingRatio,
- stiffness,
- threshold
- )
- }
-}
-
-/**
- * Builds Snap animation for immediately switching the animating value to the end value.
- */
-class SnapBuilder<T> : AnimationBuilder<T>() {
- /**
- * The amount of time in milliseconds that the snap animation should wait before it runs. 0
- * by default.
- */
- var delay: Int = 0
-
- override fun <V : AnimationVector> build(converter: TwoWayConverter<T, V>): SnapSpec<V> =
- SnapSpec(delay.toLong())
-}
-
-/**
- * Convenient internal class to set a duration on a multi-dimensional animation.
- */
-private class SimpleDurationBasedAnimationSpec<V : AnimationVector>(
- override val duration: Long,
- override val delay: Long,
- private val anim: AnimationSpec<V>
-) : DurationBasedAnimationSpec<V> {
- override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
- return anim.getValue(playTime, start, end, startVelocity)
- }
-
- override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
- return anim.getVelocity(playTime, start, end, startVelocity)
- }
-}
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationSpec.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationSpec.kt
index 9a7633e..1e75aec 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationSpec.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationSpec.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 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.
@@ -16,502 +16,218 @@
package androidx.animation
-import kotlin.math.min
+import androidx.animation.AnimationConstants.DefaultDurationMillis
+import androidx.ui.util.annotation.IntRange
-/**
- * [AnimationSpec]s are stateless, as they do not assume any starting/ending conditions. Nor do they
- * manage a lifecycle. All it stores is the particular animation configuration, e.g. easing and
- * duration for [FloatTweenSpec]s, or spring constants for [FloatSpringSpec]s. As a result, the
- * same [AnimationSpec] can be reused by a few different running animations with different
- * starting and ending values.
- *
- * Since [AnimationSpec]s are stateless, it requires starting value/velocity and ending value to
- * be passed in, along with playtime, to calculate the value or velocity at that time. Play time
- * here is the progress of the animation in terms of milliseconds. It will be clamped to between
- * 0 and duration.
- *
- * __Note__: For use cases where the starting values/velocity and ending values aren't expected
- * to change, it is recommended to use [Animation] that caches these static values and hence
- * does not require them to be supplied in the value/velocity calculation.
- *
- * @see Animation
- */
-interface AnimationSpec<V : AnimationVector> {
+object AnimationConstants {
/**
- * Calculates the value of the animation at given the playtime, with the provided start/end
- * values, and start velocity.
- *
- * @param playTime time since the start of the animation
- * @param start start value of the animation
- * @param end end value of the animation
- * @param startVelocity start velocity of the animation
+ * The default duration used in [VectorizedAnimationSpec]s and [AnimationSpec].
*/
- fun getValue(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V
-
+ const val DefaultDurationMillis: Int = 300
/**
- * Calculates the velocity of the animation at given the playtime, with the provided start/end
- * values, and start velocity.
- *
- * @param playTime time since the start of the animation
- * @param start start value of the animation
- * @param end end value of the animation
- * @param startVelocity start velocity of the animation
+ * Used as a iterations count for [VectorizedRepeatableSpec] to create an infinity repeating animation.
*/
- fun getVelocity(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V
-
- /**
- * Calculates the duration of an animation. For duration-based animations, this will return the
- * pre-defined duration. For physics-based animations, the duration will be estimated based on
- * the physics configuration (such as spring stiffness, damping ratio, visibility threshold)
- * as well as the [start], [end] values, and [startVelocity].
- *
- * @param start start value of the animation
- * @param end end value of the animation
- * @param startVelocity start velocity of the animation
- */
- fun getDurationMillis(
- start: V,
- end: V,
- startVelocity: V
- ): Long
-
- /**
- * Calculates the end velocity of the animation with the provided start/end values, and start
- * velocity. For duration-based animations, end velocity will be the velocity of the
- * animation at the duration time. This is also the default assumption. However, for
- * physics-based animations, end velocity is an [AnimationVector] of 0s.
- *
- * @param start start value of the animation
- * @param end end value of the animation
- * @param startVelocity start velocity of the animation
- */
- fun getEndVelocity(
- start: V,
- end: V,
- startVelocity: V
- ): V = getVelocity(getDurationMillis(start, end, startVelocity), start, end, startVelocity)
+ const val Infinite: Int = Int.MAX_VALUE
}
/**
- * Base class for [AnimationSpec]s that are based on a fixed [duration].
+ * [AnimationSpec] stores the specification of an animation, including 1) the data type to be
+ * animated, and 2) the animation configuration (i.e. [VectorizedAnimationSpec]) that will be used
+ * to once the data (of type [T]) has been converted to [AnimationVector].
+ *
+ * Any type [T] can be animated by the system as long as a [TwoWayConverter] is supplied to convert
+ * the data type [T] from and to an [AnimationVector]. There are a number of converters
+ * available out of the box. For example, to animate [androidx.ui.unit.Position] the system uses
+ * [android.ui.animation.PositionToVectorConverter] to convert the object to [AnimationVector2D],
+ * so that both x and y dimensions are animated independently with separate velocity tracking.
+ * This enables multidimensional objects to be animated in a true multi-dimensional way. It is
+ * particularly useful for smoothly handling animation interruptions (such as when the target
+ * changes during the animation).
*/
-interface DurationBasedAnimationSpec<V : AnimationVector> : AnimationSpec<V> {
+interface AnimationSpec<T> {
/**
- * duration is the amount of time while animation is not yet finished.
+ * Creates a [VectorizedAnimationSpec] with the given [TwoWayConverter].
+ *
+ * The underlying animation system operates on [AnimationVector]s. [T] will be converted to
+ * [AnimationVector] to animate. [VectorizedAnimationSpec] describes how the
+ * converted [AnimationVector] should be animated. E.g. The animation could simply
+ * interpolate between the start and end values (i.e.[TweenSpec]), or apply spring physics
+ * to produce the motion (i.e. [SpringSpec]), etc)
+ *
+ * @param converter converts the type [T] from and to [AnimationVector] type
*/
- val duration: Long
- /**
- * delay defines the amount of time that animation can be delayed.
- */
- val delay: Long
-
- override fun getDurationMillis(start: V, end: V, startVelocity: V): Long = delay + duration
+ fun <V : AnimationVector> vectorize(
+ converter: TwoWayConverter<T, V>
+ ): VectorizedAnimationSpec<V>
}
/**
- * Clamps the input [playTime] to the duration range of the given [DurationBasedAnimationSpec].
+ * Creates a TweenSpec configured with the given duration, delay, and easing curve.
+ *
+ * @param durationMillis duration of the [VectorizedTweenSpec] animation.
+ * @param delay the number of milliseconds the animation waits before starting, 0 by default.
+ * @param easing the easing curve used by the animation. [FastOutSlowInEasing] by default.
*/
-private fun DurationBasedAnimationSpec<*>.clampPlayTime(playTime: Long): Long {
- return (playTime - delay).coerceIn(0, duration)
+class TweenSpec<T>(
+ val durationMillis: Int = DefaultDurationMillis,
+ val delay: Int = 0,
+ val easing: Easing = FastOutSlowInEasing
+) : DurationBasedAnimationSpec<T> {
+
+ override fun <V : AnimationVector> vectorize(converter: TwoWayConverter<T, V>) =
+ VectorizedTweenSpec<V>(durationMillis, delay, easing)
}
/**
- * [KeyframesSpec] class manages the animation based on the values defined at different timestamps
- * in the duration of the animation (i.e. different keyframes). Each keyframe can be provided via
- * [keyframes] parameter. [KeyframesSpec] allows very specific animation definitions with a
- * precision to millisecond.
- *
- * Here's an example of creating a [KeyframesSpec] animation: ([KeyframesBuilder] could make
- * defining key frames more readable.)
- *
- * val delay = 120L
- * val startValue = AnimationVector3D(100f, 200f, 300f)
- * val endValue = AnimationVector3D(200f, 100f, 0f)
- * val keyframes = Keyframes<AnimationVector3D>(
- * mutableMapOf (
- * 0L to (startValue to LinearEasing),
- * 100L to (startValue to FastOutLinearInEasing)
- * ),
- * 200L,
- * delay
- * )
- *
- * @param keyframes a map from time to a value/easing function pair. The value in each entry
- * defines the animation value at that time, and the easing curve is used in the
- * interval starting from that time.
- * @param duration total duration of the animation
- * @param delay the amount of the time the animation should wait before it starts. Defaults to 0.
- *
- * @see [KeyframesBuilder]
+ * This describes [AnimationSpec]s that are based on a fixed duration, such as [KeyframesSpec],
+ * [TweenSpec], and [SnapSpec]. These duration based specs can repeated when put into a
+ * [RepeatableSpec].
*/
-class KeyframesSpec<V : AnimationVector>(
- private val keyframes: Map<Long, Pair<V, Easing>>,
- override val duration: Long,
- override val delay: Long = 0L
-) : DurationBasedAnimationSpec<V> {
+interface DurationBasedAnimationSpec<T> : AnimationSpec<T> {
+ override fun <V : AnimationVector> vectorize(converter: TwoWayConverter<T, V>):
+ VectorizedDurationBasedAnimationSpec<V>
+}
- private lateinit var valueVector: V
- private lateinit var velocityVector: V
+/**
+ * Creates a [SpringSpec] that uses the given spring constants (i.e. [dampingRatio] and
+ * [stiffness]. The optional [visibilityThreshold] defines when the animation
+ * should be considered to be visually close enough to round off to its target.
+ *
+ * @param dampingRatio damping ratio of the spring. [Spring.DampingRatioNoBouncy] by default.
+ * @param stiffness stiffness of the spring. [Spring.StiffnessMedium] by default.
+ * @param visibilityThreshold specifies the visibility threshold
+ */
+class SpringSpec<T>(
+ val dampingRatio: Float = Spring.DampingRatioNoBouncy,
+ val stiffness: Float = Spring.StiffnessMedium,
+ val visibilityThreshold: T? = null
+) : AnimationSpec<T> {
- override fun getValue(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V {
- val clampedPlayTime = clampPlayTime(playTime)
- // If there is a key frame defined with the given time stamp, return that value
- if (keyframes.containsKey(clampedPlayTime)) {
- return keyframes.getValue(clampedPlayTime).first
- }
+ override fun <V : AnimationVector> vectorize(converter: TwoWayConverter<T, V>) =
+ VectorizedSpringSpec(dampingRatio, stiffness, converter.convert(visibilityThreshold))
+}
- if (clampedPlayTime >= duration) {
- return end
- } else if (clampedPlayTime <= 0) return start
-
- var startTime = 0L
- var startVal = start
- var endVal = end
- var endTime: Long = duration
- var easing: Easing = LinearEasing
- for ((timestamp, value) in keyframes) {
- if (clampedPlayTime > timestamp && timestamp >= startTime) {
- startTime = timestamp
- startVal = value.first
- easing = value.second
- } else if (clampedPlayTime < timestamp && timestamp <= endTime) {
- endTime = timestamp
- endVal = value.first
- }
- }
-
- // Now interpolate
- val fraction = easing((clampedPlayTime - startTime) / (endTime - startTime).toFloat())
- init(start)
- for (i in 0 until startVal.size) {
- valueVector[i] = lerp(startVal[i], endVal[i], fraction)
- }
- return valueVector
- }
-
- private fun init(value: V) {
- if (!::valueVector.isInitialized) {
- valueVector = value.newInstance()
- velocityVector = value.newInstance()
- }
- }
-
- override fun getVelocity(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V {
- val clampedPlayTime = clampPlayTime(playTime)
- if (clampedPlayTime <= 0L) {
- return startVelocity
- }
- val startNum = getValue(clampedPlayTime - 1, start, end, startVelocity)
- val endNum = getValue(clampedPlayTime, start, end, startVelocity)
-
- init(start)
- for (i in 0 until startNum.size) {
- velocityVector[i] = (startNum[i] - endNum[i]) * 1000f
- }
- return velocityVector
+private fun <T, V : AnimationVector> TwoWayConverter<T, V>.convert(data: T?): V? {
+ if (data == null) {
+ return null
+ } else {
+ return convertToVector(data)
}
}
/**
- * [SnapSpec] immediately snaps the animating value to the end value.
+ * [RepeatableSpec] takes another [DurationBasedAnimationSpec] and plays it [iterations] times.
+ *
+ * @param iterations the count of iterations. Should be at least 1. [AnimationConstants.Infinite]
+ * can be used to have an infinity repeating animation.
+ * @param animation the [AnimationSpec] to be repeated
+ */
+class RepeatableSpec<T>(
+ val iterations: Int,
+ val animation: DurationBasedAnimationSpec<T>
+) : AnimationSpec<T> {
+ override fun <V : AnimationVector> vectorize(
+ converter: TwoWayConverter<T, V>
+ ): VectorizedAnimationSpec<V> {
+ return VectorizedRepeatableSpec(iterations, animation.vectorize(converter))
+ }
+}
+
+/**
+ * [SnapSpec] describes a jump-cut type of animation. It immediately snaps the animating value to
+ * the end value.
*
* @param delay the amount of time (in milliseconds) that the animation should wait before it
* starts. Defaults to 0.
*/
-class SnapSpec<V : AnimationVector>(
- override val delay: Long = 0L
-) : DurationBasedAnimationSpec<V> {
-
- override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
- if (playTime < delay) {
- return start
- } else {
- return end
- }
- }
-
- override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
- return startVelocity
- }
-
- override val duration: Long
- get() = 0L
+class SnapSpec<T>(val delay: Int = 0) : AnimationSpec<T> {
+ override fun <V : AnimationVector> vectorize(
+ converter: TwoWayConverter<T, V>
+ ): VectorizedDurationBasedAnimationSpec<V> = VectorizedSnapSpec(delay)
}
/**
- * This animation takes another [DurationBasedAnimationSpec] as a parameter and plays it
- * [iterationCount] times.
+ * [KeyframesSpec] creates a [VectorizedKeyframesSpec] animation.
*
- * @param iterationCount the count of iterations. Should be at least 1. [Infinite] can
- * be used to have an infinity repeating animation.
- * @param animation the [AnimationSpec] describing each repetition iteration.
+ * [VectorizedKeyframesSpec] animates based on the values defined at different timestamps in
+ * the duration of the animation (i.e. different keyframes). Each keyframe can be defined using
+ * [KeyframesSpecConfig.at]. [VectorizedKeyframesSpec] allows very specific animation definitions
+ * with a precision to millisecond.
+ *
+ * @sample androidx.animation.samples.FloatKeyframesBuilder
+ *
+ * You can also provide a custom [Easing] for the interval with use of [with] function applied
+ * for the interval starting keyframe.
+ * @sample androidx.animation.samples.KeyframesBuilderWithEasing
*/
-class RepeatableSpec<V : AnimationVector>(
- private val iterationCount: Long,
- private val animation: DurationBasedAnimationSpec<V>
-) : AnimationSpec<V> {
-
- init {
- if (iterationCount < 1) {
- throw IllegalArgumentException("Iterations count can't be less than 1")
- }
- }
-
- private val duration: Long = animation.delay + animation.duration
-
- private fun repetitionPlayTime(playTime: Long): Long {
- val repeatsCount = min(playTime / duration, iterationCount - 1L)
- return playTime - repeatsCount * duration
- }
-
- private fun repetitionStartVelocity(playTime: Long, start: V, startVelocity: V, end: V): V =
- if (playTime > duration) {
- // Start velocity of the 2nd and subsequent iteration will be the velocity at the end
- // of the first iteration, instead of the initial velocity.
- getVelocity(duration, start, startVelocity, end)
- } else
- startVelocity
-
- override fun getValue(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V {
- return animation.getValue(
- repetitionPlayTime(playTime),
- start,
- end,
- repetitionStartVelocity(playTime, start, startVelocity, end)
- )
- }
-
- override fun getVelocity(
- playTime: Long,
- start: V,
- end: V,
- startVelocity: V
- ): V {
- return animation.getVelocity(
- repetitionPlayTime(playTime),
- start,
- end,
- repetitionStartVelocity(playTime, start, startVelocity, end)
- )
- }
-
- override fun getDurationMillis(start: V, end: V, startVelocity: V): Long {
- return iterationCount * duration
- }
-}
-
-/**
- * Physics class contains a number of recommended configurations for physics animations.
- */
-object Spring {
- /**
- * Stiffness constant for extremely stiff spring
- */
- const val StiffnessHigh = 10_000f
- /**
- * Stiffness constant for medium stiff spring. This is the default stiffness for spring
- * force.
- */
- const val StiffnessMedium = 1500f
- /**
- * Stiffness constant for a spring with low stiffness.
- */
- const val StiffnessLow = 200f
- /**
- * Stiffness constant for a spring with very low stiffness.
- */
- const val StiffnessVeryLow = 50f
+class KeyframesSpec<T>(val config: KeyframesSpecConfig<T>) : DurationBasedAnimationSpec<T> {
/**
- * Damping ratio for a very bouncy spring. Note for under-damped springs
- * (i.e. damping ratio < 1), the lower the damping ratio, the more bouncy the spring.
- */
- const val DampingRatioHighBouncy = 0.2f
- /**
- * Damping ratio for a medium bouncy spring. This is also the default damping ratio for
- * spring force. Note for under-damped springs (i.e. damping ratio < 1), the lower the
- * damping ratio, the more bouncy the spring.
- */
- const val DampingRatioMediumBouncy = 0.5f
- /**
- * Damping ratio for a spring with low bounciness. Note for under-damped springs
- * (i.e. damping ratio < 1), the lower the damping ratio, the higher the bounciness.
- */
- const val DampingRatioLowBouncy = 0.75f
- /**
- * Damping ratio for a spring with no bounciness. This damping ratio will create a
- * critically damped spring that returns to equilibrium within the shortest amount of time
- * without oscillating.
- */
- const val DampingRatioNoBouncy = 1f
- /**
- * Default cutoff for rounding off physics based animations
- */
- const val DefaultDisplacementThreshold = 0.01f
-}
-
-/**
- * Internal data structure for storing different FloatAnimations for different dimensions.
- */
-internal interface Animations {
- operator fun get(index: Int): FloatAnimationSpec
-}
-
-/**
- * [SpringSpec] uses spring animations to animate (each dimension of) [AnimationVector]s.
- */
-class SpringSpec<V : AnimationVector> private constructor(
- val dampingRatio: Float,
- val stiffness: Float,
- anims: Animations
-) : AnimationSpec<V> by VectorizedAnimationSpec<V>(anims) {
-
- /**
- * Creates a [SpringSpec] that uses the same spring constants (i.e. [dampingRatio] and
- * [stiffness] on all dimensions. The optional [visibilityThreshold] defines when the animation
- * should be considered to be visually close enough to target to stop. By default,
- * [Spring.DefaultDisplacementThreshold] is used on all dimensions of the
- * [AnimationVector].
+ * [KeyframesSpecConfig] stores a mutable configuration of the key frames, including [durationMillis],
+ * [delayMillis], and all the key frames. Each key frame defines what the animation value should be
+ * at a particular time. Once the key frames are fully configured, the [KeyframesSpecConfig]
+ * can be used to create a [KeyframesSpec].
*
- * @param dampingRatio damping ratio of the spring
- * @param stiffness stiffness of the spring
- * @param visibilityThreshold specifies the visibility threshold for each dimension.
+ * @sample androidx.animation.samples.FloatKeyframesBuilder
+ * @see keyframes
*/
- constructor(
- dampingRatio: Float,
- stiffness: Float,
- visibilityThreshold: V? = null
- ) : this(
- dampingRatio, stiffness,
- createSpringAnimations(visibilityThreshold, dampingRatio, stiffness)
- )
-}
+ class KeyframesSpecConfig<T> {
+ /**
+ * Duration of the animation in milliseconds. Defaults to [DefaultDurationMillis]
+ */
+ @IntRange(from = 0)
+ var durationMillis: Int = DefaultDurationMillis
-private fun <V : AnimationVector> createSpringAnimations(
- visibilityThreshold: V?,
- dampingRatio: Float,
- stiffness: Float
-): Animations {
- if (visibilityThreshold != null) {
- return object : Animations {
- private val anims = (0 until visibilityThreshold.size).map { index ->
- FloatSpringSpec(dampingRatio, stiffness, visibilityThreshold[index])
+ /**
+ * The amount of time that the animation should be delayed. Defaults to 0.
+ */
+ @IntRange(from = 0)
+ var delayMillis: Int = 0
+
+ internal val keyframes = mutableMapOf<Int, KeyframeEntity<T>>()
+
+ /**
+ * Adds a keyframe so that animation value will be [this] at time: [timeStamp]. For example:
+ * 0.8f at 150 // ms
+ *
+ * @param timeStamp The time in the during when animation should reach value: [this]
+ * @return an [KeyframeEntity] so a custom [Easing] can be added by [with] method.
+ */
+ // TODO: Need a IntRange equivalent annotation
+ infix fun T.at(@IntRange(from = 0) timeStamp: Int): KeyframeEntity<T> {
+ return KeyframeEntity(this).also {
+ keyframes[timeStamp] = it
}
-
- override fun get(index: Int): FloatSpringSpec = anims[index]
}
- } else {
- return object : Animations {
- private val anim = FloatSpringSpec(dampingRatio, stiffness)
- override fun get(index: Int): FloatSpringSpec = anim
+
+ /**
+ * Adds an [Easing] for the interval started with the just provided timestamp. For example:
+ * 0f at 50 with LinearEasing
+ *
+ * @sample androidx.animation.samples.KeyframesBuilderWithEasing
+ * @param easing [Easing] to be used for the next interval.
+ */
+ infix fun KeyframeEntity<T>.with(easing: Easing) {
+ this.easing = easing
}
}
-}
-/**
- * [TweenSpec] animates a [AnimationVector] value by interpolating the start and end value, in the
- * given [duration] using the given [easing] curve.
- *
- * @param duration duration of the [TweenSpec] animation. Defaults to [DefaultDuration].
- * @param delay the amount of time the animation should wait before it starts running, 0 by default.
- * @param easing the easing curve used by the animation. [FastOutSlowInEasing] by default.
- */
-// TODO: Support different tween on different dimens
-class TweenSpec<V : AnimationVector>(
- override val duration: Long = DefaultDuration.toLong(),
- override val delay: Long = 0,
- val easing: Easing = FastOutSlowInEasing
-) : DurationBasedAnimationSpec<V> {
- private val anim = VectorizedAnimationSpec<V>(FloatTweenSpec(duration, delay, easing))
- override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
- return anim.getValue(playTime, start, end, startVelocity)
+ override fun <V : AnimationVector> vectorize(
+ converter: TwoWayConverter<T, V>
+ ): VectorizedKeyframesSpec<V> {
+ return VectorizedKeyframesSpec(config.keyframes.mapValues {
+ it.value.toPair(converter.convertToVector)
+ }, config.durationMillis, config.delayMillis)
}
- override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
- return anim.getVelocity(playTime, start, end, startVelocity)
- }
-}
-
-/**
- * Internal impl to turn a [FloatAnimationSpec] into a multi-dimensional [AnimationSpec].
- */
-internal class VectorizedAnimationSpec<V : AnimationVector>(
- val anims: Animations
-) : AnimationSpec<V> {
- private lateinit var valueVector: V
- private lateinit var velocityVector: V
- private lateinit var endVelocityVector: V
-
- constructor(anim: FloatAnimationSpec) : this(object : Animations {
- override fun get(index: Int): FloatAnimationSpec {
- return anim
- }
- })
-
- override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
- if (!::valueVector.isInitialized) {
- valueVector = start.newInstance()
- }
- for (i in 0 until valueVector.size) {
- valueVector[i] = anims[i].getValue(playTime, start[i], end[i], startVelocity[i])
- }
- return valueVector
- }
-
- override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
- if (!::velocityVector.isInitialized) {
- velocityVector = startVelocity.newInstance()
- }
- for (i in 0 until velocityVector.size) {
- velocityVector[i] = anims[i].getVelocity(playTime, start[i], end[i], startVelocity[i])
- }
- return velocityVector
- }
-
- override fun getEndVelocity(start: V, end: V, startVelocity: V): V {
- if (!::endVelocityVector.isInitialized) {
- endVelocityVector = startVelocity.newInstance()
- }
- for (i in 0 until endVelocityVector.size) {
- endVelocityVector[i] =
- anims[i].getEndVelocity(start[i], end[i], startVelocity[i])
- }
- return endVelocityVector
- }
-
- override fun getDurationMillis(start: V, end: V, startVelocity: V): Long {
- var maxDuration = 0L
- (0 until start.size).forEach {
- maxDuration = maxOf(
- maxDuration,
- anims[it].getDurationMillis(start[it], end[it], startVelocity[it])
- )
- }
- return maxDuration
+ /**
+ * Holder class for building a keyframes animation.
+ */
+ class KeyframeEntity<T> internal constructor(
+ internal val value: T,
+ internal var easing: Easing = LinearEasing
+ ) {
+ internal fun <V : AnimationVector> toPair(convertToVector: (T) -> V) =
+ convertToVector.invoke(value) to easing
}
}
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/DynamicTargetAnimation.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/DynamicTargetAnimation.kt
index ed26ce6..702d424 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/DynamicTargetAnimation.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/DynamicTargetAnimation.kt
@@ -25,7 +25,7 @@
*/
data class TargetAnimation(
val target: Float,
- val animation: AnimationBuilder<Float> = PhysicsBuilder()
+ val animation: AnimationSpec<Float> = SpringSpec()
)
/**
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatAnimationSpec.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatAnimationSpec.kt
index 291bf1f..908c98e 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatAnimationSpec.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatAnimationSpec.kt
@@ -16,21 +16,23 @@
package androidx.animation
+import androidx.animation.AnimationConstants.DefaultDurationMillis
+
/**
- * [FloatAnimationSpec] interface is similar to [AnimationSpec], except it deals exclusively with
+ * [FloatAnimationSpec] interface is similar to [VectorizedAnimationSpec], except it deals exclusively with
* floats.
*
- * Like [AnimationSpec], [FloatAnimationSpec] is entirely stateless as well. It requires start/end
+ * Like [VectorizedAnimationSpec], [FloatAnimationSpec] is entirely stateless as well. It requires start/end
* values and start velocity to be passed in for the query of velocity and value of the animation.
* The [FloatAnimationSpec] itself stores only the animation configuration (such as the
* delay, duration and easing curve for [FloatTweenSpec], or spring constants for
* [FloatSpringSpec].
*
- * A [FloatAnimationSpec] can be converted to an [AnimationSpec] using [vectorize].
+ * A [FloatAnimationSpec] can be converted to an [VectorizedAnimationSpec] using [vectorize].
*
- * @see [AnimationSpec]
+ * @see [VectorizedAnimationSpec]
*/
-interface FloatAnimationSpec {
+interface FloatAnimationSpec : AnimationSpec<Float> {
/**
* Calculates the value of the animation at given the playtime, with the provided start/end
* values, and start velocity.
@@ -97,6 +99,13 @@
end: Float,
startVelocity: Float
): Long
+
+ /**
+ * Create an [VectorizedAnimationSpec] that animates [AnimationVector] from a [FloatAnimationSpec]. Every
+ * dimension of the [AnimationVector] will be animated using the given [FloatAnimationSpec].
+ */
+ override fun <V : AnimationVector> vectorize(converter: TwoWayConverter<Float, V>) =
+ VectorizedFloatAnimationSpec<V>(this)
}
/**
@@ -106,14 +115,14 @@
*
* @param dampingRatio damping ratio of the spring. Defaults to [Spring.DampingRatioNoBouncy]
* @param stiffness Stiffness of the spring. Defaults to [Spring.StiffnessMedium]
- * @param displacementThreshold The value threshold such that the animation is no longer
+ * @param visibilityThreshold The value threshold such that the animation is no longer
* significant. e.g. 1px for translation animations. Defaults to
* [Spring.DefaultDisplacementThreshold]
*/
class FloatSpringSpec(
- dampingRatio: Float = Spring.DampingRatioNoBouncy,
- stiffness: Float = Spring.StiffnessMedium,
- private val displacementThreshold: Float = Spring.DefaultDisplacementThreshold
+ val dampingRatio: Float = Spring.DampingRatioNoBouncy,
+ val stiffness: Float = Spring.StiffnessMedium,
+ private val visibilityThreshold: Float = Spring.DefaultDisplacementThreshold
) : FloatAnimationSpec {
private val spring = SpringSimulation(1f).also {
@@ -153,8 +162,8 @@
estimateAnimationDurationMillis(
stiffness = spring.stiffness,
dampingRatio = spring.dampingRatio,
- initialDisplacement = (start - end) / displacementThreshold,
- initialVelocity = startVelocity / displacementThreshold,
+ initialDisplacement = (start - end) / visibilityThreshold,
+ initialVelocity = startVelocity / visibilityThreshold,
delta = 1f
)
}
@@ -171,8 +180,8 @@
* value of the animation. Defaults to [FastOutSlowInEasing].
*/
class FloatTweenSpec(
- val duration: Long = DefaultDuration,
- val delay: Long = 0L,
+ val duration: Int = DefaultDurationMillis,
+ val delay: Int = 0,
private val easing: Easing = FastOutSlowInEasing
) : FloatAnimationSpec {
override fun getValue(
@@ -182,17 +191,17 @@
startVelocity: Float
): Float {
val clampedPlayTime = clampPlayTime(playTime)
- val rawFraction = if (duration == 0L) 1f else clampedPlayTime / duration.toFloat()
+ val rawFraction = if (duration == 0) 1f else clampedPlayTime / duration.toFloat()
val fraction = easing(rawFraction.coerceIn(0f, 1f))
return lerp(start, end, fraction)
}
private fun clampPlayTime(playTime: Long): Long {
- return (playTime - delay).coerceIn(0, duration)
+ return (playTime - delay).coerceIn(0, duration.toLong())
}
override fun getDurationMillis(start: Float, end: Float, startVelocity: Float): Long {
- return delay + duration
+ return delay + duration.toLong()
}
// Calculate velocity by difference between the current value and the value 1 ms ago. This is a
@@ -215,10 +224,3 @@
return (endNum - startNum) * 1000f
}
}
-
-/**
- * Create an [AnimationSpec] that animates [AnimationVector] from a [FloatAnimationSpec]. Every
- * dimension of the [AnimationVector] will be animated using the given [FloatAnimationSpec].
- */
-fun <V : AnimationVector> FloatAnimationSpec.vectorize(): AnimationSpec<V> =
- VectorizedAnimationSpec(this)
\ No newline at end of file
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatDecayAnimationSpec.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatDecayAnimationSpec.kt
index 40c7f41..92b1e23 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatDecayAnimationSpec.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/FloatDecayAnimationSpec.kt
@@ -156,7 +156,7 @@
* @param startValue the starting value of the fixed animation.
* @param startVelocity the starting velocity of the fixed animation.
*/
-fun FloatDecayAnimationSpec.createAnimation(
+internal fun FloatDecayAnimationSpec.createAnimation(
startValue: Float,
startVelocity: Float = 0f
): Animation<Float, AnimationVector1D> {
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/PropKey.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/PropKey.kt
index a0e0fbe..e0a96e3 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/PropKey.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/PropKey.kt
@@ -64,7 +64,7 @@
* the type of the property. For example, this creates an alpha property:
* `val alpha = FloatPropKey()`. [PropKey]s for common data types are
* provided out of the box: such as [androidx.ui.animation.DpPropKey],
- * [androidx.ui.animation.PxPositionPropKey], etc. To create a custom [PropKey] of type [T], a
+ * etc. To create a custom [PropKey] of type [T], a
* [typeConverter] needs to be supplied to define how the animated data type can be converted to
* and from an [AnimationVector], so that animations can support multi-dimensional data types.
*/
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/SpringEstimation.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/SpringEstimation.kt
index 99846cd..f518eaa 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/SpringEstimation.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/SpringEstimation.kt
@@ -26,6 +26,7 @@
/**
* Returns the estimated time that the spring will last be at [delta]
+ * @suppress
*/
@VisibleForTesting(otherwise = 3 /* VisibleForTesting.PACKAGE_PRIVATE */)
fun estimateAnimationDurationMillis(
@@ -44,6 +45,7 @@
/**
* Returns the estimated time that the spring will last be at [delta]
+ * @suppress
*/
@VisibleForTesting(otherwise = 3 /* VisibleForTesting.PACKAGE_PRIVATE */)
fun estimateAnimationDurationMillis(
@@ -67,6 +69,7 @@
/**
* Returns the estimated time that the spring will last be at [delta]
+ * @suppress
*/
@VisibleForTesting(otherwise = 3 /* VisibleForTesting.PACKAGE_PRIVATE */)
fun estimateAnimationDurationMillis(
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
index 16161de..bc3bdde 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionAnimation.kt
@@ -232,7 +232,7 @@
}
internal fun <T, V : AnimationVector> PropKey<T, V>.createAnimationWrapper(
- anim: AnimationSpec<V>,
+ anim: VectorizedAnimationSpec<V>,
start: T,
startVelocity: V?,
end: T
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionDefinition.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionDefinition.kt
index 10d3f4b..89e8eea 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionDefinition.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/TransitionDefinition.kt
@@ -16,6 +16,8 @@
package androidx.animation
+import androidx.animation.AnimationConstants.DefaultDurationMillis
+import androidx.animation.AnimationConstants.Infinite
import androidx.ui.util.fastFirstOrNull
import kotlin.experimental.ExperimentalTypeInference
@@ -52,91 +54,113 @@
/**
* The default animation to use when it wasn't explicitly provided for a property
*/
- internal var defaultAnimation: DefaultTransitionAnimation = SpringTransition()
+ internal enum class DefaultAnimation {
+ Spring,
+ Snap
+ }
- private val propAnimation: MutableMap<PropKey<*, *>, AnimationSpec<*>> = mutableMapOf()
+ internal var defaultAnimation: DefaultAnimation = DefaultAnimation.Spring
+
+ private val propAnimation: MutableMap<PropKey<*, *>, VectorizedAnimationSpec<*>> =
+ mutableMapOf()
internal fun <T, V : AnimationVector> getAnimationForProp(
prop: PropKey<T, V>
- ): AnimationSpec<V> {
+ ): VectorizedAnimationSpec<V> {
@Suppress("UNCHECKED_CAST")
return (propAnimation.getOrPut(prop,
- { defaultAnimation.createDefault(prop.typeConverter) })) as AnimationSpec<V>
+ { createSpec<V>(defaultAnimation) })) as VectorizedAnimationSpec<V>
}
+ private fun <V : AnimationVector> createSpec(
+ anim: DefaultAnimation
+ ): VectorizedAnimationSpec<V> =
+ when (anim) {
+ DefaultAnimation.Spring -> VectorizedSpringSpec()
+ DefaultAnimation.Snap -> VectorizedSnapSpec()
+ }
+
internal fun defines(from: S?, to: S?) =
fromToPairs.any { it.first == from && it.second == to }
/**
- * Associates a property with a [AnimationBuilder]
+ * Associates a property with an [AnimationSpec]
*
- * @param builder: [AnimationBuilder] for animating [this] property value changes
+ * @param animationSpec: [AnimationSpec] for animating [this] property value changes
*/
- infix fun <T, V : AnimationVector> PropKey<T, V>.using(builder: AnimationBuilder<T>) {
- propAnimation[this] = builder.build(typeConverter)
- }
-
- /**
- * Creates a [FloatTweenSpec] animation, initialized with [init]
- *
- * @param init Initialization function for the [FloatTweenSpec] animation
- */
- fun <T> tween(init: TweenBuilder<T>.() -> Unit): DurationBasedAnimationBuilder<T> =
- TweenBuilder<T>().apply(init)
-
- /**
- * Creates a [FloatSpringSpec] animation, initialized with [init]
- *
- * @param init Initialization function for the [FloatSpringSpec] animation
- */
- fun <T> physics(init: PhysicsBuilder<T>.() -> Unit): AnimationBuilder<T> =
- PhysicsBuilder<T>().apply(init)
-
- /**
- * Creates a [KeyframesSpec] animation, initialized with [init]
- *
- * @param init Initialization function for the [KeyframesSpec] animation
- */
- fun <T> keyframes(init: KeyframesBuilder<T>.() -> Unit): KeyframesBuilder<T> =
- KeyframesBuilder<T>().apply(init)
-
- /**
- * Creates a [RepeatableSpec] animation, initialized with [init]
- *
- * @param init Initialization function for the [RepeatableSpec] animation
- */
- fun <T> repeatable(init: RepeatableBuilder<T>.() -> Unit): AnimationBuilder<T> =
- RepeatableBuilder<T>().apply(init)
-
- /**
- * Creates a Snap animation for immediately switching the animating value to the end value.
- */
- fun <T> snap(): AnimationBuilder<T> = SnapBuilder()
-}
-
-internal interface DefaultTransitionAnimation {
- fun <T, V : AnimationVector> createDefault(
- typeConverter: TwoWayConverter<T, V>
- ): AnimationSpec<V>
-}
-
-internal class SnapTransition : DefaultTransitionAnimation {
- override fun <T, V : AnimationVector> createDefault(
- typeConverter: TwoWayConverter<T, V>
- ): AnimationSpec<V> {
- return SnapBuilder<T>().build(typeConverter)
+ infix fun <T, V : AnimationVector> PropKey<T, V>.using(animationSpec: AnimationSpec<T>) {
+ propAnimation[this] =
+ animationSpec.vectorize(this.typeConverter) as VectorizedAnimationSpec<*>
}
}
-internal class SpringTransition : DefaultTransitionAnimation {
- override fun <T, V : AnimationVector> createDefault(
- typeConverter: TwoWayConverter<T, V>
- ): AnimationSpec<V> {
- return PhysicsBuilder<T>().build(typeConverter)
- }
+/**
+ * Creates a [TweenSpec] configured with the given duration, delay and easing curve.
+ *
+ * @param durationMillis duration of the animation spec
+ * @param delayMillis the amount of time in milliseconds that animation waits before starting
+ * @param easing the easing curve that will be used to interpolate between start and end
+ */
+fun <T> tween(
+ durationMillis: Int = DefaultDurationMillis,
+ delayMillis: Int = 0,
+ easing: Easing = FastOutSlowInEasing
+): TweenSpec<T> = TweenSpec(durationMillis, delayMillis, easing)
+
+/**
+ * Creates a [SpringSpec] that uses the given spring constants (i.e. [dampingRatio] and
+ * [stiffness]. The optional [visibilityThreshold] defines when the animation
+ * should be considered to be visually close enough to round off to its target.
+ *
+ * @param dampingRatio damping ratio of the spring. [Spring.DampingRatioNoBouncy] by default.
+ * @param stiffness stiffness of the spring. [Spring.StiffnessMedium] by default.
+ * @param visibilityThreshold optionally specifies the visibility threshold.
+ */
+fun <T> spring(
+ dampingRatio: Float = Spring.DampingRatioNoBouncy,
+ stiffness: Float = Spring.StiffnessMedium,
+ visibilityThreshold: T? = null
+): SpringSpec<T> =
+ SpringSpec(dampingRatio, stiffness, visibilityThreshold)
+
+/**
+ * Creates a [KeyframesSpec] animation, initialized with [init]. For example:
+ *
+ * @sample androidx.animation.samples.KeyframesBuilderForPosition
+ *
+ * @param init Initialization function for the [KeyframesSpec] animation
+ * @See KeyframesSpec.KeyframesSpecConfig
+ */
+fun <T> keyframes(
+ init: KeyframesSpec.KeyframesSpecConfig<T>.() -> Unit
+): KeyframesSpec<T> {
+ return KeyframesSpec(KeyframesSpec.KeyframesSpecConfig<T>().apply(init))
}
/**
+ * Creates a [RepeatableSpec] that plays a [DurationBasedAnimationSpec] (e.g.
+ * [TweenSpec], [KeyframesSpec]) the amount of iterations specified by [iterations].
+ *
+ * The iteration count describes the amount of times the animation will run.
+ * 1 means no repeat. Use [Infinite] to create an infinity repeating animation.
+ *
+ * @param iterations the total count of iterations, should be greater than 1 to repeat.
+ * @param animation animation that will be repeated
+ */
+fun <T> repeatable(
+ iterations: Int,
+ animation: DurationBasedAnimationSpec<T>
+): AnimationSpec<T> =
+ RepeatableSpec(iterations, animation)
+
+/**
+ * Creates a Snap animation for immediately switching the animating value to the end value.
+ *
+ * @param delayMillis the number of milliseconds to wait before the animation runs. 0 by default.
+ */
+fun <T> snap(delayMillis: Int = 0): AnimationSpec<T> = SnapSpec(delayMillis)
+
+/**
* [TransitionDefinition] contains all the animation related configurations that will be used in
* a state-based transition. It holds a set of [TransitionState]s and an optional set of
* [TransitionSpec]s. It can be used in [android.ui.animation.Transition] to create a state-based
@@ -149,9 +173,8 @@
* [TransitionSpec] defines how to animate from one state to another with a specific animation for
* each property defined in the states. [TransitionSpec] can be created using [transition] method
* inside of a [TransitionDefinition]. Currently the animations supported in a [transition] are:
- * [TransitionSpec.tween], [TransitionSpec.keyframes], [TransitionSpec.physics],
- * [TransitionSpec.snap], [TransitionSpec.repeatable]. When no [TransitionSpec] is specified,
- * the default [TransitionSpec.physics] animation will be used for all properties involved.
+ * [tween], [keyframes], [spring], [snap], [repeatable]. When no [TransitionSpec] is specified,
+ * the default [spring] animation will be used for all properties involved.
* Similarly, when no animation is provided in a [TransitionSpec] for a particular property,
* the default physics animation will be used. For each [transition], both the from and the to state
* can be omitted. Omitting in this case is equivalent to a wildcard on the starting state or ending
@@ -271,7 +294,7 @@
fun snapTransition(vararg fromToPairs: Pair<T?, T?>, nextState: T? = null) =
transition(*fromToPairs) {
this.nextState = nextState
- defaultAnimation = SnapTransition()
+ defaultAnimation = TransitionSpec.DefaultAnimation.Snap
}
internal fun getSpec(fromState: T, toState: T): TransitionSpec<T> {
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/VectorizedAnimationSpec.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/VectorizedAnimationSpec.kt
new file mode 100644
index 0000000..dceab66
--- /dev/null
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/VectorizedAnimationSpec.kt
@@ -0,0 +1,536 @@
+/*
+ * Copyright 2019 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 androidx.animation
+
+import androidx.animation.AnimationConstants.DefaultDurationMillis
+import androidx.animation.AnimationConstants.Infinite
+import kotlin.math.min
+
+/**
+ * [VectorizedAnimationSpec]s are stateless vector based animation specifications. They do
+ * not assume any starting/ending conditions. Nor do they manage a lifecycle. All it stores is the
+ * configuration that is particular to the type of the animation. easing and duration for
+ * [VectorizedTweenSpec]s, or spring constants for [VectorizedSpringSpec]s. Its stateless nature
+ * allows the same [VectorizedAnimationSpec] to be reused by a few different running animations
+ * with different starting and ending values. More importantly, it allows the system to reuse the
+ * same animation spec when the animation target changes in-flight.
+ *
+ * Since [VectorizedAnimationSpec]s are stateless, it requires starting value/velocity and ending
+ * value to be passed in, along with playtime, to calculate the value or velocity at that time. Play
+ * time here is the progress of the animation in terms of milliseconds, where 0 means the start
+ * of the animation and [getDurationMillis] returns the play time for the end of the animation.
+ *
+ * __Note__: For use cases where the starting values/velocity and ending values aren't expected
+ * to change, it is recommended to use [Animation] that caches these static values and hence
+ * does not require them to be supplied in the value/velocity calculation.
+ *
+ * @see Animation
+ */
+interface VectorizedAnimationSpec<V : AnimationVector> {
+ /**
+ * Calculates the value of the animation at given the playtime, with the provided start/end
+ * values, and start velocity.
+ *
+ * @param playTime time since the start of the animation
+ * @param start start value of the animation
+ * @param end end value of the animation
+ * @param startVelocity start velocity of the animation
+ */
+ fun getValue(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V
+
+ /**
+ * Calculates the velocity of the animation at given the playtime, with the provided start/end
+ * values, and start velocity.
+ *
+ * @param playTime time since the start of the animation
+ * @param start start value of the animation
+ * @param end end value of the animation
+ * @param startVelocity start velocity of the animation
+ */
+ fun getVelocity(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V
+
+ /**
+ * Calculates the duration of an animation. For duration-based animations, this will return the
+ * pre-defined duration. For physics-based animations, the duration will be estimated based on
+ * the physics configuration (such as spring stiffness, damping ratio, visibility threshold)
+ * as well as the [start], [end] values, and [startVelocity].
+ *
+ * @param start start value of the animation
+ * @param end end value of the animation
+ * @param startVelocity start velocity of the animation
+ */
+ fun getDurationMillis(
+ start: V,
+ end: V,
+ startVelocity: V
+ ): Long
+
+ /**
+ * Calculates the end velocity of the animation with the provided start/end values, and start
+ * velocity. For duration-based animations, end velocity will be the velocity of the
+ * animation at the duration time. This is also the default assumption. However, for
+ * physics-based animations, end velocity is an [AnimationVector] of 0s.
+ *
+ * @param start start value of the animation
+ * @param end end value of the animation
+ * @param startVelocity start velocity of the animation
+ */
+ fun getEndVelocity(
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V = getVelocity(getDurationMillis(start, end, startVelocity), start, end, startVelocity)
+}
+
+/**
+ * Base class for [VectorizedAnimationSpec]s that are based on a fixed [durationMillis].
+ */
+interface VectorizedDurationBasedAnimationSpec<V : AnimationVector> : VectorizedAnimationSpec<V> {
+ /**
+ * duration is the amount of time while animation is not yet finished.
+ */
+ val durationMillis: Int
+ /**
+ * delay defines the amount of time that animation can be delayed.
+ */
+ val delayMillis: Int
+
+ override fun getDurationMillis(start: V, end: V, startVelocity: V): Long =
+ (delayMillis + durationMillis).toLong()
+}
+
+/**
+ * Clamps the input [playTime] to the duration range of the given
+ * [VectorizedDurationBasedAnimationSpec].
+ */
+private fun VectorizedDurationBasedAnimationSpec<*>.clampPlayTime(playTime: Long): Long {
+ return (playTime - delayMillis).coerceIn(0, durationMillis.toLong())
+}
+
+/**
+ * [VectorizedKeyframesSpec] class manages the animation based on the values defined at different
+ * timestamps in the duration of the animation (i.e. different keyframes). Each keyframe can be
+ * provided via [keyframes] parameter. [VectorizedKeyframesSpec] allows very specific animation
+ * definitions with a precision to millisecond.
+ *
+ * Here's an example of creating a [VectorizedKeyframesSpec] animation: ([keyframes] and
+ * [KeyframesSpec.KeyframesSpecConfig] could make defining key frames much more readable.)
+ *
+ * val delay = 120
+ * val startValue = AnimationVector3D(100f, 200f, 300f)
+ * val endValue = AnimationVector3D(200f, 100f, 0f)
+ * val keyframes = VectorizedKeyframesSpec<AnimationVector3D>(
+ * keyframes = mutableMapOf (
+ * 0 to (startValue to LinearEasing),
+ * 100 to (startValue to FastOutLinearInEasing)
+ * ),
+ * durationMillis = 200,
+ * delayMillis = delay
+ * )
+ *
+ * @param keyframes a map from time to a value/easing function pair. The value in each entry
+ * defines the animation value at that time, and the easing curve is used in the
+ * interval starting from that time.
+ * @param durationMillis total duration of the animation
+ * @param delayMillis the amount of the time the animation should wait before it starts. Defaults to
+ * 0.
+ *
+ * @see [KeyframesSpec]
+ */
+class VectorizedKeyframesSpec<V : AnimationVector>(
+ private val keyframes: Map<Int, Pair<V, Easing>>,
+ override val durationMillis: Int,
+ override val delayMillis: Int = 0
+) : VectorizedDurationBasedAnimationSpec<V> {
+
+ private lateinit var valueVector: V
+ private lateinit var velocityVector: V
+
+ override fun getValue(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V {
+ val clampedPlayTime = clampPlayTime(playTime).toInt()
+ // If there is a key frame defined with the given time stamp, return that value
+ if (keyframes.containsKey(clampedPlayTime)) {
+ return keyframes.getValue(clampedPlayTime).first
+ }
+
+ if (clampedPlayTime >= durationMillis) {
+ return end
+ } else if (clampedPlayTime <= 0) return start
+
+ var startTime = 0
+ var startVal = start
+ var endVal = end
+ var endTime: Int = durationMillis
+ var easing: Easing = LinearEasing
+ for ((timestamp, value) in keyframes) {
+ if (clampedPlayTime > timestamp && timestamp >= startTime) {
+ startTime = timestamp
+ startVal = value.first
+ easing = value.second
+ } else if (clampedPlayTime < timestamp && timestamp <= endTime) {
+ endTime = timestamp
+ endVal = value.first
+ }
+ }
+
+ // Now interpolate
+ val fraction = easing((clampedPlayTime - startTime) / (endTime - startTime).toFloat())
+ init(start)
+ for (i in 0 until startVal.size) {
+ valueVector[i] = lerp(startVal[i], endVal[i], fraction)
+ }
+ return valueVector
+ }
+
+ private fun init(value: V) {
+ if (!::valueVector.isInitialized) {
+ valueVector = value.newInstance()
+ velocityVector = value.newInstance()
+ }
+ }
+
+ override fun getVelocity(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V {
+ val clampedPlayTime = clampPlayTime(playTime)
+ if (clampedPlayTime <= 0L) {
+ return startVelocity
+ }
+ val startNum = getValue(clampedPlayTime - 1, start, end, startVelocity)
+ val endNum = getValue(clampedPlayTime, start, end, startVelocity)
+
+ init(start)
+ for (i in 0 until startNum.size) {
+ velocityVector[i] = (startNum[i] - endNum[i]) * 1000f
+ }
+ return velocityVector
+ }
+}
+
+/**
+ * [VectorizedSnapSpec] immediately snaps the animating value to the end value.
+ *
+ * @param delayMillis the amount of time (in milliseconds) that the animation should wait before it
+ * starts. Defaults to 0.
+ */
+class VectorizedSnapSpec<V : AnimationVector>(
+ override val delayMillis: Int = 0
+) : VectorizedDurationBasedAnimationSpec<V> {
+
+ override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
+ if (playTime < delayMillis) {
+ return start
+ } else {
+ return end
+ }
+ }
+
+ override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
+ return startVelocity
+ }
+
+ override val durationMillis: Int
+ get() = 0
+}
+
+/**
+ * This animation takes another [VectorizedDurationBasedAnimationSpec] and plays it
+ * [iterations] times.
+ *
+ * @param iterations the count of iterations. Should be at least 1. [Infinite] can
+ * be used to have an infinity repeating animation.
+ * @param animation the [VectorizedAnimationSpec] describing each repetition iteration.
+ */
+class VectorizedRepeatableSpec<V : AnimationVector>(
+ private val iterations: Int,
+ private val animation: VectorizedDurationBasedAnimationSpec<V>
+) : VectorizedAnimationSpec<V> {
+
+ init {
+ if (iterations < 1) {
+ throw IllegalArgumentException("Iterations count can't be less than 1")
+ }
+ }
+
+ private val duration: Int = animation.delayMillis + animation.durationMillis
+
+ private fun repetitionPlayTime(playTime: Long): Long {
+ val repeatsCount = min(playTime / duration, iterations - 1L)
+ return playTime - repeatsCount * duration
+ }
+
+ private fun repetitionStartVelocity(playTime: Long, start: V, startVelocity: V, end: V): V =
+ if (playTime > duration) {
+ // Start velocity of the 2nd and subsequent iteration will be the velocity at the end
+ // of the first iteration, instead of the initial velocity.
+ getVelocity(duration.toLong(), start, startVelocity, end)
+ } else
+ startVelocity
+
+ override fun getValue(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V {
+ return animation.getValue(
+ repetitionPlayTime(playTime),
+ start,
+ end,
+ repetitionStartVelocity(playTime, start, startVelocity, end)
+ )
+ }
+
+ override fun getVelocity(
+ playTime: Long,
+ start: V,
+ end: V,
+ startVelocity: V
+ ): V {
+ return animation.getVelocity(
+ repetitionPlayTime(playTime),
+ start,
+ end,
+ repetitionStartVelocity(playTime, start, startVelocity, end)
+ )
+ }
+
+ override fun getDurationMillis(start: V, end: V, startVelocity: V): Long {
+ return iterations * duration.toLong()
+ }
+}
+
+/**
+ * Physics class contains a number of recommended configurations for physics animations.
+ */
+object Spring {
+ /**
+ * Stiffness constant for extremely stiff spring
+ */
+ const val StiffnessHigh = 10_000f
+ /**
+ * Stiffness constant for medium stiff spring. This is the default stiffness for spring
+ * force.
+ */
+ const val StiffnessMedium = 1500f
+ /**
+ * Stiffness constant for a spring with low stiffness.
+ */
+ const val StiffnessLow = 200f
+ /**
+ * Stiffness constant for a spring with very low stiffness.
+ */
+ const val StiffnessVeryLow = 50f
+
+ /**
+ * Damping ratio for a very bouncy spring. Note for under-damped springs
+ * (i.e. damping ratio < 1), the lower the damping ratio, the more bouncy the spring.
+ */
+ const val DampingRatioHighBouncy = 0.2f
+ /**
+ * Damping ratio for a medium bouncy spring. This is also the default damping ratio for
+ * spring force. Note for under-damped springs (i.e. damping ratio < 1), the lower the
+ * damping ratio, the more bouncy the spring.
+ */
+ const val DampingRatioMediumBouncy = 0.5f
+ /**
+ * Damping ratio for a spring with low bounciness. Note for under-damped springs
+ * (i.e. damping ratio < 1), the lower the damping ratio, the higher the bounciness.
+ */
+ const val DampingRatioLowBouncy = 0.75f
+ /**
+ * Damping ratio for a spring with no bounciness. This damping ratio will create a
+ * critically damped spring that returns to equilibrium within the shortest amount of time
+ * without oscillating.
+ */
+ const val DampingRatioNoBouncy = 1f
+ /**
+ * Default cutoff for rounding off physics based animations
+ */
+ const val DefaultDisplacementThreshold = 0.01f
+}
+
+/**
+ * Internal data structure for storing different FloatAnimations for different dimensions.
+ */
+internal interface Animations {
+ operator fun get(index: Int): FloatAnimationSpec
+}
+
+/**
+ * [VectorizedSpringSpec] uses spring animations to animate (each dimension of) [AnimationVector]s.
+ */
+class VectorizedSpringSpec<V : AnimationVector> private constructor(
+ val dampingRatio: Float,
+ val stiffness: Float,
+ anims: Animations
+) : VectorizedAnimationSpec<V> by VectorizedFloatAnimationSpec<V>(anims) {
+
+ /**
+ * Creates a [VectorizedSpringSpec] that uses the same spring constants (i.e. [dampingRatio] and
+ * [stiffness] on all dimensions. The optional [visibilityThreshold] defines when the animation
+ * should be considered to be visually close enough to target to stop. By default,
+ * [Spring.DefaultDisplacementThreshold] is used on all dimensions of the
+ * [AnimationVector].
+ *
+ * @param dampingRatio damping ratio of the spring. [Spring.DampingRatioNoBouncy] by default.
+ * @param stiffness stiffness of the spring. [Spring.StiffnessMedium] by default.
+ * @param visibilityThreshold specifies the visibility threshold for each dimension.
+ */
+ constructor(
+ dampingRatio: Float = Spring.DampingRatioNoBouncy,
+ stiffness: Float = Spring.StiffnessMedium,
+ visibilityThreshold: V? = null
+ ) : this(
+ dampingRatio, stiffness,
+ createSpringAnimations(visibilityThreshold, dampingRatio, stiffness)
+ )
+}
+
+private fun <V : AnimationVector> createSpringAnimations(
+ visibilityThreshold: V?,
+ dampingRatio: Float,
+ stiffness: Float
+): Animations {
+ if (visibilityThreshold != null) {
+ return object : Animations {
+ private val anims = (0 until visibilityThreshold.size).map { index ->
+ FloatSpringSpec(dampingRatio, stiffness, visibilityThreshold[index])
+ }
+
+ override fun get(index: Int): FloatSpringSpec = anims[index]
+ }
+ } else {
+ return object : Animations {
+ private val anim = FloatSpringSpec(dampingRatio, stiffness)
+ override fun get(index: Int): FloatSpringSpec = anim
+ }
+ }
+}
+
+/**
+ * [VectorizedTweenSpec] animates a [AnimationVector] value by interpolating the start and end
+ * value, in the given [durationMillis] using the given [easing] curve.
+ *
+ * @param durationMillis duration of the [VectorizedTweenSpec] animation. Defaults to
+ * [DefaultDurationMillis].
+ * @param delayMillis the amount of time the animation should wait before it starts running,
+ * 0 by default.
+ * @param easing the easing curve used by the animation. [FastOutSlowInEasing] by default.
+ */
+// TODO: Support different tween on different dimens
+class VectorizedTweenSpec<V : AnimationVector>(
+ override val durationMillis: Int = DefaultDurationMillis,
+ override val delayMillis: Int = 0,
+ val easing: Easing = FastOutSlowInEasing
+) : VectorizedDurationBasedAnimationSpec<V> {
+
+ private val anim = VectorizedFloatAnimationSpec<V>(
+ FloatTweenSpec(durationMillis, delayMillis, easing))
+ override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
+ return anim.getValue(playTime, start, end, startVelocity)
+ }
+
+ override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
+ return anim.getVelocity(playTime, start, end, startVelocity)
+ }
+}
+
+/**
+ * A convenient implementation of [VectorizedFloatAnimationSpec] that turns a [FloatAnimationSpec]
+ * into a multi-dimensional [VectorizedFloatAnimationSpec], by using the same [FloatAnimationSpec]
+ * on each dimension of the [AnimationVector] that is being animated.
+ */
+class VectorizedFloatAnimationSpec<V : AnimationVector> internal constructor(
+ private val anims: Animations
+) : VectorizedAnimationSpec<V> {
+ private lateinit var valueVector: V
+ private lateinit var velocityVector: V
+ private lateinit var endVelocityVector: V
+
+ /**
+ * Creates a [VectorizedAnimationSpec] from a [FloatAnimationSpec]. The given
+ * [FloatAnimationSpec] will be used to animate every dimension of the [AnimationVector].
+ *
+ * @param anim the animation spec for animating each dimension of the [AnimationVector]
+ */
+ constructor(anim: FloatAnimationSpec) : this(object : Animations {
+ override fun get(index: Int): FloatAnimationSpec {
+ return anim
+ }
+ })
+
+ override fun getValue(playTime: Long, start: V, end: V, startVelocity: V): V {
+ if (!::valueVector.isInitialized) {
+ valueVector = start.newInstance()
+ }
+ for (i in 0 until valueVector.size) {
+ valueVector[i] = anims[i].getValue(playTime, start[i], end[i], startVelocity[i])
+ }
+ return valueVector
+ }
+
+ override fun getVelocity(playTime: Long, start: V, end: V, startVelocity: V): V {
+ if (!::velocityVector.isInitialized) {
+ velocityVector = startVelocity.newInstance()
+ }
+ for (i in 0 until velocityVector.size) {
+ velocityVector[i] = anims[i].getVelocity(playTime, start[i], end[i], startVelocity[i])
+ }
+ return velocityVector
+ }
+
+ override fun getEndVelocity(start: V, end: V, startVelocity: V): V {
+ if (!::endVelocityVector.isInitialized) {
+ endVelocityVector = startVelocity.newInstance()
+ }
+ for (i in 0 until endVelocityVector.size) {
+ endVelocityVector[i] =
+ anims[i].getEndVelocity(start[i], end[i], startVelocity[i])
+ }
+ return endVelocityVector
+ }
+
+ override fun getDurationMillis(start: V, end: V, startVelocity: V): Long {
+ var maxDuration = 0L
+ (0 until start.size).forEach {
+ maxDuration = maxOf(
+ maxDuration,
+ anims[it].getDurationMillis(start[it], end[it], startVelocity[it])
+ )
+ }
+ return maxDuration
+ }
+}
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTest.kt
index db8429e..2cc0b08 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTest.kt
@@ -34,55 +34,58 @@
@Test
fun testSnap() {
- val snap1D = SnapSpec<AnimationVector1D>(200L)
- val snap2D = SnapSpec<AnimationVector2D>(2L)
- val snap3D = SnapSpec<AnimationVector3D>(0L)
- val snap4D = SnapSpec<AnimationVector4D>(5L)
+ val snap1D = VectorizedSnapSpec<AnimationVector1D>(200)
+ val snap2D = VectorizedSnapSpec<AnimationVector2D>(2)
+ val snap3D = VectorizedSnapSpec<AnimationVector3D>(0)
+ val snap4D = VectorizedSnapSpec<AnimationVector4D>(5)
val start1D = AnimationVector(0f)
val end1D = AnimationVector(1f)
assertEquals(start1D, snap1D.getValue(0L, start1D, end1D, start1D))
- assertEquals(start1D, snap1D.getValue(snap1D.delay - 1L, start1D, end1D, start1D))
- assertEquals(end1D, snap1D.getValue(snap1D.delay, start1D, end1D, start1D))
- assertEquals(end1D, snap1D.getValue(snap1D.delay + 100L, start1D, end1D, start1D))
+ assertEquals(start1D, snap1D.getValue(snap1D.delayMillis - 1L, start1D, end1D, start1D))
+ assertEquals(end1D, snap1D.getValue(snap1D.delayMillis.toLong(), start1D, end1D, start1D))
+ assertEquals(end1D, snap1D.getValue(snap1D.delayMillis + 100L, start1D, end1D, start1D))
val start2D = AnimationVector(0f, 50f)
val end2D = AnimationVector(1f, -50f)
assertEquals(start2D, snap2D.getValue(0L, start2D, end2D, start2D))
- assertEquals(start2D, snap2D.getValue(snap2D.delay - 1L, start2D, end2D, start2D))
- assertEquals(end2D, snap2D.getValue(snap2D.delay, start2D, end2D, start2D))
- assertEquals(end2D, snap2D.getValue(snap2D.delay + 100L, start2D, end2D, start2D))
+ assertEquals(start2D, snap2D.getValue(snap2D.delayMillis - 1L, start2D, end2D, start2D))
+ assertEquals(end2D, snap2D.getValue(snap2D.delayMillis.toLong(), start2D, end2D, start2D))
+ assertEquals(end2D, snap2D.getValue(snap2D.delayMillis + 100L, start2D, end2D, start2D))
val start3D = AnimationVector(0f, 20f, -100f)
val end3D = AnimationVector(-40f, 0f, 200f)
- assertEquals(start3D, snap3D.getValue(snap3D.delay - 1L, start3D, end3D, start3D))
- assertEquals(end3D, snap3D.getValue(snap3D.delay, start3D, end3D, start3D))
- assertEquals(end3D, snap3D.getValue(snap3D.delay + 100L, start3D, end3D, start3D))
+ assertEquals(start3D, snap3D.getValue(snap3D.delayMillis - 1L, start3D, end3D, start3D))
+ assertEquals(end3D, snap3D.getValue(snap3D.delayMillis.toLong(), start3D, end3D, start3D))
+ assertEquals(end3D, snap3D.getValue(snap3D.delayMillis + 100L, start3D, end3D, start3D))
val start4D = AnimationVector(48f, 26f, 88f, 177f)
val end4D = AnimationVector(64f, 286f, -999f, 40f)
assertEquals(start4D, snap4D.getValue(0L, start4D, end4D, start4D))
- assertEquals(start4D, snap4D.getValue(snap4D.delay - 1L, start4D, end4D, start4D))
- assertEquals(end4D, snap4D.getValue(snap4D.delay, start4D, end4D, start4D))
- assertEquals(end4D, snap4D.getValue(snap4D.delay + 100L, start4D, end4D, start4D))
+ assertEquals(start4D, snap4D.getValue(snap4D.delayMillis - 1L, start4D, end4D, start4D))
+ assertEquals(end4D, snap4D.getValue(snap4D.delayMillis.toLong(), start4D, end4D, start4D))
+ assertEquals(end4D, snap4D.getValue(snap4D.delayMillis + 100L, start4D, end4D, start4D))
}
@Test
fun testKeyframes() {
- val delay = 120L
+ val delay = 120
val startValue = AnimationVector3D(100f, 200f, 300f)
val endValue = AnimationVector3D(200f, 100f, 0f)
- val keyframes = KeyframesSpec<AnimationVector3D>(
+ val keyframes = VectorizedKeyframesSpec<AnimationVector3D>(
mutableMapOf(
- 0L to (startValue to LinearEasing),
- 100L to (startValue to FastOutLinearInEasing)
+ 0 to (startValue to LinearEasing),
+ 100 to (startValue to FastOutLinearInEasing)
),
- 200L,
+ 200,
delay
)
assertEquals(startValue, keyframes.getValue(0L, startValue, endValue, startValue))
- assertEquals(startValue, keyframes.getValue(delay, startValue, endValue, startValue))
+ assertEquals(
+ startValue,
+ keyframes.getValue(delay.toLong(), startValue, endValue, startValue)
+ )
for (i in 0..200 step 50) {
val fraction: Float
if (i <= 100) {
@@ -95,7 +98,12 @@
lerp(startValue.v2, endValue.v2, fraction),
lerp(startValue.v3, endValue.v3, fraction)
)
- assertEquals(animValue, keyframes.getValue(delay + i, startValue, endValue, startValue))
+ assertEquals(
+ animValue, keyframes.getValue(
+ delay + i.toLong(),
+ startValue, endValue, startValue
+ )
+ )
}
// Test playtime > duration + delay
@@ -104,74 +112,100 @@
@Test
fun testTween() {
- val tween1D = TweenSpec<AnimationVector1D>()
- val tween2D = TweenSpec<AnimationVector2D>(200L, easing = LinearEasing)
- val tween3D = TweenSpec<AnimationVector3D>(delay = 10L, easing = FastOutLinearInEasing)
- val tween4D = TweenSpec<AnimationVector4D>()
+ val tween1D = VectorizedTweenSpec<AnimationVector1D>()
+ val tween2D = VectorizedTweenSpec<AnimationVector2D>(200, easing = LinearEasing)
+ val tween3D =
+ VectorizedTweenSpec<AnimationVector3D>(delayMillis = 10, easing = FastOutLinearInEasing)
+ val tween4D = VectorizedTweenSpec<AnimationVector4D>()
// 1D vector
val start1D = AnimationVector(0f)
val end1D = AnimationVector(1f)
assertEquals(start1D, tween1D.getValue(0L, start1D, end1D, start1D))
- assertEquals(start1D, tween1D.getValue(tween1D.delay - 1L, start1D, end1D, start1D))
- assertEquals(start1D, tween1D.getValue(tween1D.delay, start1D, end1D, start1D))
+ assertEquals(start1D, tween1D.getValue(tween1D.delayMillis - 1L, start1D, end1D, start1D))
+ assertEquals(
+ start1D,
+ tween1D.getValue(tween1D.delayMillis.toLong(), start1D, end1D, start1D)
+ )
val animValue1D = AnimationVector(
lerp(
start1D.value, end1D.value,
- FastOutSlowInEasing.invoke(100f / tween1D.duration)
+ FastOutSlowInEasing.invoke(100f / tween1D.durationMillis)
)
)
- assertEquals(animValue1D, tween1D.getValue(tween1D.delay + 100L, start1D, end1D, start1D))
+ assertEquals(
+ animValue1D,
+ tween1D.getValue(tween1D.delayMillis + 100L, start1D, end1D, start1D)
+ )
// 2D vector
val start2D = AnimationVector(0f, 50f)
val end2D = AnimationVector(1f, -50f)
assertEquals(start2D, tween2D.getValue(0L, start2D, end2D, start2D))
- assertEquals(start2D, tween2D.getValue(tween2D.delay - 1L, start2D, end2D, start2D))
- assertEquals(start2D, tween2D.getValue(tween2D.delay, start2D, end2D, start2D))
- val animValue2D = AnimationVector(
- lerp(start2D.v1, end2D.v1, 100f / tween2D.duration),
- lerp(start2D.v2, end2D.v2, 100f / tween2D.duration)
+ assertEquals(start2D, tween2D.getValue(tween2D.delayMillis - 1L, start2D, end2D, start2D))
+ assertEquals(
+ start2D,
+ tween2D.getValue(tween2D.delayMillis.toLong(), start2D, end2D, start2D)
)
- assertEquals(animValue2D, tween2D.getValue(tween2D.delay + 100L, start2D, end2D, start2D))
+ val animValue2D = AnimationVector(
+ lerp(start2D.v1, end2D.v1, 100f / tween2D.durationMillis),
+ lerp(start2D.v2, end2D.v2, 100f / tween2D.durationMillis)
+ )
+ assertEquals(
+ animValue2D,
+ tween2D.getValue(tween2D.delayMillis + 100L, start2D, end2D, start2D)
+ )
// 3D Vector
val start3D = AnimationVector(0f, 20f, -100f)
val end3D = AnimationVector(-40f, 0f, 200f)
assertEquals(start3D, tween3D.getValue(0L, start3D, end3D, start3D))
- assertEquals(start3D, tween3D.getValue(tween3D.delay - 1L, start3D, end3D, start3D))
- assertEquals(start3D, tween3D.getValue(tween3D.delay, start3D, end3D, start3D))
- val animValue3D = AnimationVector(
- lerp(start3D.v1, end3D.v1, FastOutLinearInEasing.invoke(100f / tween3D.duration)),
- lerp(start3D.v2, end3D.v2, FastOutLinearInEasing.invoke(100f / tween3D.duration)),
- lerp(start3D.v3, end3D.v3, FastOutLinearInEasing.invoke(100f / tween3D.duration))
+ assertEquals(start3D, tween3D.getValue(tween3D.delayMillis - 1L, start3D, end3D, start3D))
+ assertEquals(
+ start3D,
+ tween3D.getValue(tween3D.delayMillis.toLong(), start3D, end3D, start3D)
)
- assertEquals(animValue3D, tween3D.getValue(tween3D.delay + 100L, start3D, end3D, start3D))
+ val animValue3D = AnimationVector(
+ lerp(start3D.v1, end3D.v1, FastOutLinearInEasing.invoke(100f / tween3D.durationMillis)),
+ lerp(start3D.v2, end3D.v2, FastOutLinearInEasing.invoke(100f / tween3D.durationMillis)),
+ lerp(start3D.v3, end3D.v3, FastOutLinearInEasing.invoke(100f / tween3D.durationMillis))
+ )
+ assertEquals(
+ animValue3D,
+ tween3D.getValue(tween3D.delayMillis + 100L, start3D, end3D, start3D)
+ )
// 4D Vector
val start4D = AnimationVector(48f, 26f, 88f, 177f)
val end4D = AnimationVector(64f, 286f, -999f, 40f)
assertEquals(start4D, tween4D.getValue(0L, start4D, end4D, start4D))
- assertEquals(start4D, tween4D.getValue(tween4D.delay - 1L, start4D, end4D, start4D))
- assertEquals(start4D, tween4D.getValue(tween4D.delay, start4D, end4D, start4D))
- val animValue4D = AnimationVector(
- lerp(start4D.v1, end4D.v1, FastOutSlowInEasing.invoke(100f / tween4D.duration)),
- lerp(start4D.v2, end4D.v2, FastOutSlowInEasing.invoke(100f / tween4D.duration)),
- lerp(start4D.v3, end4D.v3, FastOutSlowInEasing.invoke(100f / tween4D.duration)),
- lerp(start4D.v4, end4D.v4, FastOutSlowInEasing.invoke(100f / tween4D.duration))
+ assertEquals(start4D, tween4D.getValue(tween4D.delayMillis - 1L, start4D, end4D, start4D))
+ assertEquals(
+ start4D,
+ tween4D.getValue(tween4D.delayMillis.toLong(), start4D, end4D, start4D)
)
- assertEquals(animValue4D, tween4D.getValue(tween4D.delay + 100L, start4D, end4D, start4D))
+ val animValue4D = AnimationVector(
+ lerp(start4D.v1, end4D.v1, FastOutSlowInEasing.invoke(100f / tween4D.durationMillis)),
+ lerp(start4D.v2, end4D.v2, FastOutSlowInEasing.invoke(100f / tween4D.durationMillis)),
+ lerp(start4D.v3, end4D.v3, FastOutSlowInEasing.invoke(100f / tween4D.durationMillis)),
+ lerp(start4D.v4, end4D.v4, FastOutSlowInEasing.invoke(100f / tween4D.durationMillis))
+ )
+ assertEquals(
+ animValue4D,
+ tween4D.getValue(tween4D.delayMillis + 100L, start4D, end4D, start4D)
+ )
}
@Test
fun testSpringAnimation() {
- val anim3D = SpringSpec<AnimationVector3D>(
+ val anim3D = VectorizedSpringSpec<AnimationVector3D>(
Spring.DampingRatioHighBouncy,
Spring.StiffnessMedium, null
)
val floatAnim = FloatSpringSpec(
Spring.DampingRatioHighBouncy,
- Spring.StiffnessMedium)
+ Spring.StiffnessMedium
+ )
val start = AnimationVector(75f, 1000f, -256f)
val end = AnimationVector(1296f, -357f, 500f)
@@ -205,30 +239,30 @@
val startVelocity = AnimationVector(0f, 74f, -20f, 0f)
verifyAnimation(
- SpringSpec(
+ VectorizedSpringSpec(
Spring.DampingRatioLowBouncy, Spring.StiffnessLow,
AnimationVector(5f, 4f, 0.1f, 20f)
), start, end, startVelocity
)
verifyAnimation(
- TweenSpec(1000L, easing = FastOutLinearInEasing),
+ VectorizedTweenSpec(1000, easing = FastOutLinearInEasing),
start, end, startVelocity
)
- verifyAnimation(SnapSpec(200), start, end, startVelocity)
+ verifyAnimation(VectorizedSnapSpec(200), start, end, startVelocity)
verifyAnimation(
- KeyframesSpec(
+ VectorizedKeyframesSpec(
mutableMapOf(
- 200L to (start to LinearEasing)
- ), 800L
+ 200 to (start to LinearEasing)
+ ), 800
), start, end, startVelocity
)
}
private fun verifyAnimation(
- anim: AnimationSpec<AnimationVector4D>,
+ anim: VectorizedAnimationSpec<AnimationVector4D>,
start: AnimationVector4D,
end: AnimationVector4D,
startVelocity: AnimationVector4D
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTestUtils.kt b/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTestUtils.kt
index 11a9d0d..0920277 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTestUtils.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/AnimationTestUtils.kt
@@ -16,18 +16,17 @@
package androidx.animation
-internal fun AnimationSpec<AnimationVector1D>.at(time: Int): Float =
+internal fun VectorizedAnimationSpec<AnimationVector1D>.at(time: Long): Float =
getValue(
- time.toLong(),
+ time,
AnimationVector1D(0f),
AnimationVector1D(1f),
AnimationVector1D(0f)
).value
-// Convenient method to build a Float animation.
-internal fun AnimationBuilder<Float>.build() = this.build(FloatToVectorConverter)
+internal fun VectorizedAnimationSpec<AnimationVector1D>.at(time: Int): Float = at(time.toLong())
-internal fun AnimationSpec<AnimationVector1D>.getValue(
+internal fun VectorizedAnimationSpec<AnimationVector1D>.getValue(
playTime: Long,
start: Number,
end: Number,
@@ -39,7 +38,7 @@
AnimationVector1D(startVelocity.toFloat())
).value
-internal fun AnimationSpec<AnimationVector1D>.getVelocity(
+internal fun VectorizedAnimationSpec<AnimationVector1D>.getVelocity(
playTime: Long,
start: Number,
end: Number,
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/KeyframeAnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/KeyframeAnimationTest.kt
index 112536a..dfb907d 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/KeyframeAnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/KeyframeAnimationTest.kt
@@ -46,43 +46,40 @@
val start = 0f
val end = start // the same
val fullTime = 400
- val animation = KeyframesBuilder<Float>().run {
- duration = fullTime
+ val animation = keyframes<Float> {
+ durationMillis = fullTime
start at 100
0.5f at 200
0.8f at 300
end at fullTime
- build()
- }
+ }.vectorize(FloatToVectorConverter)
assertThat(animation.at(0)).isEqualTo(start)
assertThat(animation.at(250)).isEqualTo(0.65f)
- assertThat(animation.at(fullTime)).isEqualTo(end)
+ assertThat(animation.at(fullTime.toLong())).isEqualTo(end)
}
@Test
fun possibleToOverrideStartAndEndValues() {
val fullTime = 100
- val animation = KeyframesBuilder<Float>().run {
- duration = fullTime
+ val animation = keyframes<Float> {
+ durationMillis = fullTime
1f at 0
0f at fullTime
- build()
- }
+ }.vectorize(FloatToVectorConverter)
assertThat(animation.at(0)).isEqualTo(1f)
- assertThat(animation.at(fullTime)).isEqualTo(0f)
+ assertThat(animation.at(fullTime.toLong())).isEqualTo(0f)
}
@Test
fun withEasingOnFullDuration() {
val easing = FastOutSlowInEasing
- val animation = KeyframesBuilder<Float>().run {
- duration = 100
+ val animation = keyframes<Float> {
+ durationMillis = 100
0f at 0 with easing
- 1f at duration
- build()
- }
+ 1f at durationMillis
+ }.vectorize(FloatToVectorConverter)
assertThat(animation.at(31)).isEqualTo(easing(0.31f))
}
@@ -90,24 +87,22 @@
@Test
fun easingOnTheSecondPart() {
val easing = FastOutSlowInEasing
- val animation = KeyframesBuilder<Float>().run {
- duration = 200
+ val animation = keyframes<Float> {
+ durationMillis = 200
1f at 100 with easing
- 2f at duration
- build()
- }
+ 2f at durationMillis
+ }.vectorize(FloatToVectorConverter)
assertThat(animation.at(140)).isEqualTo(1f + easing(0.4f))
}
@Test
fun firstPartIsLinearWithEasingOnTheSecondPart() {
- val animation = KeyframesBuilder<Float>().run {
- duration = 100
+ val animation = keyframes<Float> {
+ durationMillis = 100
0.5f at 50 with FastOutSlowInEasing
- 1f at duration
- build()
- }
+ 1f at durationMillis
+ }.vectorize(FloatToVectorConverter)
assertThat(animation.at(25)).isEqualTo(0.25f)
}
@@ -115,11 +110,11 @@
@Test
fun testMultiDimensKeyframesWithEasing() {
val easing = FastOutLinearInEasing
- val animation = KeyframesBuilder<AnimationVector2D>().run {
- duration = 400
+ val animation = keyframes<AnimationVector2D> {
+ durationMillis = 400
AnimationVector(200f, 300f) at 200 with easing
- build(TwoWayConverter<AnimationVector2D, AnimationVector2D>({ it }, { it }))
- }
+ }.vectorize(TwoWayConverter<AnimationVector2D, AnimationVector2D>({ it }, { it }))
+
val start = AnimationVector(0f, 0f)
val end = AnimationVector(200f, 400f)
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/PhysicsAnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/PhysicsAnimationTest.kt
index ae3d939..ad55d2c 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/PhysicsAnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/PhysicsAnimationTest.kt
@@ -27,46 +27,46 @@
@Test
fun velocityCalculation() {
- val builder = PhysicsBuilder<Float>()
- val animation = builder.build()
+ val animation = FloatSpringSpec()
val start = 200f
val end = 500f
val playTime = 150L
val velocity = animation.getVelocity(playTime, start, end, 0f)
- val expectedVelocity = builder.toSpring(end).updateValues(start, 0f, playTime).velocity
+ val expectedVelocity = animation.toSpring(end).updateValues(start, 0f, playTime).velocity
assertThat(velocity).isEqualTo(expectedVelocity)
}
@Test
fun velocityCalculationForInts() {
- val builder = PhysicsBuilder<Int>()
- val animation = builder.build(IntToVectorConverter)
val start = 200
val end = 500
val playTime = 150L
+ val animation = TargetBasedAnimation(VectorizedSpringSpec(), start, end, 0,
+ IntToVectorConverter)
- val velocity = animation.getVelocity(playTime, start, end, 0f)
+ val velocity = animation.getVelocity(playTime)
- val expectedVelocity = builder.toSpring(end)
- .updateValues(start.toFloat(), 0f, playTime).velocity
+ val expectedVelocity = FloatSpringSpec().toSpring(end)
+ .updateValues(start.toFloat(), 0f, playTime).velocity.toInt()
assertThat(velocity).isEqualTo(expectedVelocity)
}
@Test
fun animationWithoutRangePreservesVelocity() {
- val builder = PhysicsBuilder<Float>()
- val animation = builder.build()
// first animation that will be interrupted after 150 ms
val start1 = 200f
val end1 = 500f
val interruptionTime = 150L
- val interruptionValue = animation.getValue(interruptionTime, start1, end1, 0f)
- val interruptionVelocity = animation.getVelocity(interruptionTime, start1, end1, 0f)
+ val animation = TargetBasedAnimation(VectorizedSpringSpec(), start1, end1, 0f,
+ FloatToVectorConverter)
+
+ val interruptionValue = animation.getValue(interruptionTime)
+ val interruptionVelocity = animation.getVelocity(interruptionTime)
// second animation will go from interruptionValue to interruptionValue with
// applying the velocity from the first interrupted animation.
@@ -74,12 +74,14 @@
val end2 = interruptionValue
val startVelocity2 = interruptionVelocity
+ val animation2 = TargetBasedAnimation(VectorizedSpringSpec(), start2, end2, startVelocity2,
+ FloatToVectorConverter)
// let's verify values after 15 ms of the second animation
val playTime = 15L
- val resultValue = animation.getValue(playTime, start2, end2, startVelocity2)
- val resultVelocity = animation.getVelocity(playTime, start2, end2, startVelocity2)
+ val resultValue = animation2.getValue(playTime)
+ val resultVelocity = animation2.getVelocity(playTime)
- val motion = builder.toSpring(end2).updateValues(
+ val motion = FloatSpringSpec().toSpring(end2).updateValues(
start2,
interruptionVelocity,
playTime
@@ -99,15 +101,16 @@
val stiffness = 100f
val delta = 1.0
- val criticalBuilder = PhysicsBuilder<Float>(
+ val criticalSpec = FloatSpringSpec(
dampingRatio = 1f,
stiffness = stiffness,
- displacementThreshold = 1f
+ visibilityThreshold = 1f
)
- val criticalWrapper = criticalBuilder.build().toAnimation(
+ val criticalWrapper = TargetBasedAnimation(criticalSpec.vectorize(FloatToVectorConverter),
startValue = startValue,
endValue = endValue,
- startVelocity = startVelocity
+ startVelocity = startVelocity,
+ converter = FloatToVectorConverter
)
assertEquals(
@@ -130,15 +133,16 @@
val stiffness = 100f
val delta = 1.0
- val overBuilder = PhysicsBuilder<Float>(
+ val overSpec = FloatSpringSpec(
dampingRatio = 5f,
stiffness = stiffness,
- displacementThreshold = 1f
+ visibilityThreshold = 1f
)
- val overWrapper = overBuilder.build().toAnimation(
+ val overWrapper = TargetBasedAnimation(overSpec.vectorize(FloatToVectorConverter),
startValue = startValue,
endValue = endValue,
- startVelocity = startVelocity
+ startVelocity = startVelocity,
+ converter = FloatToVectorConverter
)
assertEquals(
@@ -161,15 +165,17 @@
val stiffness = 100f
val delta = 1.0
- val underBuilder = PhysicsBuilder<Float>(
+ val underSpec = FloatSpringSpec(
dampingRatio = 0.5f,
stiffness = stiffness,
- displacementThreshold = 1f
+ visibilityThreshold = 1f
)
- val underWrapper = underBuilder.build().toAnimation(
+ val underWrapper = TargetBasedAnimation(
+ underSpec.vectorize(FloatToVectorConverter),
startValue = startValue,
endValue = endValue,
- startVelocity = startVelocity
+ startVelocity = startVelocity,
+ converter = FloatToVectorConverter
)
assertEquals(
@@ -185,7 +191,8 @@
@Test
fun testEndSnapping() {
- PhysicsBuilder<Float>().build().toAnimation(0f, 0f, 100f).also { animation ->
+ TargetBasedAnimation(VectorizedSpringSpec(), 0f, 100f, 0f, FloatToVectorConverter).also {
+ animation ->
assertEquals(0f, animation.getVelocityVector(animation.durationMillis).value)
assertEquals(100f, animation.getValue(animation.durationMillis))
}
@@ -194,9 +201,7 @@
@Test
fun testSpringVectorAnimationDuration() {
data class ClassToAnimate(var one: Float, var two: Float, var three: Float)
- val springVectorAnimation = PhysicsBuilder(
- displacementThreshold = ClassToAnimate(1f, 2f, 3f)
- ).build(
+ val converter =
TwoWayConverter<ClassToAnimate, AnimationVector3D>(
convertToVector = { it ->
AnimationVector(it.one, it.two, it.three)
@@ -205,8 +210,10 @@
ClassToAnimate(it.v1, it.v2, it.v3)
}
)
+ val springVectorAnimation = VectorizedSpringSpec(
+ visibilityThreshold = converter.convertToVector(ClassToAnimate(1f, 2f, 3f))
)
- val floatAnimation = PhysicsBuilder<Float>(displacementThreshold = 1f).build()
+ val floatAnimation = FloatSpringSpec(visibilityThreshold = 1f)
val springVectorDuration = springVectorAnimation.getDurationMillis(
AnimationVector(100f, 100f, 100f),
@@ -214,10 +221,7 @@
AnimationVector(0f, 0f, 0f)
)
val floatAnimationDuration = floatAnimation.getDurationMillis(
- AnimationVector(100f),
- AnimationVector(0f),
- AnimationVector(0f)
- )
+ 100f, 0f, 0f)
// Vector duration should be the longest of all the sub animations
// In this case it should be the one with the lowest threshold.
@@ -227,21 +231,21 @@
@Test
fun testSpringVectorAnimationValues() {
data class ClassToAnimate(var one: Float, var two: Float, var three: Float)
- val springVectorAnimation = PhysicsBuilder(
- displacementThreshold = ClassToAnimate(1f, 2f, 3f)
- ).build(
- TwoWayConverter<ClassToAnimate, AnimationVector3D>(
- convertToVector = { it ->
- AnimationVector(it.one, it.two, it.three)
- },
- convertFromVector = { it ->
- ClassToAnimate(it.v1, it.v2, it.v3)
- }
- )
+ val converter =
+ TwoWayConverter<ClassToAnimate, AnimationVector3D>(
+ convertToVector = { it ->
+ AnimationVector(it.one, it.two, it.three)
+ },
+ convertFromVector = { it ->
+ ClassToAnimate(it.v1, it.v2, it.v3)
+ }
)
- val floatAnimation1 = PhysicsBuilder<Float>(displacementThreshold = 1f).build()
- val floatAnimation2 = PhysicsBuilder<Float>(displacementThreshold = 2f).build()
- val floatAnimation3 = PhysicsBuilder<Float>(displacementThreshold = 3f).build()
+ val springVectorAnimation = VectorizedSpringSpec(
+ visibilityThreshold = converter.convertToVector(ClassToAnimate(1f, 2f, 3f))
+ )
+ val floatAnimation1 = VectorizedSpringSpec(visibilityThreshold = AnimationVector(1f))
+ val floatAnimation2 = VectorizedSpringSpec(visibilityThreshold = AnimationVector(2f))
+ val floatAnimation3 = VectorizedSpringSpec(visibilityThreshold = AnimationVector(3f))
val duration = springVectorAnimation.getDurationMillis(
AnimationVector(100f, 100f, 100f),
@@ -280,7 +284,7 @@
}
}
- private fun AnimationSpec<AnimationVector1D>.toAnimation(
+ private fun VectorizedAnimationSpec<AnimationVector1D>.toAnimation(
startValue: Float,
startVelocity: Float,
endValue: Float
@@ -293,7 +297,7 @@
)
}
- private fun PhysicsBuilder<out Number>.toSpring(endValue: Number) =
+ private fun FloatSpringSpec.toSpring(endValue: Number) =
SpringSimulation(endValue.toFloat()).also {
it.dampingRatio = dampingRatio
it.stiffness = stiffness
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/RepeatableAnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/RepeatableAnimationTest.kt
index f23f630..b738014 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/RepeatableAnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/RepeatableAnimationTest.kt
@@ -25,22 +25,18 @@
@RunWith(JUnit4::class)
class RepeatableAnimationTest {
- private val Animation = TweenBuilder<Float>().apply {
- duration = Duration
- }
+ private val Animation = TweenSpec<AnimationVector1D>(durationMillis = Duration)
- private val DelayedAnimation = TweenBuilder<Float>().apply {
- delay = DelayDuration
- duration = Duration
- }
+ private val DelayedAnimation = VectorizedTweenSpec<AnimationVector1D>(
+ delayMillis = DelayDuration,
+ durationMillis = Duration)
@Test
fun twoRepeatsValuesCalculation() {
- val repeat = RepeatableBuilder<Float>().run {
- iterations = 2
- animation = Animation
- build()
- }
+ val repeat = VectorizedRepeatableSpec(
+ iterations = 2,
+ animation = VectorizedTweenSpec<AnimationVector1D>(durationMillis = Duration))
+
val animationWrapper = TargetBasedAnimation(
repeat,
0f,
@@ -61,10 +57,9 @@
@Test
fun testRepeatedAnimationDuration() {
val iters = 5
- val repeat = RepeatableBuilder<Float>().apply {
- iterations = iters
- animation = DelayedAnimation
- }.build()
+ val repeat = VectorizedRepeatableSpec<AnimationVector1D>(
+ iterations = iters,
+ animation = DelayedAnimation)
val duration = repeat.getDurationMillis(
AnimationVector1D(0f),
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/SnapAnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/SnapAnimationTest.kt
index 8e9da86..2209135 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/SnapAnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/SnapAnimationTest.kt
@@ -26,7 +26,7 @@
@Test
fun isFinishedAtTheBeginning() {
- val animation = SnapBuilder<Float>().build()
+ val animation = VectorizedSnapSpec<AnimationVector1D>()
val animationWrapper = TargetBasedAnimation(
animation,
0f,
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/ToolingGlueTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/ToolingGlueTest.kt
index f8897c1..e806006 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/ToolingGlueTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/ToolingGlueTest.kt
@@ -84,18 +84,18 @@
}
transition("start" to "end") {
- alpha using tween {
- easing = LinearEasing
- duration = 500
- }
+ alpha using tween(
+ easing = LinearEasing,
+ durationMillis = 500
+ )
}
transition("end" to "start") {
- scale using tween {
- duration = 600
- }
- alpha using tween {
- duration = 600
- }
+ scale using tween(
+ durationMillis = 600
+ )
+ alpha using tween(
+ durationMillis = 600
+ )
}
}
diff --git a/ui/ui-animation-core/src/test/java/androidx/animation/TweenAnimationTest.kt b/ui/ui-animation-core/src/test/java/androidx/animation/TweenAnimationTest.kt
index f8be4d90..ec090c1 100644
--- a/ui/ui-animation-core/src/test/java/androidx/animation/TweenAnimationTest.kt
+++ b/ui/ui-animation-core/src/test/java/androidx/animation/TweenAnimationTest.kt
@@ -31,12 +31,10 @@
val start = AnimationVector1D(0f)
val end = AnimationVector1D(1000f)
- val animation = TweenBuilder<Float>().run {
- delay = 100
- duration = testDuration
- easing = LinearEasing
- build()
- }
+ val animation = VectorizedTweenSpec<AnimationVector1D>(
+ delayMillis = 100,
+ durationMillis = testDuration,
+ easing = LinearEasing)
fun atPlaytime(playTime: Long) =
animation.getValue(playTime, start, end, AnimationVector1D(0f)).value
@@ -51,14 +49,12 @@
fun easingIsApplied() {
val totalDuration = 300
val accelerateEasing: Easing = { fraction -> fraction * 2f }
- val animation = TweenBuilder<Float>().run {
- duration = totalDuration
- easing = accelerateEasing
- build()
- }
+ val animation = VectorizedTweenSpec<AnimationVector1D>(
+ durationMillis = totalDuration,
+ easing = accelerateEasing)
val fraction = 0.3f
- val value = animation.at((totalDuration * fraction).toInt())
+ val value = animation.at((totalDuration * fraction).toLong())
val expectedValue = accelerateEasing(fraction)
assertThat(value).isEqualTo(expectedValue)
}
@@ -67,11 +63,10 @@
fun endValueCalculatedForPlaytimeOverDuration() {
val testDuration = 200
- val animation = TweenBuilder<Float>().run {
- duration = testDuration
- build()
- }
+ val animation = VectorizedTweenSpec<AnimationVector1D>(
+ durationMillis = testDuration
+ )
- assertThat(animation.at(testDuration + 10)).isEqualTo(1f)
+ assertThat(animation.at(testDuration + 10L)).isEqualTo(1f)
}
}
diff --git a/ui/ui-animation-tooling-internal/OWNERS b/ui/ui-animation-tooling-internal/OWNERS
new file mode 100644
index 0000000..13f1a9c
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/OWNERS
@@ -0,0 +1,3 @@
[email protected]
[email protected]
[email protected]
\ No newline at end of file
diff --git a/ui/ui-animation-tooling-internal/api/0.1.0-dev15.txt b/ui/ui-animation-tooling-internal/api/0.1.0-dev15.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/0.1.0-dev15.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/api/current.txt b/ui/ui-animation-tooling-internal/api/current.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/current.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-animation-tooling-internal/api/public_plus_experimental_0.1.0-dev15.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/public_plus_experimental_0.1.0-dev15.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/api/public_plus_experimental_current.txt b/ui/ui-animation-tooling-internal/api/public_plus_experimental_current.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/public_plus_experimental_current.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/api/restricted_0.1.0-dev15.txt b/ui/ui-animation-tooling-internal/api/restricted_0.1.0-dev15.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/restricted_0.1.0-dev15.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/api/restricted_current.txt b/ui/ui-animation-tooling-internal/api/restricted_current.txt
new file mode 100644
index 0000000..848e918
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/api/restricted_current.txt
@@ -0,0 +1,18 @@
+// Signature format: 3.0
+package androidx.ui.animation.tooling {
+
+ public interface ComposeAnimation {
+ method public Object getAnimation();
+ method public default java.util.Set<java.lang.Object> getStates();
+ method public androidx.ui.animation.tooling.ComposeAnimationType getType();
+ }
+
+ public enum ComposeAnimationType {
+ method public static androidx.ui.animation.tooling.ComposeAnimationType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.animation.tooling.ComposeAnimationType[] values();
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType ANIMATED_VALUE;
+ enum_constant public static final androidx.ui.animation.tooling.ComposeAnimationType TRANSITION_ANIMATION;
+ }
+
+}
+
diff --git a/ui/ui-animation-tooling-internal/build.gradle b/ui/ui-animation-tooling-internal/build.gradle
new file mode 100644
index 0000000..4be1456
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/build.gradle
@@ -0,0 +1,39 @@
+/*
+ * Copyright 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.
+ */
+
+import androidx.build.LibraryGroups
+import androidx.build.LibraryVersions
+import androidx.build.Publish
+
+import static androidx.build.dependencies.DependenciesKt.getKOTLIN_STDLIB
+
+plugins {
+ id("AndroidXPlugin")
+ id("kotlin")
+}
+
+dependencies {
+ implementation(KOTLIN_STDLIB)
+}
+
+androidx {
+ name = "Compose Animation Tooling"
+ description = "Compose Animation APIs for tooling support. Internal use only."
+ publish = Publish.SNAPSHOT_ONLY
+ mavenVersion = LibraryVersions.UI
+ mavenGroup = LibraryGroups.UI
+ generateDocs = false
+}
diff --git a/ui/ui-animation-tooling-internal/src/main/java/androidx/ui/animation/tooling/ComposeAnimation.kt b/ui/ui-animation-tooling-internal/src/main/java/androidx/ui/animation/tooling/ComposeAnimation.kt
new file mode 100644
index 0000000..bffdb24
--- /dev/null
+++ b/ui/ui-animation-tooling-internal/src/main/java/androidx/ui/animation/tooling/ComposeAnimation.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright 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 androidx.ui.animation.tooling
+
+/**
+ * Type of the animation. Different types might have different properties, for example a
+ * `TransitionAnimation` (represented by [TRANSITION_ANIMATION]) has a set of states associated
+ * with it.
+ */
+enum class ComposeAnimationType {
+ TRANSITION_ANIMATION, ANIMATED_VALUE
+}
+
+/**
+ * Simple interface to make it easier to share Compose animation objects between `ui-tooling` and
+ * Android Studio. Since both ends communicate mostly using bytecode manipulation and reflection,
+ * being able to parse these objects into a common type makes
+ */
+interface ComposeAnimation {
+
+ /**
+ * Returns the animation type. Ideally, the type should be checked before calling methods
+ * specific to a certain type, e.g. [getStates].
+ */
+ fun getType(): ComposeAnimationType
+
+ /**
+ * Returns the actual animation object.
+ */
+ fun getAnimation(): Any
+
+ /**
+ * Returns all the available states of a `TransitionAnimation`.
+ *
+ * @throws UnsupportedOperationException if [getType] does not return `TRANSITION_ANIMATION`.
+ */
+ fun getStates(): Set<Any> {
+ throw UnsupportedOperationException("Only available when getType() is TRANSITION_ANIMATION")
+ }
+}
diff --git a/ui/ui-animation/api/0.1.0-dev15.txt b/ui/ui-animation/api/0.1.0-dev15.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/0.1.0-dev15.txt
+++ b/ui/ui-animation/api/0.1.0-dev15.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/api/current.txt b/ui/ui-animation/api/current.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/current.txt
+++ b/ui/ui-animation/api/current.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/api/public_plus_experimental_current.txt b/ui/ui-animation/api/public_plus_experimental_current.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation/api/public_plus_experimental_current.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/api/restricted_0.1.0-dev15.txt b/ui/ui-animation/api/restricted_0.1.0-dev15.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-animation/api/restricted_0.1.0-dev15.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/api/restricted_current.txt b/ui/ui-animation/api/restricted_current.txt
index 18c1596..9e688de 100644
--- a/ui/ui-animation/api/restricted_current.txt
+++ b/ui/ui-animation/api/restricted_current.txt
@@ -11,11 +11,11 @@
public final class AnimatedValueEffectsKt {
method @androidx.compose.Composable public static androidx.animation.AnimatedValue<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D> animatedColor-o4iVt3U(long initVal, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
method @androidx.compose.Composable public static androidx.animation.AnimatedFloat animatedFloat(float initVal, float visibilityThreshold = 0.01f, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, V? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> androidx.animation.AnimatedValue<T,V> animatedValue(T? initVal, androidx.animation.TwoWayConverter<T,V> converter, T? visibilityThreshold = null, androidx.animation.AnimationClockObservable clock = AnimationClockAmbient.current);
}
@androidx.compose.Stable public final class AnimatedValueModel<T, V extends androidx.animation.AnimationVector> extends androidx.animation.AnimatedValue<T,V> {
- ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, V? visibilityThreshold);
+ ctor public AnimatedValueModel(T! initialValue, androidx.animation.TwoWayConverter<T,V> typeConverter, androidx.animation.AnimationClockObservable clock, T? visibilityThreshold);
method public T! getValue();
method protected void setValue(T! p);
property public T! value;
@@ -30,7 +30,7 @@
}
public final class CrossfadeKt {
- method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationBuilder<java.lang.Float> animation = androidx.animation.TweenBuilder(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
+ method @androidx.compose.Composable public static <T> void Crossfade(T? current, androidx.animation.AnimationSpec<java.lang.Float> animation = tween(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> children);
}
public final class DisposableAnimationClock implements androidx.animation.AnimationClockObservable {
@@ -54,29 +54,27 @@
property public androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> typeConverter;
}
+ public final class OffsetPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
+ ctor public OffsetPropKey(String label);
+ ctor public OffsetPropKey();
+ method public String getLabel();
+ method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
+ property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
+ }
+
public final class PropertyKeysKt {
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Bounds,androidx.animation.AnimationVector4D> getBoundsToVectorConverter();
method public static kotlin.jvm.functions.Function1<androidx.ui.graphics.colorspace.ColorSpace,androidx.animation.TwoWayConverter<androidx.ui.graphics.Color,androidx.animation.AnimationVector4D>> getColorToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Dp,androidx.animation.AnimationVector1D> getDpToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntOffset,androidx.animation.AnimationVector2D> getIntPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntPxSizeToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Integer,androidx.animation.AnimationVector1D> getIntPxToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.unit.IntSize,androidx.animation.AnimationVector2D> getIntSizeToVectorConverter();
+ method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getOffsetToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.Position,androidx.animation.AnimationVector2D> getPositionToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.unit.PxBounds,androidx.animation.AnimationVector4D> getPxBoundsToVectorConverter();
- method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getPxPositionToVectorConverter();
- method public static androidx.animation.TwoWayConverter<java.lang.Float,androidx.animation.AnimationVector1D> getPxToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Rect,androidx.animation.AnimationVector4D> getRectToVectorConverter();
method public static androidx.animation.TwoWayConverter<androidx.ui.geometry.Size,androidx.animation.AnimationVector2D> getSizeToVectorConverter();
}
- public final class PxPositionPropKey implements androidx.animation.PropKey<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> {
- ctor public PxPositionPropKey(String label);
- ctor public PxPositionPropKey();
- method public String getLabel();
- method public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> getTypeConverter();
- property public androidx.animation.TwoWayConverter<androidx.ui.geometry.Offset,androidx.animation.AnimationVector2D> typeConverter;
- }
-
public final class PxPropKey implements androidx.animation.PropKey<java.lang.Float,androidx.animation.AnimationVector1D> {
ctor public PxPropKey(String label);
ctor public PxPropKey();
@@ -94,48 +92,44 @@
}
public final class SingleValueAnimationKt {
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Size> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({
+ return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.Bounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({
+ return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationBuilder<java.lang.Float> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationBuilder<androidx.ui.geometry.Offset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.geometry.Offset animate(androidx.ui.geometry.Offset target, androidx.animation.AnimationSpec<androidx.ui.geometry.Offset> animSpec = remember({
+ return <init>(Offset(PxVisibilityThreshold, PxVisibilityThreshold))
}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationBuilder<androidx.ui.unit.PxBounds> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.PxBounds animate(androidx.ui.unit.PxBounds target, androidx.animation.AnimationSpec<androidx.ui.unit.PxBounds> animSpec = remember({
+ return <init>(PxBoundsToVectorConverter.invoke(PxVisibilityThreshold4D))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.PxBounds,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationBuilder<java.lang.Integer> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static int animate(int target, androidx.animation.AnimationSpec<java.lang.Integer> animSpec = remember({
+ return <init>(1)
}), kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntOffset> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntOffset animate(androidx.ui.unit.IntOffset target, androidx.animation.AnimationSpec<androidx.ui.unit.IntOffset> animSpec = remember({
+ return <init>(IntOffset(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntOffset,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationBuilder<androidx.ui.unit.IntSize> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static androidx.ui.unit.IntSize animate(androidx.ui.unit.IntSize target, androidx.animation.AnimationSpec<androidx.ui.unit.IntSize> animSpec = remember({
+ return <init>(IntSize(1, 1))
}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.IntSize,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
+ method @androidx.compose.Composable public static <T extends androidx.animation.AnimationVector> T animate(T target, androidx.animation.AnimationSpec<T> animSpec = remember({
+ android.util.Log.w("LTD", "visibility threshold: " + visibilityThreshold)
+ return <init>(visibilityThreshold)
}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationBuilder<T> animBuilder = remember({
- return <init>()
-}), V? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-90dr43Y(long target, androidx.animation.AnimationBuilder<androidx.ui.graphics.Color> animBuilder = remember({
+ method @androidx.compose.Composable public static <T, V extends androidx.animation.AnimationVector> T! animate(T? target, androidx.animation.TwoWayConverter<T,V> converter, androidx.animation.AnimationSpec<T> animSpec = remember({
+ return <init>(visibilityThreshold)
+}), T? visibilityThreshold = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static float animate-5VRrNdo(float target, androidx.animation.AnimationSpec<androidx.ui.unit.Dp> animSpec = remember({
+ return <init>(DpVisibilityThreshold.dp)
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({
+ return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+ method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({
return <init>()
}), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static long animate-le0sloQ(long target, androidx.animation.AnimationBuilder<androidx.ui.unit.Position> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
- method @androidx.compose.Composable public static float animate-qfPNtGo(float target, androidx.animation.AnimationBuilder<androidx.ui.unit.Dp> animBuilder = remember({
- return <init>()
-}), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Dp,kotlin.Unit>? endListener = null);
}
public final class TransitionKt {
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
index 38879ec..efc7f6d 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
@@ -19,8 +19,9 @@
import androidx.animation.FastOutSlowInEasing
import androidx.animation.FloatPropKey
import androidx.animation.ManualAnimationClock
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.Providers
import androidx.compose.remember
@@ -104,10 +105,7 @@
}
val onPress: (Offset) -> Unit = { position ->
- animValue.animateTo(position.x,
- TweenBuilder<Float>().apply {
- duration = 400
- })
+ animValue.animateTo(position.x, TweenSpec(durationMillis = 400))
}
DrawSeekBar(
@@ -169,21 +167,21 @@
}
transition {
- alphaKey using tween {
- easing = FastOutSlowInEasing
- duration = 400
- }
- offset1 using tween {
- easing = FastOutSlowInEasing
- duration = 400
- }
- offset2 using tween {
- easing = FastOutSlowInEasing
- duration = 400
- }
- offset3 using tween {
- easing = FastOutSlowInEasing
- duration = 400
- }
+ alphaKey using tween(
+ easing = FastOutSlowInEasing,
+ durationMillis = 400
+ )
+ offset1 using tween(
+ easing = FastOutSlowInEasing,
+ durationMillis = 400
+ )
+ offset2 using tween(
+ easing = FastOutSlowInEasing,
+ durationMillis = 400
+ )
+ offset3 using tween(
+ easing = FastOutSlowInEasing,
+ durationMillis = 400
+ )
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
index 25279d0..61f8cfa 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
@@ -17,7 +17,7 @@
package androidx.ui.animation.demos
import android.util.Log
-import androidx.animation.PhysicsBuilder
+import androidx.animation.SpringSpec
import androidx.animation.TargetAnimation
import androidx.animation.fling
import androidx.compose.Composable
@@ -66,12 +66,12 @@
// animating to the adjusted target.
animScroll.fling(velocity.x, adjustTarget = { target ->
// Adjust the target position to center align the item
- val animation = PhysicsBuilder<Float>(dampingRatio = 2.0f, stiffness = 100f)
var rem = target % itemWidth.value
if (rem < 0) {
rem += itemWidth.value
}
- TargetAnimation((target - rem), animation)
+ TargetAnimation((target - rem),
+ SpringSpec(dampingRatio = 2.0f, stiffness = 100f))
})
}
})
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
index 9926cfb..178fe53 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
@@ -17,6 +17,7 @@
package androidx.ui.animation.demos
import androidx.animation.FloatPropKey
+import androidx.animation.spring
import androidx.animation.transitionDefinition
import androidx.compose.Composable
import androidx.compose.state
@@ -47,12 +48,12 @@
this[color] = Color(red = 0, green = 100, blue = 0, alpha = 255)
}
transition {
- scale using physics {
+ scale using spring(
stiffness = 50f
- }
- color using physics {
+ )
+ color using spring(
stiffness = 50f
- }
+ )
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
index 88ac41f..80603bc 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
@@ -16,11 +16,13 @@
package androidx.ui.animation.demos
+import androidx.animation.spring
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
-import androidx.compose.StructurallyEqual
import androidx.compose.remember
import androidx.compose.state
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.animation.ColorPropKey
import androidx.ui.animation.RectPropKey
import androidx.ui.animation.Transition
@@ -44,8 +46,9 @@
AnimState.PutAway -> AnimState.Collapsed
}
}
- val width = state(areEquivalent = StructurallyEqual) { 0f }
- val height = state(areEquivalent = StructurallyEqual) { 0f }
+
+ val width = state(policy = structuralEqualityPolicy()) { 0f }
+ val height = state(policy = structuralEqualityPolicy()) { 0f }
Transition(
definition = remember(width.value, height.value) {
createTransDef(width.value, height.value)
@@ -95,11 +98,11 @@
}
transition {
- bounds using physics {
+ bounds using spring(
stiffness = 100f
- }
- background using tween {
- duration = 500
- }
+ )
+ background using tween(
+ durationMillis = 500
+ )
}
}
\ No newline at end of file
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
index 29459a4..a0d26ec 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
@@ -18,7 +18,9 @@
import androidx.animation.FloatPropKey
import androidx.animation.LinearEasing
+import androidx.animation.repeatable
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.state
import androidx.ui.animation.Transition
@@ -85,17 +87,17 @@
this[rotation] = 360f
}
transition(RotationStates.Original to RotationStates.Rotated) {
- rotation using repeatable {
- iterations = 10
- animation = tween {
- easing = LinearEasing
- duration = 1000
- }
- }
+ rotation using repeatable(
+ iterations = 10,
+ animation = tween(
+ easing = LinearEasing,
+ durationMillis = 1000
+ )
+ )
}
transition(RotationStates.Rotated to RotationStates.Original) {
- rotation using tween {
- duration = 300
- }
+ rotation using tween(
+ durationMillis = 300
+ )
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
index 6622627..8941233 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
@@ -17,7 +17,7 @@
package androidx.ui.animation.demos
import android.util.Log
-import androidx.animation.PhysicsBuilder
+import androidx.animation.SpringSpec
import androidx.animation.fling
import androidx.compose.Composable
import androidx.compose.state
@@ -87,7 +87,7 @@
) {
animScroll.animateTo(
springBackTarget,
- PhysicsBuilder(dampingRatio = 0.8f, stiffness = 200f)
+ SpringSpec(dampingRatio = 0.8f, stiffness = 200f)
)
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
index 41bb9a6..4e07be3 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
@@ -20,7 +20,9 @@
import android.os.Looper
import androidx.animation.FloatPropKey
import androidx.animation.TransitionState
+import androidx.animation.spring
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.getValue
import androidx.compose.mutableStateOf
@@ -62,13 +64,13 @@
}
// Apply this transition to all state changes (i.e. Open -> Closed and Closed -> Open)
transition {
- background using tween {
- duration = 800
- }
- y using physics {
+ background using tween(
+ durationMillis = 800
+ )
+ y using spring(
// Extremely low stiffness
stiffness = 40f
- }
+ )
}
}
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
index e0c3b41..4f3c75e6 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
@@ -21,7 +21,9 @@
import androidx.animation.InterruptionHandling
import androidx.animation.TransitionDefinition
import androidx.animation.TransitionState
+import androidx.animation.keyframes
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.remember
import androidx.compose.state
@@ -113,22 +115,18 @@
// Grow the ripple
transition(ButtonStatus.Initial to ButtonStatus.Pressed) {
alpha using keyframes {
- duration = 225
+ durationMillis = 225
0f at 0 // optional
0.2f at 75
0.2f at 225 // optional
}
- radius using tween {
- duration = 225
- }
+ radius using tween(durationMillis = 225)
interruptionHandling = InterruptionHandling.UNINTERRUPTIBLE
}
// Fade out the ripple
transition(ButtonStatus.Pressed to ButtonStatus.Released) {
- alpha using tween {
- duration = 200
- }
+ alpha using tween(durationMillis = 200)
interruptionHandling = InterruptionHandling.UNINTERRUPTIBLE
// switch back to Initial to prepare for the next ripple cycle
nextState = ButtonStatus.Initial
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
index f8fe620..252df91 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
@@ -19,7 +19,7 @@
import androidx.animation.AnimationEndReason
import androidx.animation.ExponentialDecay
import androidx.animation.FastOutSlowInEasing
-import androidx.animation.PhysicsBuilder
+import androidx.animation.SpringSpec
import androidx.animation.TargetAnimation
import androidx.animation.fling
import androidx.compose.Composable
@@ -93,7 +93,9 @@
if (target <= 0) {
null
} else {
- val animation = PhysicsBuilder<Float>(dampingRatio = 0.8f, stiffness = 300f)
+ val animation = SpringSpec<Float>(
+ dampingRatio = 0.8f, stiffness = 300f
+ )
val projectedTarget = target + sign(velocity) * 0.2f * height
if (projectedTarget < 0.6 * height) {
TargetAnimation(0f, animation)
@@ -163,11 +165,11 @@
index: Int,
alpha: Float
) = drawRect(
- colors[index % colors.size],
- topLeft = Offset(center.x - width / 2 + padding, bottom - height),
- size = Size(width - (2 * padding), height),
- alpha = alpha
- )
+ colors[index % colors.size],
+ topLeft = Offset(center.x - width / 2 + padding, bottom - height),
+ size = Size(width - (2 * padding), height),
+ alpha = alpha
+)
private val colors = listOf(
Color(0xFFffd7d7),
diff --git a/ui/ui-animation/src/androidTest/java/androidx/ui/animation/CrossfadeTest.kt b/ui/ui-animation/src/androidTest/java/androidx/ui/animation/CrossfadeTest.kt
index 4526f1f..889cea5 100644
--- a/ui/ui-animation/src/androidTest/java/androidx/ui/animation/CrossfadeTest.kt
+++ b/ui/ui-animation/src/androidTest/java/androidx/ui/animation/CrossfadeTest.kt
@@ -15,8 +15,8 @@
*/
package androidx.ui.animation
-import androidx.animation.DefaultDuration
-import androidx.animation.TweenBuilder
+import androidx.animation.AnimationConstants.DefaultDurationMillis
+import androidx.animation.TweenSpec
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.onDispose
@@ -51,7 +51,7 @@
Text(if (it) First else Second)
}
}
- composeTestRule.clockTestRule.advanceClock(DefaultDuration)
+ composeTestRule.clockTestRule.advanceClock(DefaultDurationMillis.toLong())
findByText(First).assertExists()
}
@@ -70,7 +70,7 @@
}
}
}
- composeTestRule.clockTestRule.advanceClock(DefaultDuration)
+ composeTestRule.clockTestRule.advanceClock(DefaultDurationMillis.toLong())
runOnIdleCompose {
showFirst = false
@@ -78,7 +78,7 @@
waitForIdle()
- composeTestRule.clockTestRule.advanceClock(DefaultDuration)
+ composeTestRule.clockTestRule.advanceClock(DefaultDurationMillis.toLong())
runOnIdleCompose {
assertTrue(disposed)
@@ -89,23 +89,23 @@
}
@Test
- fun crossfadeTest_durationCanBeModifierUsingAnimationBuilder() {
+ fun crossfadeTest_durationCanBeModifierUsingAnimationSpec() {
composeTestRule.clockTestRule.pauseClock()
- val duration = 100L // smaller than default 300
+ val duration = 100 // smaller than default 300
var showFirst by mutableStateOf(true)
var disposed = false
composeTestRule.setContent {
- Crossfade(showFirst, TweenBuilder<Float>().apply {
- this.duration = duration.toInt()
- }) {
+ Crossfade(
+ showFirst, TweenSpec(durationMillis = duration)
+ ) {
Text(if (it) First else Second)
onDispose {
disposed = true
}
}
}
- composeTestRule.clockTestRule.advanceClock(duration)
+ composeTestRule.clockTestRule.advanceClock(duration.toLong())
runOnIdleCompose {
showFirst = false
@@ -113,7 +113,7 @@
waitForIdle()
- composeTestRule.clockTestRule.advanceClock(duration)
+ composeTestRule.clockTestRule.advanceClock(duration.toLong())
runOnIdleCompose {
assertTrue(disposed)
@@ -130,7 +130,7 @@
Text(if (value == null) First else Second)
}
}
- composeTestRule.clockTestRule.advanceClock(DefaultDuration.toLong())
+ composeTestRule.clockTestRule.advanceClock(DefaultDurationMillis.toLong())
findByText(First).assertExists()
findByText(Second).assertDoesNotExist()
@@ -141,7 +141,7 @@
waitForIdle()
- composeTestRule.clockTestRule.advanceClock(DefaultDuration.toLong())
+ composeTestRule.clockTestRule.advanceClock(DefaultDurationMillis.toLong())
findByText(First).assertDoesNotExist()
findByText(Second).assertExists()
diff --git a/ui/ui-animation/src/androidTest/java/androidx/ui/animation/SingleValueAnimationTest.kt b/ui/ui-animation/src/androidTest/java/androidx/ui/animation/SingleValueAnimationTest.kt
index b8bce8f..2b5da9d 100644
--- a/ui/ui-animation/src/androidTest/java/androidx/ui/animation/SingleValueAnimationTest.kt
+++ b/ui/ui-animation/src/androidTest/java/androidx/ui/animation/SingleValueAnimationTest.kt
@@ -17,33 +17,27 @@
package androidx.ui.animation
import androidx.animation.AnimationVector
-import androidx.animation.AnimationVector2D
-import androidx.animation.AnimationVector4D
import androidx.animation.FastOutLinearInEasing
import androidx.animation.FastOutSlowInEasing
+import androidx.animation.FloatSpringSpec
import androidx.animation.LinearEasing
import androidx.animation.LinearOutSlowInEasing
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.compose.Composable
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.setValue
import androidx.test.filters.MediumTest
import androidx.ui.foundation.Box
-import androidx.ui.geometry.Size
+import androidx.ui.geometry.Offset
import androidx.ui.graphics.Color
import androidx.ui.graphics.lerp
import androidx.ui.test.createComposeRule
import androidx.ui.test.runOnIdleCompose
import androidx.ui.test.waitForIdle
import androidx.ui.unit.Bounds
-import androidx.ui.unit.Dp
-import androidx.ui.unit.Position
-import androidx.ui.unit.PxBounds
-import androidx.ui.geometry.Offset
import androidx.ui.unit.dp
import androidx.ui.util.lerp
-
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
@@ -66,24 +60,26 @@
var dpValue = startVal.dp
var pxValue = startVal
- val animConfig: TweenBuilder<*>.() -> Unit = {
- easing = FastOutSlowInEasing
- duration = 100
- }
+ fun <T> tween(): TweenSpec<T> =
+ TweenSpec(
+ easing = FastOutSlowInEasing,
+ durationMillis = 100
+ )
+
val children: @Composable() (Boolean) -> Unit = { enabled ->
floatValue = animate(
if (enabled) endVal else startVal,
- TweenBuilder<Float>().apply(animConfig)
+ tween()
)
dpValue = animate(
if (enabled) endVal.dp else startVal.dp,
- TweenBuilder<Dp>().apply(animConfig)
+ tween()
)
pxValue = animate(
if (enabled) endVal else startVal,
- TweenBuilder<Float>().apply(animConfig)
+ tween()
)
}
@@ -113,16 +109,18 @@
var vectorValue = startVal
var positionValue = PositionToVectorConverter.convertFromVector(startVal)
var sizeValue = SizeToVectorConverter.convertFromVector(startVal)
- var pxPositionValue = PxPositionToVectorConverter.convertFromVector(startVal)
+ var pxPositionValue = OffsetToVectorConverter.convertFromVector(startVal)
- val animConfig: TweenBuilder<*>.() -> Unit = {
- easing = LinearEasing
- duration = 100
- }
+ fun <V> tween(): TweenSpec<V> =
+ TweenSpec(
+ easing = LinearEasing,
+ durationMillis = 100
+ )
+
val children: @Composable() (Boolean) -> Unit = { enabled ->
vectorValue = animate(
if (enabled) endVal else startVal,
- TweenBuilder<AnimationVector2D>().apply(animConfig)
+ tween()
)
positionValue = animate(
@@ -130,7 +128,7 @@
PositionToVectorConverter.convertFromVector(endVal)
else
PositionToVectorConverter.convertFromVector(startVal),
- TweenBuilder<Position>().apply(animConfig)
+ tween()
)
sizeValue = animate(
@@ -138,15 +136,15 @@
SizeToVectorConverter.convertFromVector(endVal)
else
SizeToVectorConverter.convertFromVector(startVal),
- TweenBuilder<Size>().apply(animConfig)
+ tween()
)
pxPositionValue = animate(
if (enabled)
- PxPositionToVectorConverter.convertFromVector(endVal)
+ OffsetToVectorConverter.convertFromVector(endVal)
else
- PxPositionToVectorConverter.convertFromVector(startVal),
- TweenBuilder<Offset>().apply(animConfig)
+ OffsetToVectorConverter.convertFromVector(startVal),
+ tween()
)
}
@@ -160,7 +158,7 @@
assertEquals(expect, vectorValue)
assertEquals(SizeToVectorConverter.convertFromVector(expect), sizeValue)
assertEquals(PositionToVectorConverter.convertFromVector(expect), positionValue)
- assertEquals(PxPositionToVectorConverter.convertFromVector(expect), pxPositionValue)
+ assertEquals(OffsetToVectorConverter.convertFromVector(expect), pxPositionValue)
composeTestRule.clockTestRule.advanceClock(50)
waitForIdle()
}
@@ -178,14 +176,16 @@
var boundsValue = BoundsToVectorConverter.convertFromVector(startVal)
var pxBoundsValue = PxBoundsToVectorConverter.convertFromVector(startVal)
- val animConfig: TweenBuilder<*>.() -> Unit = {
- easing = LinearOutSlowInEasing
- duration = 100
- }
+ fun <V> tween(): TweenSpec<V> =
+ TweenSpec(
+ easing = LinearOutSlowInEasing,
+ durationMillis = 100
+ )
+
val children: @Composable() (Boolean) -> Unit = { enabled ->
vectorValue = animate(
if (enabled) endVal else startVal,
- TweenBuilder<AnimationVector4D>().apply(animConfig)
+ tween()
)
boundsValue = animate(
@@ -193,7 +193,7 @@
BoundsToVectorConverter.convertFromVector(endVal)
else
BoundsToVectorConverter.convertFromVector(startVal),
- TweenBuilder<Bounds>().apply(animConfig)
+ tween()
)
pxBoundsValue = animate(
@@ -201,7 +201,7 @@
PxBoundsToVectorConverter.convertFromVector(endVal)
else
PxBoundsToVectorConverter.convertFromVector(startVal),
- TweenBuilder<PxBounds>().apply(animConfig)
+ tween()
)
}
@@ -230,10 +230,12 @@
fun animateColorTest() {
var value = Color.Black
val children: @Composable() (Boolean) -> Unit = { enabled ->
- value = animate(if (enabled) Color.Cyan else Color.Black, TweenBuilder<Color>().apply {
- duration = 100
- easing = FastOutLinearInEasing
- })
+ value = animate(
+ if (enabled) Color.Cyan else Color.Black, TweenSpec(
+ durationMillis = 100,
+ easing = FastOutLinearInEasing
+ )
+ )
}
val verify: () -> Unit = {
@@ -250,6 +252,83 @@
animateTest(children, verify)
}
+ @Test
+ fun visibilityThresholdTest() {
+
+ var floatValue = 0f
+ var vectorValue = AnimationVector(0f)
+ var offsetValue = Offset(0f, 0f)
+ var boundsValue = Bounds(0.dp, 0.dp, 0.dp, 0.dp)
+
+ val specForFloat = FloatSpringSpec(visibilityThreshold = 0.01f)
+ val specForVector = FloatSpringSpec(visibilityThreshold = PxVisibilityThreshold)
+ val specForOffset = FloatSpringSpec(visibilityThreshold = PxVisibilityThreshold)
+ val specForBounds = FloatSpringSpec(visibilityThreshold = DpVisibilityThreshold)
+
+ val children: @Composable() (Boolean) -> Unit = { enabled ->
+ floatValue = animate(if (enabled) 100f else 0f)
+
+ vectorValue = animate(
+ if (enabled) AnimationVector(100f) else AnimationVector(0f),
+ visibilityThreshold = AnimationVector(PxVisibilityThreshold)
+ )
+
+ offsetValue = animate(
+ if (enabled)
+ Offset(100f, 100f)
+ else
+ Offset(0f, 0f)
+ )
+
+ boundsValue = animate(
+ if (enabled)
+ Bounds(100.dp, 100.dp, 100.dp, 100.dp)
+ else
+ Bounds(0.dp, 0.dp, 0.dp, 0.dp)
+ )
+ }
+
+ val durationForFloat = specForFloat.getDurationMillis(0f, 100f, 0f)
+ val durationForVector = specForVector.getDurationMillis(0f, 100f, 0f)
+ val durationForOffset = specForOffset.getDurationMillis(0f, 100f, 0f)
+ val durationForBounds = specForBounds.getDurationMillis(0f, 100f, 0f)
+ val verify: () -> Unit = {
+ for (i in 0..durationForFloat step 50) {
+ val expectFloat = specForFloat.getValue(i, 0f, 100f, 0f)
+ assertEquals("play time: $i", expectFloat, floatValue)
+
+ if (i < durationForVector) {
+ val expectVector = specForVector.getValue(i, 0f, 100f, 0f)
+ assertEquals(AnimationVector(expectVector), vectorValue)
+ } else {
+ assertEquals(AnimationVector(100f), vectorValue)
+ }
+
+ if (i < durationForOffset) {
+ val expectOffset = specForOffset.getValue(i, 0f, 100f, 0f)
+ assertEquals(Offset(expectOffset, expectOffset), offsetValue)
+ } else {
+ assertEquals(Offset(100f, 100f), offsetValue)
+ }
+
+ if (i < durationForBounds) {
+ val expectBounds = specForBounds.getValue(i, 0f, 100f, 0f)
+ assertEquals(
+ Bounds(expectBounds.dp, expectBounds.dp, expectBounds.dp, expectBounds.dp),
+ boundsValue
+ )
+ } else {
+ assertEquals(Bounds(100.dp, 100.dp, 100.dp, 100.dp), boundsValue)
+ }
+
+ composeTestRule.clockTestRule.advanceClock(50)
+ waitForIdle()
+ }
+ }
+
+ animateTest(children, verify)
+ }
+
private fun animateTest(children: @Composable() (Boolean) -> Unit, verify: () -> Unit) {
composeTestRule.clockTestRule.pauseClock()
diff --git a/ui/ui-animation/src/main/java/androidx/ui/animation/AnimatedValueEffects.kt b/ui/ui-animation/src/main/java/androidx/ui/animation/AnimatedValueEffects.kt
index 6a47e02..463254b 100644
--- a/ui/ui-animation/src/main/java/androidx/ui/animation/AnimatedValueEffects.kt
+++ b/ui/ui-animation/src/main/java/androidx/ui/animation/AnimatedValueEffects.kt
@@ -25,11 +25,11 @@
import androidx.animation.TwoWayConverter
import androidx.compose.Composable
import androidx.compose.Stable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.AnimationClockAmbient
import androidx.ui.graphics.Color
@@ -48,7 +48,7 @@
fun <T, V : AnimationVector> animatedValue(
initVal: T,
converter: TwoWayConverter<T, V>,
- visibilityThreshold: V? = null,
+ visibilityThreshold: T? = null,
clock: AnimationClockObservable = AnimationClockAmbient.current
): AnimatedValue<T, V> = clock.asDisposableClock().let { disposableClock ->
remember(disposableClock) {
@@ -101,15 +101,16 @@
* @param typeConverter The converter for converting any value of type [T] to an
* [AnimationVector] type
* @param clock The animation clock that will be used to drive the animation
+ * @param visibilityThreshold Threshold at which the animation may round off to its target value.
*/
@Stable
class AnimatedValueModel<T, V : AnimationVector>(
initialValue: T,
typeConverter: TwoWayConverter<T, V>,
clock: AnimationClockObservable,
- visibilityThreshold: V? = null
+ visibilityThreshold: T? = null
) : AnimatedValue<T, V>(typeConverter, clock, visibilityThreshold) {
- override var value: T by mutableStateOf(initialValue, StructurallyEqual)
+ override var value: T by mutableStateOf(initialValue, structuralEqualityPolicy())
}
/**
@@ -118,6 +119,8 @@
*
* @param initialValue The overridden value field that can only be mutated by animation
* @param clock The animation clock that will be used to drive the animation
+ * @param visibilityThreshold a threshold to determine when the animation is considered close
+ * enough to the target to terminate
*/
@Stable
class AnimatedFloatModel(
@@ -125,5 +128,5 @@
clock: AnimationClockObservable,
visibilityThreshold: Float = Spring.DefaultDisplacementThreshold
) : AnimatedFloat(clock, visibilityThreshold) {
- override var value: Float by mutableStateOf(initialValue, StructurallyEqual)
+ override var value: Float by mutableStateOf(initialValue, structuralEqualityPolicy())
}
\ No newline at end of file
diff --git a/ui/ui-animation/src/main/java/androidx/ui/animation/Crossfade.kt b/ui/ui-animation/src/main/java/androidx/ui/animation/Crossfade.kt
index 5aceefb..7233687 100644
--- a/ui/ui-animation/src/main/java/androidx/ui/animation/Crossfade.kt
+++ b/ui/ui-animation/src/main/java/androidx/ui/animation/Crossfade.kt
@@ -17,9 +17,9 @@
package androidx.ui.animation
import androidx.animation.AnimatedFloat
-import androidx.animation.AnimationBuilder
import androidx.animation.AnimationEndReason
-import androidx.animation.TweenBuilder
+import androidx.animation.AnimationSpec
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.invalidate
import androidx.compose.key
@@ -38,12 +38,12 @@
* @param current is a key representing your current layout state. every time you change a key
* the animation will be triggered. The [children] called with the old key will be faded out while
* the [children] called with the new key will be faded in.
- * @param animation the [AnimationBuilder] to configure the animation.
+ * @param animation the [AnimationSpec] to configure the animation.
*/
@Composable
fun <T> Crossfade(
current: T,
- animation: AnimationBuilder<Float> = TweenBuilder(),
+ animation: AnimationSpec<Float> = tween(),
children: @Composable (T) -> Unit
) {
val state = remember { CrossfadeState<T>() }
@@ -101,7 +101,7 @@
@Composable
private fun animatedOpacity(
- animation: AnimationBuilder<Float>,
+ animation: AnimationSpec<Float>,
visible: Boolean,
onAnimationFinish: () -> Unit = {}
): AnimatedFloat {
diff --git a/ui/ui-animation/src/main/java/androidx/ui/animation/PropertyKeys.kt b/ui/ui-animation/src/main/java/androidx/ui/animation/PropertyKeys.kt
index 127d01a..0ea02a7 100644
--- a/ui/ui-animation/src/main/java/androidx/ui/animation/PropertyKeys.kt
+++ b/ui/ui-animation/src/main/java/androidx/ui/animation/PropertyKeys.kt
@@ -19,6 +19,7 @@
import androidx.animation.AnimationVector1D
import androidx.animation.AnimationVector2D
import androidx.animation.AnimationVector4D
+import androidx.animation.FloatToVectorConverter
import androidx.animation.PropKey
import androidx.animation.TwoWayConverter
import androidx.ui.geometry.Rect
@@ -42,7 +43,7 @@
* @param label Label for distinguishing different prop keys in Android Studio.
*/
class PxPropKey(override val label: String = "PxPropKey") : PropKey<Float, AnimationVector1D> {
- override val typeConverter = PxToVectorConverter
+ override val typeConverter = FloatToVectorConverter
}
/**
@@ -59,10 +60,10 @@
*
* @param label Label for distinguishing different prop keys in Android Studio.
*/
-class PxPositionPropKey(
- override val label: String = "PxPositionPropKey"
+class OffsetPropKey(
+ override val label: String = "OffsetPropKey"
) : PropKey<Offset, AnimationVector2D> {
- override val typeConverter = PxPositionToVectorConverter
+ override val typeConverter = OffsetToVectorConverter
}
/**
@@ -165,17 +166,9 @@
)
/**
- * A type converter that converts a pixel to a [AnimationVector1D], and vice versa.
- */
-val PxToVectorConverter: TwoWayConverter<Float, AnimationVector1D> = TwoWayConverter(
- convertToVector = { AnimationVector1D(it) },
- convertFromVector = { it.value }
-)
-
-/**
* A type converter that converts a [Offset] to a [AnimationVector2D], and vice versa.
*/
-val PxPositionToVectorConverter: TwoWayConverter<Offset, AnimationVector2D> =
+val OffsetToVectorConverter: TwoWayConverter<Offset, AnimationVector2D> =
TwoWayConverter(
convertToVector = { AnimationVector2D(it.x, it.y) },
convertFromVector = { Offset(it.v1, it.v2) }
@@ -192,14 +185,6 @@
)
/**
- * A type converter that converts a pixel to a [AnimationVector1D], and vice versa.
- */
-val IntPxToVectorConverter: TwoWayConverter<Int, AnimationVector1D> = TwoWayConverter(
- convertToVector = { AnimationVector1D(it.toFloat()) },
- convertFromVector = { it.value.roundToInt() }
-)
-
-/**
* A type converter that converts a [IntOffset] to a [AnimationVector2D], and vice versa.
*/
val IntPxPositionToVectorConverter: TwoWayConverter<IntOffset, AnimationVector2D> =
@@ -211,7 +196,7 @@
/**
* A type converter that converts a [IntSize] to a [AnimationVector2D], and vice versa.
*/
-val IntPxSizeToVectorConverter: TwoWayConverter<IntSize, AnimationVector2D> =
+val IntSizeToVectorConverter: TwoWayConverter<IntSize, AnimationVector2D> =
TwoWayConverter(
{ AnimationVector2D(it.width.toFloat(), it.height.toFloat()) },
{ IntSize(it.v1.roundToInt(), it.v2.roundToInt()) }
diff --git a/ui/ui-animation/src/main/java/androidx/ui/animation/SingleValueAnimation.kt b/ui/ui-animation/src/main/java/androidx/ui/animation/SingleValueAnimation.kt
index 6c54d0f..30d268a 100644
--- a/ui/ui-animation/src/main/java/androidx/ui/animation/SingleValueAnimation.kt
+++ b/ui/ui-animation/src/main/java/androidx/ui/animation/SingleValueAnimation.kt
@@ -16,18 +16,18 @@
package androidx.ui.animation
-import androidx.animation.AnimationBuilder
import androidx.animation.AnimationEndReason
+import androidx.animation.AnimationSpec
import androidx.animation.AnimationVector
-import androidx.animation.AnimationVector1D
-import androidx.animation.AnimationVector2D
import androidx.animation.AnimationVector4D
-import androidx.animation.PhysicsBuilder
+import androidx.animation.IntToVectorConverter
+import androidx.animation.SpringSpec
import androidx.animation.TwoWayConverter
import androidx.compose.Composable
import androidx.compose.onCommit
import androidx.compose.remember
import androidx.ui.core.AnimationClockAmbient
+import androidx.ui.geometry.Offset
import androidx.ui.geometry.Size
import androidx.ui.graphics.Color
import androidx.ui.unit.Bounds
@@ -36,17 +36,12 @@
import androidx.ui.unit.IntSize
import androidx.ui.unit.Position
import androidx.ui.unit.PxBounds
-import androidx.ui.geometry.Offset
+import androidx.ui.unit.dp
-private const val DpVisibilityThreshold = 0.1f
-private const val PxVisibilityThreshold = 0.5f
+internal const val DpVisibilityThreshold = 0.1f
+internal const val PxVisibilityThreshold = 0.5f
// Dp-based visibility threshold
-private val DpVisibilityThreshold1D = AnimationVector1D(DpVisibilityThreshold)
-private val DpVisibilityThreshold2D = AnimationVector2D(
- DpVisibilityThreshold,
- DpVisibilityThreshold
-)
private val DpVisibilityThreshold4D = AnimationVector4D(
DpVisibilityThreshold,
DpVisibilityThreshold,
@@ -55,11 +50,6 @@
)
// Px-based visibility threshold
-private val PxVisibilityThreshold1D = AnimationVector1D(PxVisibilityThreshold)
-private val PxVisibilityThreshold2D = AnimationVector2D(
- PxVisibilityThreshold,
- PxVisibilityThreshold
-)
private val PxVisibilityThreshold4D = AnimationVector4D(
PxVisibilityThreshold,
PxVisibilityThreshold,
@@ -67,6 +57,8 @@
PxVisibilityThreshold
)
+private val defaultAnimation = SpringSpec<Float>()
+
/**
* Fire-and-forget animation [Composable] for [Float]. Once such an animation is created, it will be
* positionally memoized, like other @[Composable]s. To trigger the animation, or alter the
@@ -78,8 +70,8 @@
* @sample androidx.ui.animation.samples.VisibilityTransition
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
- * animation will be used by default.
+ * @param animSpec The animation that will be used to change the value through time. [SpringSpec]
+ * will be used by default.
* @param visibilityThreshold An optional threshold for deciding when the animation value is
* considered close enough to the target.
* @param endListener An optional end listener to get notified when the animation is finished.
@@ -87,7 +79,7 @@
@Composable
fun animate(
target: Float,
- animBuilder: AnimationBuilder<Float> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Float> = defaultAnimation,
visibilityThreshold: Float = 0.01f,
endListener: ((Float) -> Unit)? = null
): Float {
@@ -95,16 +87,23 @@
val anim = remember {
AnimatedFloatModel(target, clock, visibilityThreshold)
}
+
+ val resolvedAnimSpec =
+ if (animSpec == defaultAnimation) {
+ remember(visibilityThreshold) { SpringSpec(visibilityThreshold = visibilityThreshold) }
+ } else {
+ animSpec
+ }
// TODO: Support changing animation while keeping the same target
onCommit(target) {
if (endListener != null) {
- anim.animateTo(target, animBuilder) { reason, value ->
+ anim.animateTo(target, resolvedAnimSpec) { reason, value ->
if (reason == AnimationEndReason.TargetReached) {
endListener.invoke(value)
}
}
} else {
- anim.animateTo(target, animBuilder)
+ anim.animateTo(target, resolvedAnimSpec)
}
}
return anim.value
@@ -121,18 +120,18 @@
* @sample androidx.ui.animation.samples.ColorTransition
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Color,
- animBuilder: AnimationBuilder<Color> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Color> = remember { SpringSpec() },
endListener: ((Color) -> Unit)? = null
): Color {
val converter = remember(target.colorSpace) { ColorToVectorConverter(target.colorSpace) }
- return animate(target, converter, animBuilder, endListener = endListener)
+ return animate(target, converter, animSpec, endListener = endListener)
}
/**
@@ -146,17 +145,19 @@
* val height : Dp = animate(if (collapsed) 10.dp else 20.dp)
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Dp,
- animBuilder: AnimationBuilder<Dp> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Dp> = remember {
+ SpringSpec(visibilityThreshold = DpVisibilityThreshold.dp)
+ },
endListener: ((Dp) -> Unit)? = null
): Dp {
- return animate(target, DpToVectorConverter, animBuilder, DpVisibilityThreshold1D, endListener)
+ return animate(target, DpToVectorConverter, animSpec, endListener = endListener)
}
/**
@@ -171,18 +172,23 @@
* if (selected) Position(0.dp, 0.dp) else Position(20.dp, 20.dp))
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Position,
- animBuilder: AnimationBuilder<Position> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Position> = remember {
+ SpringSpec(
+ visibilityThreshold = Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp)
+ )
+ },
endListener: ((Position) -> Unit)? = null
): Position {
return animate(
- target, PositionToVectorConverter, animBuilder, DpVisibilityThreshold2D, endListener)
+ target, PositionToVectorConverter, animSpec, endListener = endListener
+ )
}
/**
@@ -197,17 +203,19 @@
* if (selected) Size(20f, 20f) else Size(10f, 10f))
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Size,
- animBuilder: AnimationBuilder<Size> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Size> = remember {
+ SpringSpec(visibilityThreshold = Size(PxVisibilityThreshold, PxVisibilityThreshold))
+ },
endListener: ((Size) -> Unit)? = null
): Size {
- return animate(target, SizeToVectorConverter, animBuilder, DpVisibilityThreshold2D, endListener)
+ return animate(target, SizeToVectorConverter, animSpec, endListener = endListener)
}
/**
@@ -222,50 +230,30 @@
* if (collapsed) Bounds(0.dp, 0.dp, 10.dp, 20.dp) else Bounds(0.dp, 0.dp, 100.dp, 200.dp))
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Bounds,
- animBuilder: AnimationBuilder<Bounds> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Bounds> = remember {
+ SpringSpec(
+ visibilityThreshold = BoundsToVectorConverter.convertFromVector
+ (DpVisibilityThreshold4D)
+ )
+ },
endListener: ((Bounds) -> Unit)? = null
): Bounds {
return animate(
target,
BoundsToVectorConverter,
- animBuilder,
- DpVisibilityThreshold4D,
- endListener
+ animSpec,
+ endListener = endListener
)
}
/**
- * Fire-and-forget animation [Composable] for pixels. Once such an animation is created, it will be
- * positionally memoized, like other @[Composable]s. To trigger the animation, or alter the
- * course of the animation, simply supply a different [target] to the [Composable].
- *
- * Note, [animate] is for simple animations that cannot be canceled. For cancellable animations
- * see [animatedValue].
- *
- * val height : Float = animate(if (collapsed) 10f else 20f)
- *
- * @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
- * animation will be used by default.
- * @param endListener An optional end listener to get notified when the animation is finished.
- */
-@Composable
-fun animate(
- target: Float,
- animBuilder: AnimationBuilder<Float> = remember { PhysicsBuilder() },
- endListener: ((Float) -> Unit)? = null
-): Float {
- return animate(target, PxToVectorConverter, animBuilder, PxVisibilityThreshold1D, endListener)
-}
-
-/**
* Fire-and-forget animation [Composable] for [Offset]. Once such an animation is created, it
* will be positionally memoized, like other @[Composable]s. To trigger the animation, or alter the
* course of the animation, simply supply a different [target] to the [Composable].
@@ -277,18 +265,21 @@
* if (selected) Offset(0.px, 0.px) else Offset(20.px, 20.px))
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Offset,
- animBuilder: AnimationBuilder<Offset> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Offset> = remember {
+ SpringSpec(visibilityThreshold = Offset(PxVisibilityThreshold, PxVisibilityThreshold))
+ },
endListener: ((Offset) -> Unit)? = null
): Offset {
return animate(
- target, PxPositionToVectorConverter, animBuilder, PxVisibilityThreshold2D, endListener)
+ target, OffsetToVectorConverter, animSpec, endListener = endListener
+ )
}
/**
@@ -303,19 +294,23 @@
* if (enabled) PxBounds(0.px, 0.px, 100.px, 100.px) else PxBounds(8.px, 8.px, 80.px, 80.px))
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: PxBounds,
- animBuilder: AnimationBuilder<PxBounds> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<PxBounds> = remember {
+ SpringSpec(
+ visibilityThreshold =
+ PxBoundsToVectorConverter.convertFromVector(PxVisibilityThreshold4D)
+ )
+ },
endListener: ((PxBounds) -> Unit)? = null
): PxBounds {
return animate(
- target, PxBoundsToVectorConverter, animBuilder, PxVisibilityThreshold4D,
- endListener
+ target, PxBoundsToVectorConverter, animSpec, endListener = endListener
)
}
@@ -328,19 +323,20 @@
* see [animatedValue].
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: Int,
- animBuilder: AnimationBuilder<Int> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<Int> = remember {
+ SpringSpec(visibilityThreshold = 1)
+ },
endListener: ((Int) -> Unit)? = null
): Int {
return animate(
- target, IntPxToVectorConverter, animBuilder, PxVisibilityThreshold1D,
- endListener
+ target, IntToVectorConverter, animSpec, endListener = endListener
)
}
@@ -353,19 +349,20 @@
* see [animatedValue].
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: IntOffset,
- animBuilder: AnimationBuilder<IntOffset> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<IntOffset> = remember {
+ SpringSpec(visibilityThreshold = IntOffset(1, 1))
+ },
endListener: ((IntOffset) -> Unit)? = null
): IntOffset {
return animate(
- target, IntPxPositionToVectorConverter, animBuilder, PxVisibilityThreshold2D,
- endListener
+ target, IntPxPositionToVectorConverter, animSpec, endListener = endListener
)
}
@@ -378,19 +375,20 @@
* see [animatedValue].
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param endListener An optional end listener to get notified when the animation is finished.
*/
@Composable
fun animate(
target: IntSize,
- animBuilder: AnimationBuilder<IntSize> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<IntSize> = remember {
+ SpringSpec(visibilityThreshold = IntSize(1, 1))
+ },
endListener: ((IntSize) -> Unit)? = null
): IntSize {
return animate(
- target, IntPxSizeToVectorConverter, animBuilder, PxVisibilityThreshold2D,
- endListener
+ target, IntSizeToVectorConverter, animSpec, endListener = endListener
)
}
@@ -403,7 +401,7 @@
* see [animatedValue].
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param visibilityThreshold An optional threshold to define when the animation value can be
* considered close enough to the target to end the animation.
@@ -412,16 +410,18 @@
@Composable
fun <T : AnimationVector> animate(
target: T,
- animBuilder: AnimationBuilder<T> = remember { PhysicsBuilder() },
+ animSpec: AnimationSpec<T> = remember {
+ android.util.Log.w("LTD", "visibility threshold: $visibilityThreshold")
+ SpringSpec(visibilityThreshold = visibilityThreshold)
+ },
visibilityThreshold: T? = null,
endListener: ((T) -> Unit)? = null
): T {
return animate(
target,
remember { TwoWayConverter<T, T>({ it }, { it }) },
- animBuilder,
- visibilityThreshold,
- endListener
+ animSpec,
+ endListener = endListener
)
}
@@ -436,7 +436,7 @@
* @sample androidx.ui.animation.samples.ArbitraryValueTypeTransition
*
* @param target Target value of the animation
- * @param animBuilder The animation that will be used to change the value through time. Physics
+ * @param animSpec The animation that will be used to change the value through time. Physics
* animation will be used by default.
* @param visibilityThreshold An optional threshold to define when the animation value can be
* considered close enough to the target to end the animation.
@@ -446,8 +446,10 @@
fun <T, V : AnimationVector> animate(
target: T,
converter: TwoWayConverter<T, V>,
- animBuilder: AnimationBuilder<T> = remember { PhysicsBuilder() },
- visibilityThreshold: V? = null,
+ animSpec: AnimationSpec<T> = remember {
+ SpringSpec(visibilityThreshold = visibilityThreshold)
+ },
+ visibilityThreshold: T? = null,
endListener: ((T) -> Unit)? = null
): T {
val clock = AnimationClockAmbient.current.asDisposableClock()
@@ -457,13 +459,13 @@
// TODO: Support changing animation while keeping the same target
onCommit(target) {
if (endListener != null) {
- anim.animateTo(target, animBuilder) { reason, value ->
+ anim.animateTo(target, animSpec) { reason, value ->
if (reason == AnimationEndReason.TargetReached) {
endListener.invoke(value)
}
}
} else {
- anim.animateTo(target, animBuilder)
+ anim.animateTo(target, animSpec)
}
}
return anim.value
diff --git a/ui/ui-animation/src/test/java/androidx/ui/animation/ConverterTest.kt b/ui/ui-animation/src/test/java/androidx/ui/animation/ConverterTest.kt
index 05e03eb..2b8d9fd 100644
--- a/ui/ui-animation/src/test/java/androidx/ui/animation/ConverterTest.kt
+++ b/ui/ui-animation/src/test/java/androidx/ui/animation/ConverterTest.kt
@@ -51,15 +51,6 @@
}
@Test
- fun testPxConverter() {
- val value = Random.nextFloat()
- assertEquals(PxToVectorConverter.convertFromVector(AnimationVector1D(value)), value)
-
- val value2 = Random.nextFloat()
- assertEquals(PxToVectorConverter.convertToVector(value2), AnimationVector1D(value2))
- }
-
- @Test
fun testDpConverter() {
val value = Random.nextFloat()
assertEquals(DpToVectorConverter.convertFromVector(AnimationVector1D(value)), value.dp)
@@ -69,12 +60,12 @@
}
@Test
- fun testPxPositionConverter() {
+ fun testOffsetConverter() {
val x = Random.nextFloat()
val y = Random.nextFloat()
assertEquals(Offset(x, y),
- PxPositionToVectorConverter.convertFromVector(AnimationVector2D(x, y)))
+ OffsetToVectorConverter.convertFromVector(AnimationVector2D(x, y)))
assertEquals(AnimationVector2D(x, y),
- PxPositionToVectorConverter.convertToVector(Offset(x, y)))
+ OffsetToVectorConverter.convertToVector(Offset(x, y)))
}
}
\ No newline at end of file
diff --git a/ui/ui-animation/src/test/java/androidx/ui/animation/PropertyKeyTest.kt b/ui/ui-animation/src/test/java/androidx/ui/animation/PropertyKeyTest.kt
index f7ccf22..34f135c 100644
--- a/ui/ui-animation/src/test/java/androidx/ui/animation/PropertyKeyTest.kt
+++ b/ui/ui-animation/src/test/java/androidx/ui/animation/PropertyKeyTest.kt
@@ -20,6 +20,7 @@
import androidx.animation.ManualAnimationClock
import androidx.animation.createAnimation
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.ui.geometry.Rect
import junit.framework.TestCase.assertEquals
import org.junit.Test
@@ -43,10 +44,10 @@
this[rectProp] = end
}
transition {
- rectProp using tween {
- duration = 400
+ rectProp using tween(
+ durationMillis = 400,
easing = FastOutLinearInEasing
- }
+ )
}
}
diff --git a/ui/ui-core/api/0.1.0-dev02.txt b/ui/ui-core/api/0.1.0-dev02.txt
index 4a77f98..ae20b6b 100644
--- a/ui/ui-core/api/0.1.0-dev02.txt
+++ b/ui/ui-core/api/0.1.0-dev02.txt
@@ -10,6 +10,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.VertexMode[] values();
enum_constant public static final androidx.ui.VertexMode triangleFan;
enum_constant public static final androidx.ui.VertexMode triangleStrip;
enum_constant public static final androidx.ui.VertexMode triangles;
@@ -60,6 +62,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -70,6 +74,8 @@
public enum Alignment {
method public final androidx.ui.core.IntPxPosition align(androidx.ui.core.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -114,7 +120,7 @@
method public androidx.ui.core.IntPx getMaxWidth();
method public androidx.ui.core.IntPx getMinHeight();
method public androidx.ui.core.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,6 +194,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -211,7 +219,7 @@
method public inline operator float times(androidx.ui.core.Dp other);
method public inline operator float times-KkBJKWw(float other);
method public inline operator androidx.ui.core.Dp unaryMinus();
- field public static final androidx.ui.core.Dp.Companion! Companion;
+ field public static final androidx.ui.core.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -324,7 +332,7 @@
method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
method public operator androidx.ui.core.Duration times(int factor);
method public operator androidx.ui.core.Duration times(double factor);
- field public static final androidx.ui.core.Duration.Companion! Companion;
+ field public static final androidx.ui.core.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -429,7 +437,7 @@
method public operator androidx.ui.core.IntPx times(double other);
method public operator androidx.ui.core.IntPx times(int other);
method public operator androidx.ui.core.IntPx unaryMinus();
- field public static final androidx.ui.core.IntPx.Companion! Companion;
+ field public static final androidx.ui.core.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -489,7 +497,7 @@
method public inline operator androidx.ui.core.IntPxPosition unaryMinus();
property public final inline androidx.ui.core.IntPx x;
property public final inline androidx.ui.core.IntPx y;
- field public static final androidx.ui.core.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.core.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -540,6 +548,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -593,7 +603,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public androidx.ui.core.Modifier wraps(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public abstract class Placeable {
@@ -606,7 +616,7 @@
property public final androidx.ui.core.IntPx height;
property public abstract androidx.ui.core.IntPxSize size;
property public final androidx.ui.core.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -617,6 +627,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -693,7 +705,7 @@
method public inline operator float times(androidx.ui.core.Px other);
method public inline operator float times-kVJEwbQ(float other);
method public inline operator androidx.ui.core.Px unaryMinus();
- field public static final androidx.ui.core.Px.Companion! Companion;
+ field public static final androidx.ui.core.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -798,7 +810,7 @@
method public inline operator androidx.ui.core.PxPosition unaryMinus();
property public final inline androidx.ui.core.Px x;
property public final inline androidx.ui.core.Px y;
- field public static final androidx.ui.core.PxPosition.Companion! Companion;
+ field public static final androidx.ui.core.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -818,7 +830,7 @@
method public inline operator androidx.ui.core.PxSize times(double other);
property public final inline androidx.ui.core.Px height;
property public final inline androidx.ui.core.Px width;
- field public static final androidx.ui.core.PxSize.Companion! Companion;
+ field public static final androidx.ui.core.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -878,7 +890,7 @@
method public inline operator androidx.ui.core.Sp times(float other);
method public inline operator androidx.ui.core.Sp times(int other);
method public inline operator androidx.ui.core.Sp unaryMinus();
- field public static final androidx.ui.core.Sp.Companion! Companion;
+ field public static final androidx.ui.core.Sp.Companion Companion;
}
public static final class Sp.Companion {
@@ -924,7 +936,7 @@
method public androidx.ui.core.Velocity copy(androidx.ui.core.PxPosition pixelsPerSecond);
method public androidx.ui.core.PxPosition getPixelsPerSecond();
method public operator androidx.ui.core.Velocity unaryMinus();
- field public static final androidx.ui.core.Velocity.Companion! Companion;
+ field public static final androidx.ui.core.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
@@ -965,7 +977,7 @@
method public androidx.ui.engine.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.engine.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Offset unaryMinus();
- field public static final androidx.ui.engine.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -1058,7 +1070,7 @@
method @Deprecated public androidx.ui.engine.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -1112,7 +1124,7 @@
method public operator androidx.ui.engine.geometry.Radius times(float operand);
method public androidx.ui.engine.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Radius unaryMinus();
- field public static final androidx.ui.engine.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -1165,7 +1177,7 @@
method public androidx.ui.engine.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -1218,7 +1230,7 @@
method public final androidx.ui.engine.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.engine.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
@@ -1251,6 +1263,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -1283,6 +1297,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -1343,6 +1359,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -1361,7 +1379,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -1411,6 +1429,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -1434,12 +1454,16 @@
}
public enum ImageByteFormat {
+ method public static androidx.ui.graphics.ImageByteFormat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageByteFormat[] values();
enum_constant public static final androidx.ui.graphics.ImageByteFormat png;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawRgba;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawUnmodified;
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -1451,6 +1475,8 @@
}
public enum ImageRepeat {
+ method public static androidx.ui.graphics.ImageRepeat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageRepeat[] values();
enum_constant public static final androidx.ui.graphics.ImageRepeat noRepeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeatX;
@@ -1468,7 +1494,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -1521,6 +1547,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -1565,7 +1593,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.vectormath64.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -1573,11 +1601,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -1600,6 +1632,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -1649,12 +1683,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -1662,6 +1700,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -1678,6 +1718,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -1685,6 +1727,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -1749,7 +1793,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -1779,10 +1823,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -1880,6 +1926,8 @@
public enum PathCommand {
method public final char toKey();
+ method public static androidx.ui.graphics.vector.PathCommand valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vector.PathCommand[] values();
enum_constant public static final androidx.ui.graphics.vector.PathCommand ArcTo;
enum_constant public static final androidx.ui.graphics.vector.PathCommand Close;
enum_constant public static final androidx.ui.graphics.vector.PathCommand CurveTo;
@@ -2005,6 +2053,8 @@
package androidx.ui.text.style {
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
@@ -2044,7 +2094,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
@@ -2111,7 +2161,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix2 unaryMinus();
property public final inline java.util.List<java.lang.Float> m2storage;
- field public static final androidx.ui.vectormath64.Matrix2.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix2.Companion Companion;
}
public static final class Matrix2.Companion {
@@ -2151,7 +2201,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.vectormath64.Matrix3.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -2231,7 +2281,7 @@
property public final inline androidx.ui.vectormath64.Vector3 translation;
property public final inline androidx.ui.vectormath64.Vector3 up;
property public final inline androidx.ui.vectormath64.Matrix3 upperLeft;
- field public static final androidx.ui.vectormath64.Matrix4.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -2258,6 +2308,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.vectormath64.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.MatrixColumn[] values();
enum_constant public static final androidx.ui.vectormath64.MatrixColumn W;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn X;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn Y;
@@ -2550,6 +2602,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.vectormath64.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.VectorComponent[] values();
enum_constant public static final androidx.ui.vectormath64.VectorComponent A;
enum_constant public static final androidx.ui.vectormath64.VectorComponent B;
enum_constant public static final androidx.ui.vectormath64.VectorComponent G;
diff --git a/ui/ui-core/api/0.1.0-dev04.txt b/ui/ui-core/api/0.1.0-dev04.txt
index aaa0203..11e219e 100644
--- a/ui/ui-core/api/0.1.0-dev04.txt
+++ b/ui/ui-core/api/0.1.0-dev04.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -70,7 +74,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -102,6 +106,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -160,6 +166,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -212,7 +220,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
@@ -229,7 +237,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -240,6 +248,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -300,6 +310,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -308,6 +320,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/0.1.0-dev06.txt b/ui/ui-core/api/0.1.0-dev06.txt
index 824fc1d..8194c44 100644
--- a/ui/ui-core/api/0.1.0-dev06.txt
+++ b/ui/ui-core/api/0.1.0-dev06.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -167,6 +173,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -226,7 +234,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ModifierScope extends androidx.ui.unit.Density {
@@ -250,7 +258,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -261,6 +269,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -323,6 +333,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -331,6 +343,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/0.1.0-dev07.txt b/ui/ui-core/api/0.1.0-dev07.txt
index 983a5a8..8393acef 100644
--- a/ui/ui-core/api/0.1.0-dev07.txt
+++ b/ui/ui-core/api/0.1.0-dev07.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -200,6 +206,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -253,7 +261,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface OnChildPositionedModifier extends androidx.ui.core.Modifier.Element {
@@ -285,7 +293,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -300,6 +308,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -362,6 +372,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -370,6 +382,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/0.1.0-dev08.txt b/ui/ui-core/api/0.1.0-dev08.txt
index ab92ddb..39edb16 100644
--- a/ui/ui-core/api/0.1.0-dev08.txt
+++ b/ui/ui-core/api/0.1.0-dev08.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -204,6 +210,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -246,7 +254,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -290,7 +298,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -305,6 +313,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -364,7 +374,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -381,6 +391,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -389,6 +401,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/0.1.0-dev09.txt b/ui/ui-core/api/0.1.0-dev09.txt
index 88760f7..4c5fac90 100644
--- a/ui/ui-core/api/0.1.0-dev09.txt
+++ b/ui/ui-core/api/0.1.0-dev09.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -151,7 +153,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,7 +190,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -217,6 +219,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -326,6 +330,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -385,7 +391,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -433,7 +439,7 @@
property protected abstract androidx.ui.unit.IntPxSize measuredSize;
property protected abstract androidx.ui.core.Constraints measurementConstraints;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -448,6 +454,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -509,7 +517,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -533,7 +541,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -550,6 +558,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -566,6 +576,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/0.1.0-dev10.txt b/ui/ui-core/api/0.1.0-dev10.txt
index 0de3d63..cb80c19 100644
--- a/ui/ui-core/api/0.1.0-dev10.txt
+++ b/ui/ui-core/api/0.1.0-dev10.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -149,7 +151,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -172,7 +174,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -221,7 +223,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -250,6 +252,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -370,6 +374,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -430,7 +436,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -497,6 +503,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -560,7 +568,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -587,7 +595,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -613,6 +621,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -629,6 +639,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -662,7 +674,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -687,7 +699,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public class SemanticsPropertyKey<T> implements kotlin.properties.ReadWriteProperty<androidx.ui.semantics.SemanticsPropertyReceiver,T> {
diff --git a/ui/ui-core/api/0.1.0-dev11.txt b/ui/ui-core/api/0.1.0-dev11.txt
index 3479729..2420dad 100644
--- a/ui/ui-core/api/0.1.0-dev11.txt
+++ b/ui/ui-core/api/0.1.0-dev11.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -97,7 +99,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -241,7 +243,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -286,6 +288,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -364,6 +368,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -603,7 +609,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -709,7 +715,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -764,6 +770,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -868,7 +876,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -899,7 +907,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -1039,7 +1047,7 @@
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.LongPressFiredEvent INSTANCE;
}
public final class LongPressGestureFilterKt {
@@ -1121,6 +1129,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1298,7 +1308,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1331,6 +1341,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -1347,6 +1359,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -1372,6 +1386,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -1643,7 +1659,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -1672,7 +1688,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/0.1.0-dev12.txt b/ui/ui-core/api/0.1.0-dev12.txt
index 1e252fe..6d1d572 100644
--- a/ui/ui-core/api/0.1.0-dev12.txt
+++ b/ui/ui-core/api/0.1.0-dev12.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -219,7 +221,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -254,6 +256,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -308,6 +312,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -549,7 +555,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -653,7 +659,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -704,6 +710,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -783,7 +791,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -815,7 +823,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -892,6 +900,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -916,6 +926,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1048,13 +1060,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1083,6 +1097,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1116,7 +1132,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1706,6 +1722,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1878,7 +1896,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1912,6 +1930,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2178,7 +2198,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -2209,7 +2229,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/0.1.0-dev14.txt b/ui/ui-core/api/0.1.0-dev14.txt
index 0b0b3f7..ff1f171 100644
--- a/ui/ui-core/api/0.1.0-dev14.txt
+++ b/ui/ui-core/api/0.1.0-dev14.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -166,7 +168,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -256,7 +258,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -290,6 +292,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -342,6 +346,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -406,18 +412,6 @@
method public static inline androidx.ui.geometry.Offset getPositionInRoot(androidx.ui.core.LayoutCoordinates);
}
- public final class LayoutIdKt {
- method public static Object? getId(androidx.ui.core.Measurable);
- method @Deprecated public static Object? getTag(androidx.ui.core.Measurable);
- method @androidx.compose.Stable public static androidx.ui.core.Modifier layoutId(androidx.ui.core.Modifier, Object id);
- method @Deprecated @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
- }
-
- public interface LayoutIdParentData {
- method public Object getId();
- property public abstract Object id;
- }
-
public final class LayoutKt {
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
@@ -503,6 +497,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -530,8 +526,13 @@
method public static androidx.ui.core.LayoutNode? findClosestParentNode(androidx.ui.core.LayoutNode, kotlin.jvm.functions.Function1<? super androidx.ui.core.LayoutNode,java.lang.Boolean> selector);
}
- @Deprecated public interface LayoutTagParentData {
- method @Deprecated public Object getTag();
+ public final class LayoutTagKt {
+ method public static Object? getTag(androidx.ui.core.Measurable);
+ method @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
+ }
+
+ public interface LayoutTagParentData {
+ method public Object getTag();
property public abstract Object tag;
}
@@ -584,7 +585,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -684,7 +685,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -734,6 +735,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -826,7 +829,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -889,6 +892,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -913,6 +918,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1045,13 +1052,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1080,6 +1089,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1113,7 +1124,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1706,6 +1717,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1873,7 +1886,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1907,6 +1920,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2209,7 +2224,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsKt {
@@ -2233,7 +2248,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/0.1.0-dev15.txt b/ui/ui-core/api/0.1.0-dev15.txt
index e08d741..84a0dbb 100644
--- a/ui/ui-core/api/0.1.0-dev15.txt
+++ b/ui/ui-core/api/0.1.0-dev15.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -248,7 +250,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -282,6 +284,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -334,6 +338,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -350,6 +356,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -411,10 +420,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -491,6 +503,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -558,12 +572,12 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
}
@androidx.compose.Stable public interface Modifier {
@@ -572,7 +586,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -622,12 +636,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -659,6 +676,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -672,7 +690,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -722,6 +740,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -813,7 +833,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -842,7 +862,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -876,6 +896,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -900,6 +922,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -949,7 +973,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -977,7 +1004,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1013,6 +1040,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1032,13 +1070,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1067,6 +1128,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1100,7 +1163,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1693,6 +1756,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1759,12 +1824,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1862,7 +1927,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1896,6 +1961,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2201,7 +2268,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2221,7 +2288,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/api_lint.ignore b/ui/ui-core/api/api_lint.ignore
index 158eb11..4151ff7 100644
--- a/ui/ui-core/api/api_lint.ignore
+++ b/ui/ui-core/api/api_lint.ignore
@@ -29,8 +29,12 @@
Class should be named ScaleCallback
-ContextFirst: androidx.ui.core.WrapperKt#subcomposeInto(androidx.ui.core.LayoutNode, android.content.Context, androidx.compose.CompositionReference, kotlin.jvm.functions.Function0<kotlin.Unit>) parameter #1:
- Context is distinct, so it must be the first argument (method `subcomposeInto`)
+ListenerLast: androidx.ui.core.gesture.ScrollGestureFilterKt#scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>, boolean) parameter #2:
+ Listeners should always be at end of argument list (method `scrollGestureFilter`)
+ListenerLast: androidx.ui.core.gesture.ScrollGestureFilterKt#scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>, boolean) parameter #3:
+ Listeners should always be at end of argument list (method `scrollGestureFilter`)
+ListenerLast: androidx.ui.core.gesture.ScrollGestureFilterKt#scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>, boolean) parameter #4:
+ Listeners should always be at end of argument list (method `scrollGestureFilter`)
MissingNullability: androidx.ui.core.Measured#constructor-impl(androidx.ui.core.Placeable):
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index e08d741..84a0dbb 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -248,7 +250,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -282,6 +284,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -334,6 +338,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -350,6 +356,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -411,10 +420,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -491,6 +503,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -558,12 +572,12 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
}
@androidx.compose.Stable public interface Modifier {
@@ -572,7 +586,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -622,12 +636,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -659,6 +676,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -672,7 +690,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -722,6 +740,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -813,7 +833,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -842,7 +862,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -876,6 +896,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -900,6 +922,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -949,7 +973,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -977,7 +1004,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1013,6 +1040,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1032,13 +1070,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1067,6 +1128,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1100,7 +1163,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1693,6 +1756,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1759,12 +1824,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1862,7 +1927,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1896,6 +1961,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2201,7 +2268,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2221,7 +2288,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev02.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev02.txt
index 4a77f98..ae20b6b 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev02.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev02.txt
@@ -10,6 +10,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.VertexMode[] values();
enum_constant public static final androidx.ui.VertexMode triangleFan;
enum_constant public static final androidx.ui.VertexMode triangleStrip;
enum_constant public static final androidx.ui.VertexMode triangles;
@@ -60,6 +62,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -70,6 +74,8 @@
public enum Alignment {
method public final androidx.ui.core.IntPxPosition align(androidx.ui.core.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -114,7 +120,7 @@
method public androidx.ui.core.IntPx getMaxWidth();
method public androidx.ui.core.IntPx getMinHeight();
method public androidx.ui.core.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,6 +194,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -211,7 +219,7 @@
method public inline operator float times(androidx.ui.core.Dp other);
method public inline operator float times-KkBJKWw(float other);
method public inline operator androidx.ui.core.Dp unaryMinus();
- field public static final androidx.ui.core.Dp.Companion! Companion;
+ field public static final androidx.ui.core.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -324,7 +332,7 @@
method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
method public operator androidx.ui.core.Duration times(int factor);
method public operator androidx.ui.core.Duration times(double factor);
- field public static final androidx.ui.core.Duration.Companion! Companion;
+ field public static final androidx.ui.core.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -429,7 +437,7 @@
method public operator androidx.ui.core.IntPx times(double other);
method public operator androidx.ui.core.IntPx times(int other);
method public operator androidx.ui.core.IntPx unaryMinus();
- field public static final androidx.ui.core.IntPx.Companion! Companion;
+ field public static final androidx.ui.core.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -489,7 +497,7 @@
method public inline operator androidx.ui.core.IntPxPosition unaryMinus();
property public final inline androidx.ui.core.IntPx x;
property public final inline androidx.ui.core.IntPx y;
- field public static final androidx.ui.core.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.core.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -540,6 +548,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -593,7 +603,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public androidx.ui.core.Modifier wraps(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public abstract class Placeable {
@@ -606,7 +616,7 @@
property public final androidx.ui.core.IntPx height;
property public abstract androidx.ui.core.IntPxSize size;
property public final androidx.ui.core.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -617,6 +627,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -693,7 +705,7 @@
method public inline operator float times(androidx.ui.core.Px other);
method public inline operator float times-kVJEwbQ(float other);
method public inline operator androidx.ui.core.Px unaryMinus();
- field public static final androidx.ui.core.Px.Companion! Companion;
+ field public static final androidx.ui.core.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -798,7 +810,7 @@
method public inline operator androidx.ui.core.PxPosition unaryMinus();
property public final inline androidx.ui.core.Px x;
property public final inline androidx.ui.core.Px y;
- field public static final androidx.ui.core.PxPosition.Companion! Companion;
+ field public static final androidx.ui.core.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -818,7 +830,7 @@
method public inline operator androidx.ui.core.PxSize times(double other);
property public final inline androidx.ui.core.Px height;
property public final inline androidx.ui.core.Px width;
- field public static final androidx.ui.core.PxSize.Companion! Companion;
+ field public static final androidx.ui.core.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -878,7 +890,7 @@
method public inline operator androidx.ui.core.Sp times(float other);
method public inline operator androidx.ui.core.Sp times(int other);
method public inline operator androidx.ui.core.Sp unaryMinus();
- field public static final androidx.ui.core.Sp.Companion! Companion;
+ field public static final androidx.ui.core.Sp.Companion Companion;
}
public static final class Sp.Companion {
@@ -924,7 +936,7 @@
method public androidx.ui.core.Velocity copy(androidx.ui.core.PxPosition pixelsPerSecond);
method public androidx.ui.core.PxPosition getPixelsPerSecond();
method public operator androidx.ui.core.Velocity unaryMinus();
- field public static final androidx.ui.core.Velocity.Companion! Companion;
+ field public static final androidx.ui.core.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
@@ -965,7 +977,7 @@
method public androidx.ui.engine.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.engine.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Offset unaryMinus();
- field public static final androidx.ui.engine.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -1058,7 +1070,7 @@
method @Deprecated public androidx.ui.engine.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -1112,7 +1124,7 @@
method public operator androidx.ui.engine.geometry.Radius times(float operand);
method public androidx.ui.engine.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Radius unaryMinus();
- field public static final androidx.ui.engine.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -1165,7 +1177,7 @@
method public androidx.ui.engine.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -1218,7 +1230,7 @@
method public final androidx.ui.engine.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.engine.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
@@ -1251,6 +1263,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -1283,6 +1297,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -1343,6 +1359,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -1361,7 +1379,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -1411,6 +1429,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -1434,12 +1454,16 @@
}
public enum ImageByteFormat {
+ method public static androidx.ui.graphics.ImageByteFormat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageByteFormat[] values();
enum_constant public static final androidx.ui.graphics.ImageByteFormat png;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawRgba;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawUnmodified;
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -1451,6 +1475,8 @@
}
public enum ImageRepeat {
+ method public static androidx.ui.graphics.ImageRepeat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageRepeat[] values();
enum_constant public static final androidx.ui.graphics.ImageRepeat noRepeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeatX;
@@ -1468,7 +1494,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -1521,6 +1547,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -1565,7 +1593,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.vectormath64.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -1573,11 +1601,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -1600,6 +1632,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -1649,12 +1683,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -1662,6 +1700,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -1678,6 +1718,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -1685,6 +1727,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -1749,7 +1793,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -1779,10 +1823,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -1880,6 +1926,8 @@
public enum PathCommand {
method public final char toKey();
+ method public static androidx.ui.graphics.vector.PathCommand valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vector.PathCommand[] values();
enum_constant public static final androidx.ui.graphics.vector.PathCommand ArcTo;
enum_constant public static final androidx.ui.graphics.vector.PathCommand Close;
enum_constant public static final androidx.ui.graphics.vector.PathCommand CurveTo;
@@ -2005,6 +2053,8 @@
package androidx.ui.text.style {
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
@@ -2044,7 +2094,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
@@ -2111,7 +2161,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix2 unaryMinus();
property public final inline java.util.List<java.lang.Float> m2storage;
- field public static final androidx.ui.vectormath64.Matrix2.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix2.Companion Companion;
}
public static final class Matrix2.Companion {
@@ -2151,7 +2201,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.vectormath64.Matrix3.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -2231,7 +2281,7 @@
property public final inline androidx.ui.vectormath64.Vector3 translation;
property public final inline androidx.ui.vectormath64.Vector3 up;
property public final inline androidx.ui.vectormath64.Matrix3 upperLeft;
- field public static final androidx.ui.vectormath64.Matrix4.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -2258,6 +2308,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.vectormath64.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.MatrixColumn[] values();
enum_constant public static final androidx.ui.vectormath64.MatrixColumn W;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn X;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn Y;
@@ -2550,6 +2602,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.vectormath64.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.VectorComponent[] values();
enum_constant public static final androidx.ui.vectormath64.VectorComponent A;
enum_constant public static final androidx.ui.vectormath64.VectorComponent B;
enum_constant public static final androidx.ui.vectormath64.VectorComponent G;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev04.txt
index aaa0203..11e219e 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev04.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -70,7 +74,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -102,6 +106,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -160,6 +166,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -212,7 +220,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
@@ -229,7 +237,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -240,6 +248,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -300,6 +310,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -308,6 +320,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev06.txt
index 824fc1d..8194c44 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev06.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -167,6 +173,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -226,7 +234,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ModifierScope extends androidx.ui.unit.Density {
@@ -250,7 +258,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -261,6 +269,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -323,6 +333,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -331,6 +343,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev07.txt
index 983a5a8..8393acef 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev07.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -200,6 +206,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -253,7 +261,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface OnChildPositionedModifier extends androidx.ui.core.Modifier.Element {
@@ -285,7 +293,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -300,6 +308,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -362,6 +372,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -370,6 +382,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev08.txt
index ab92ddb..39edb16 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev08.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -204,6 +210,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -246,7 +254,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -290,7 +298,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -305,6 +313,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -364,7 +374,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -381,6 +391,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -389,6 +401,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev09.txt
index 88760f7..4c5fac90 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev09.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -151,7 +153,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,7 +190,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -217,6 +219,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -326,6 +330,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -385,7 +391,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -433,7 +439,7 @@
property protected abstract androidx.ui.unit.IntPxSize measuredSize;
property protected abstract androidx.ui.core.Constraints measurementConstraints;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -448,6 +454,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -509,7 +517,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -533,7 +541,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -550,6 +558,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -566,6 +576,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev10.txt
index 0de3d63..cb80c19 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev10.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -149,7 +151,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -172,7 +174,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -221,7 +223,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -250,6 +252,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -370,6 +374,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -430,7 +436,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -497,6 +503,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -560,7 +568,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -587,7 +595,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -613,6 +621,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -629,6 +639,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -662,7 +674,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -687,7 +699,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public class SemanticsPropertyKey<T> implements kotlin.properties.ReadWriteProperty<androidx.ui.semantics.SemanticsPropertyReceiver,T> {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev11.txt
index 99994ab..64ff252 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev11.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -97,7 +99,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -241,7 +243,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -287,6 +289,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -365,6 +369,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -604,7 +610,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -711,7 +717,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -766,6 +772,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -870,7 +878,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -901,7 +909,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -1041,7 +1049,7 @@
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.LongPressFiredEvent INSTANCE;
}
public final class LongPressGestureFilterKt {
@@ -1123,6 +1131,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1300,7 +1310,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1333,6 +1343,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -1349,6 +1361,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -1374,6 +1388,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -1645,7 +1661,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -1674,7 +1690,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
index 1f56b76..91dd483 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -219,7 +221,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -255,6 +257,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -309,6 +313,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -550,7 +556,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -655,7 +661,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -706,6 +712,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -785,7 +793,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -817,7 +825,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -894,6 +902,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -918,6 +928,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1050,13 +1062,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1085,6 +1099,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1118,7 +1134,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1708,6 +1724,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1880,7 +1898,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1914,6 +1932,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2180,7 +2200,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -2211,7 +2231,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev14.txt
index 905873c..83c8e43 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev14.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -166,7 +168,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -256,7 +258,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -291,6 +293,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -343,6 +347,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -407,18 +413,6 @@
method public static inline androidx.ui.geometry.Offset getPositionInRoot(androidx.ui.core.LayoutCoordinates);
}
- public final class LayoutIdKt {
- method public static Object? getId(androidx.ui.core.Measurable);
- method @Deprecated public static Object? getTag(androidx.ui.core.Measurable);
- method @androidx.compose.Stable public static androidx.ui.core.Modifier layoutId(androidx.ui.core.Modifier, Object id);
- method @Deprecated @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
- }
-
- public interface LayoutIdParentData {
- method public Object getId();
- property public abstract Object id;
- }
-
public final class LayoutKt {
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
@@ -504,6 +498,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -531,8 +527,13 @@
method public static androidx.ui.core.LayoutNode? findClosestParentNode(androidx.ui.core.LayoutNode, kotlin.jvm.functions.Function1<? super androidx.ui.core.LayoutNode,java.lang.Boolean> selector);
}
- @Deprecated public interface LayoutTagParentData {
- method @Deprecated public Object getTag();
+ public final class LayoutTagKt {
+ method public static Object? getTag(androidx.ui.core.Measurable);
+ method @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
+ }
+
+ public interface LayoutTagParentData {
+ method public Object getTag();
property public abstract Object tag;
}
@@ -585,7 +586,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -686,7 +687,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -736,6 +737,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -828,7 +831,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -891,6 +894,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -915,6 +920,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1047,13 +1054,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1082,6 +1091,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1115,7 +1126,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1708,6 +1719,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1875,7 +1888,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1909,6 +1922,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2211,7 +2226,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsKt {
@@ -2235,7 +2250,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
index d5ea872..3f24027 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -248,7 +250,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -283,6 +285,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -335,6 +339,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -351,6 +357,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -412,10 +421,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -492,6 +504,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -559,12 +573,12 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
}
@androidx.compose.Stable public interface Modifier {
@@ -573,7 +587,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -623,12 +637,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -660,7 +677,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public void setShowLayoutBounds(boolean p);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -674,7 +691,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -724,6 +741,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -815,7 +834,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -844,7 +863,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -878,6 +897,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -902,6 +923,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -951,7 +974,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -979,7 +1005,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1015,6 +1041,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1034,13 +1071,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1069,6 +1129,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1102,7 +1164,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1695,6 +1757,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1761,12 +1825,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1864,7 +1928,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1898,6 +1962,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2203,7 +2269,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2223,7 +2289,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index d5ea872..3f24027 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -248,7 +250,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -283,6 +285,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -335,6 +339,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -351,6 +357,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -412,10 +421,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -492,6 +504,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -559,12 +573,12 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
}
@androidx.compose.Stable public interface Modifier {
@@ -573,7 +587,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -623,12 +637,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -660,7 +677,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public void setShowLayoutBounds(boolean p);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -674,7 +691,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -724,6 +741,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -815,7 +834,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -844,7 +863,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -878,6 +897,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -902,6 +923,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -951,7 +974,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -979,7 +1005,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1015,6 +1041,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1034,13 +1071,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1069,6 +1129,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1102,7 +1164,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1695,6 +1757,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1761,12 +1825,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1864,7 +1928,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1898,6 +1962,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2203,7 +2269,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2223,7 +2289,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev02.txt b/ui/ui-core/api/restricted_0.1.0-dev02.txt
index fd17ec8..3644965 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev02.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev02.txt
@@ -10,6 +10,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.VertexMode[] values();
enum_constant public static final androidx.ui.VertexMode triangleFan;
enum_constant public static final androidx.ui.VertexMode triangleStrip;
enum_constant public static final androidx.ui.VertexMode triangles;
@@ -60,6 +62,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -70,6 +74,8 @@
public enum Alignment {
method public final androidx.ui.core.IntPxPosition align(androidx.ui.core.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -114,7 +120,7 @@
method public androidx.ui.core.IntPx getMaxWidth();
method public androidx.ui.core.IntPx getMinHeight();
method public androidx.ui.core.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,6 +194,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -211,7 +219,7 @@
method public inline operator float times(androidx.ui.core.Dp other);
method public inline operator float times-KkBJKWw(float other);
method public inline operator androidx.ui.core.Dp unaryMinus();
- field public static final androidx.ui.core.Dp.Companion! Companion;
+ field public static final androidx.ui.core.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -324,7 +332,7 @@
method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
method public operator androidx.ui.core.Duration times(int factor);
method public operator androidx.ui.core.Duration times(double factor);
- field public static final androidx.ui.core.Duration.Companion! Companion;
+ field public static final androidx.ui.core.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -429,7 +437,7 @@
method public operator androidx.ui.core.IntPx times(double other);
method public operator androidx.ui.core.IntPx times(int other);
method public operator androidx.ui.core.IntPx unaryMinus();
- field public static final androidx.ui.core.IntPx.Companion! Companion;
+ field public static final androidx.ui.core.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -492,7 +500,7 @@
method public inline operator androidx.ui.core.IntPxPosition unaryMinus();
property public final inline androidx.ui.core.IntPx x;
property public final inline androidx.ui.core.IntPx y;
- field public static final androidx.ui.core.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.core.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -544,6 +552,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -597,7 +607,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public androidx.ui.core.Modifier wraps(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public abstract class Placeable {
@@ -610,7 +620,7 @@
property public final androidx.ui.core.IntPx height;
property public abstract androidx.ui.core.IntPxSize size;
property public final androidx.ui.core.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -621,6 +631,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -698,7 +710,7 @@
method public inline operator float times(androidx.ui.core.Px other);
method public inline operator float times-kVJEwbQ(float other);
method public inline operator androidx.ui.core.Px unaryMinus();
- field public static final androidx.ui.core.Px.Companion! Companion;
+ field public static final androidx.ui.core.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -804,7 +816,7 @@
method public inline operator androidx.ui.core.PxPosition unaryMinus();
property public final inline androidx.ui.core.Px x;
property public final inline androidx.ui.core.Px y;
- field public static final androidx.ui.core.PxPosition.Companion! Companion;
+ field public static final androidx.ui.core.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -825,7 +837,7 @@
method public inline operator androidx.ui.core.PxSize times(double other);
property public final inline androidx.ui.core.Px height;
property public final inline androidx.ui.core.Px width;
- field public static final androidx.ui.core.PxSize.Companion! Companion;
+ field public static final androidx.ui.core.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -886,7 +898,7 @@
method public inline operator androidx.ui.core.Sp times(float other);
method public inline operator androidx.ui.core.Sp times(int other);
method public inline operator androidx.ui.core.Sp unaryMinus();
- field public static final androidx.ui.core.Sp.Companion! Companion;
+ field public static final androidx.ui.core.Sp.Companion Companion;
}
public static final class Sp.Companion {
@@ -932,7 +944,7 @@
method public androidx.ui.core.Velocity copy(androidx.ui.core.PxPosition pixelsPerSecond);
method public androidx.ui.core.PxPosition getPixelsPerSecond();
method public operator androidx.ui.core.Velocity unaryMinus();
- field public static final androidx.ui.core.Velocity.Companion! Companion;
+ field public static final androidx.ui.core.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
@@ -973,7 +985,7 @@
method public androidx.ui.engine.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.engine.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Offset unaryMinus();
- field public static final androidx.ui.engine.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -1066,7 +1078,7 @@
method @Deprecated public androidx.ui.engine.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -1120,7 +1132,7 @@
method public operator androidx.ui.engine.geometry.Radius times(float operand);
method public androidx.ui.engine.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.engine.geometry.Radius unaryMinus();
- field public static final androidx.ui.engine.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -1173,7 +1185,7 @@
method public androidx.ui.engine.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.engine.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -1226,7 +1238,7 @@
method public final androidx.ui.engine.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.engine.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.engine.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
@@ -1259,6 +1271,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -1291,6 +1305,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -1351,6 +1367,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -1370,7 +1388,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -1420,6 +1438,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -1443,12 +1463,16 @@
}
public enum ImageByteFormat {
+ method public static androidx.ui.graphics.ImageByteFormat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageByteFormat[] values();
enum_constant public static final androidx.ui.graphics.ImageByteFormat png;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawRgba;
enum_constant public static final androidx.ui.graphics.ImageByteFormat rawUnmodified;
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -1460,6 +1484,8 @@
}
public enum ImageRepeat {
+ method public static androidx.ui.graphics.ImageRepeat valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageRepeat[] values();
enum_constant public static final androidx.ui.graphics.ImageRepeat noRepeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeat;
enum_constant public static final androidx.ui.graphics.ImageRepeat repeatX;
@@ -1477,7 +1503,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -1530,6 +1556,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -1574,7 +1602,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.vectormath64.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -1582,11 +1610,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -1609,6 +1641,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -1658,12 +1692,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -1671,6 +1709,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -1687,6 +1727,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -1694,6 +1736,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -1758,7 +1802,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -1788,10 +1832,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -1889,6 +1935,8 @@
public enum PathCommand {
method public final char toKey();
+ method public static androidx.ui.graphics.vector.PathCommand valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vector.PathCommand[] values();
enum_constant public static final androidx.ui.graphics.vector.PathCommand ArcTo;
enum_constant public static final androidx.ui.graphics.vector.PathCommand Close;
enum_constant public static final androidx.ui.graphics.vector.PathCommand CurveTo;
@@ -2014,6 +2062,8 @@
package androidx.ui.text.style {
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
@@ -2053,7 +2103,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
@@ -2120,7 +2170,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix2 unaryMinus();
property public final inline java.util.List<java.lang.Float> m2storage;
- field public static final androidx.ui.vectormath64.Matrix2.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix2.Companion Companion;
}
public static final class Matrix2.Companion {
@@ -2160,7 +2210,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.vectormath64.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.vectormath64.Matrix3.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -2240,7 +2290,7 @@
property public final inline androidx.ui.vectormath64.Vector3 translation;
property public final inline androidx.ui.vectormath64.Vector3 up;
property public final inline androidx.ui.vectormath64.Matrix3 upperLeft;
- field public static final androidx.ui.vectormath64.Matrix4.Companion! Companion;
+ field public static final androidx.ui.vectormath64.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -2267,6 +2317,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.vectormath64.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.MatrixColumn[] values();
enum_constant public static final androidx.ui.vectormath64.MatrixColumn W;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn X;
enum_constant public static final androidx.ui.vectormath64.MatrixColumn Y;
@@ -2559,6 +2611,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.vectormath64.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.vectormath64.VectorComponent[] values();
enum_constant public static final androidx.ui.vectormath64.VectorComponent A;
enum_constant public static final androidx.ui.vectormath64.VectorComponent B;
enum_constant public static final androidx.ui.vectormath64.VectorComponent G;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev04.txt b/ui/ui-core/api/restricted_0.1.0-dev04.txt
index aaa0203..11e219e 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev04.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomLeft;
enum_constant public static final androidx.ui.core.Alignment BottomRight;
@@ -70,7 +74,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -102,6 +106,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -160,6 +166,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -212,7 +220,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
@@ -229,7 +237,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -240,6 +248,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -300,6 +310,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -308,6 +320,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev06.txt b/ui/ui-core/api/restricted_0.1.0-dev06.txt
index 824fc1d..8194c44 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev06.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -167,6 +173,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -226,7 +234,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface ModifierScope extends androidx.ui.unit.Density {
@@ -250,7 +258,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -261,6 +269,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -323,6 +333,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -331,6 +343,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev07.txt b/ui/ui-core/api/restricted_0.1.0-dev07.txt
index 983a5a8..8393acef 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev07.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -200,6 +206,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -253,7 +261,7 @@
public static final class Modifier.None implements androidx.ui.core.Modifier {
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
- field public static final androidx.ui.core.Modifier.None! INSTANCE;
+ field public static final androidx.ui.core.Modifier.None INSTANCE;
}
public interface OnChildPositionedModifier extends androidx.ui.core.Modifier.Element {
@@ -285,7 +293,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -300,6 +308,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -362,6 +372,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -370,6 +382,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev08.txt b/ui/ui-core/api/restricted_0.1.0-dev08.txt
index ab92ddb..39edb16 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev08.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType EmailAddress;
enum_constant public static final androidx.ui.autofill.AutofillType Name;
}
@@ -39,6 +41,8 @@
public enum Alignment {
method public final androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = androidx.ui.core.LayoutDirection.Ltr);
+ method public static androidx.ui.core.Alignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Alignment[] values();
enum_constant public static final androidx.ui.core.Alignment BottomCenter;
enum_constant public static final androidx.ui.core.Alignment BottomEnd;
enum_constant public static final androidx.ui.core.Alignment BottomStart;
@@ -69,7 +73,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -108,6 +112,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -204,6 +210,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -246,7 +254,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -290,7 +298,7 @@
property public final androidx.ui.unit.IntPx height;
property public abstract androidx.ui.unit.IntPxSize size;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -305,6 +313,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -364,7 +374,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -381,6 +391,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -389,6 +401,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev09.txt b/ui/ui-core/api/restricted_0.1.0-dev09.txt
index 88760f7..4c5fac90 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev09.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -151,7 +153,7 @@
method public androidx.ui.unit.IntPx getMaxWidth();
method public androidx.ui.unit.IntPx getMinHeight();
method public androidx.ui.unit.IntPx getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -188,7 +190,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -217,6 +219,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -326,6 +330,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -385,7 +391,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -433,7 +439,7 @@
property protected abstract androidx.ui.unit.IntPxSize measuredSize;
property protected abstract androidx.ui.core.Constraints measurementConstraints;
property public final androidx.ui.unit.IntPx width;
- field public static final androidx.ui.core.Placeable.PlacementScope! PlacementScope;
+ field public static final androidx.ui.core.Placeable.PlacementScope PlacementScope;
}
public static final class Placeable.PlacementScope {
@@ -448,6 +454,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -509,7 +517,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -533,7 +541,7 @@
method public float getPivotFractionY();
property public final float pivotFractionX;
property public final float pivotFractionY;
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -550,6 +558,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -566,6 +576,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
diff --git a/ui/ui-core/api/restricted_0.1.0-dev10.txt b/ui/ui-core/api/restricted_0.1.0-dev10.txt
index 0de3d63..cb80c19 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev10.txt
@@ -29,6 +29,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -80,7 +82,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -149,7 +151,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -172,7 +174,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -221,7 +223,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -250,6 +252,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -370,6 +374,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -430,7 +436,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -497,6 +503,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -560,7 +568,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -587,7 +595,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -613,6 +621,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -629,6 +639,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -662,7 +674,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -687,7 +699,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public class SemanticsPropertyKey<T> implements kotlin.properties.ReadWriteProperty<androidx.ui.semantics.SemanticsPropertyReceiver,T> {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev11.txt b/ui/ui-core/api/restricted_0.1.0-dev11.txt
index ffb75b5..bb43dc1 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev11.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -97,7 +99,7 @@
method @androidx.compose.Immutable public androidx.ui.core.Alignment copy(float verticalBias, float horizontalBias);
method public float getHorizontalBias();
method public float getVerticalBias();
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -247,7 +249,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -307,6 +309,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -385,6 +389,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -428,11 +434,15 @@
}
@kotlin.PublishedApi internal enum IntrinsicMinMax {
+ method public static androidx.ui.core.IntrinsicMinMax valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicMinMax[] values();
enum_constant public static final androidx.ui.core.IntrinsicMinMax Max;
enum_constant public static final androidx.ui.core.IntrinsicMinMax Min;
}
@kotlin.PublishedApi internal enum IntrinsicWidthHeight {
+ method public static androidx.ui.core.IntrinsicWidthHeight valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicWidthHeight[] values();
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Height;
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Width;
}
@@ -659,7 +669,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -766,7 +776,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -821,6 +831,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -925,7 +937,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -956,7 +968,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -1096,7 +1108,7 @@
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.LongPressFiredEvent INSTANCE;
}
public final class LongPressGestureFilterKt {
@@ -1178,6 +1190,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1355,7 +1369,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1388,6 +1402,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -1404,6 +1420,8 @@
package androidx.ui.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.focus.FocusDetailedState Captured;
@@ -1429,6 +1447,8 @@
}
public enum FocusState {
+ method public static androidx.ui.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.focus.FocusState[] values();
enum_constant public static final androidx.ui.focus.FocusState Focused;
enum_constant public static final androidx.ui.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.focus.FocusState NotFocused;
@@ -1709,7 +1729,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -1738,7 +1758,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Enabled;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev12.txt b/ui/ui-core/api/restricted_0.1.0-dev12.txt
index a448078..ec39300 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev12.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntPxPosition align(androidx.ui.unit.IntPxSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -225,7 +227,7 @@
public interface ContentScale {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -275,6 +277,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -329,6 +333,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -368,11 +374,15 @@
}
@kotlin.PublishedApi internal enum IntrinsicMinMax {
+ method public static androidx.ui.core.IntrinsicMinMax valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicMinMax[] values();
enum_constant public static final androidx.ui.core.IntrinsicMinMax Max;
enum_constant public static final androidx.ui.core.IntrinsicMinMax Min;
}
@kotlin.PublishedApi internal enum IntrinsicWidthHeight {
+ method public static androidx.ui.core.IntrinsicWidthHeight valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicWidthHeight[] values();
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Height;
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Width;
}
@@ -604,7 +614,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -709,7 +719,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -760,6 +770,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -839,7 +851,7 @@
}
@Deprecated public interface ScaleFit extends androidx.ui.core.ContentScale {
- field @Deprecated public static final androidx.ui.core.ScaleFit.Companion! Companion;
+ field @Deprecated public static final androidx.ui.core.ScaleFit.Companion Companion;
}
@Deprecated public static final class ScaleFit.Companion {
@@ -871,7 +883,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -948,6 +960,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -972,6 +986,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1104,13 +1120,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1139,6 +1157,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1172,7 +1192,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1762,6 +1782,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1934,7 +1956,7 @@
property public final boolean isSemanticBoundary;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntPxSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1968,6 +1990,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2243,7 +2267,7 @@
public final class SemanticsActions {
ctor public SemanticsActions();
- field public static final androidx.ui.semantics.SemanticsActions.Companion! Companion;
+ field public static final androidx.ui.semantics.SemanticsActions.Companion Companion;
}
public static final class SemanticsActions.Companion {
@@ -2274,7 +2298,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Hidden;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev14.txt b/ui/ui-core/api/restricted_0.1.0-dev14.txt
index 2f45773..c35cdb2 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev14.txt
@@ -46,6 +46,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -92,7 +94,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -121,7 +123,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -166,7 +168,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -262,7 +264,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -311,6 +313,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -363,6 +367,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -402,11 +408,15 @@
}
@kotlin.PublishedApi internal enum IntrinsicMinMax {
+ method public static androidx.ui.core.IntrinsicMinMax valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicMinMax[] values();
enum_constant public static final androidx.ui.core.IntrinsicMinMax Max;
enum_constant public static final androidx.ui.core.IntrinsicMinMax Min;
}
@kotlin.PublishedApi internal enum IntrinsicWidthHeight {
+ method public static androidx.ui.core.IntrinsicWidthHeight valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicWidthHeight[] values();
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Height;
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Width;
}
@@ -455,18 +465,6 @@
method public static inline androidx.ui.geometry.Offset getPositionInRoot(androidx.ui.core.LayoutCoordinates);
}
- public final class LayoutIdKt {
- method public static Object? getId(androidx.ui.core.Measurable);
- method @Deprecated public static Object? getTag(androidx.ui.core.Measurable);
- method @androidx.compose.Stable public static androidx.ui.core.Modifier layoutId(androidx.ui.core.Modifier, Object id);
- method @Deprecated @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
- }
-
- public interface LayoutIdParentData {
- method public Object getId();
- property public abstract Object id;
- }
-
public final class LayoutKt {
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
@@ -552,6 +550,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -579,8 +579,13 @@
method public static androidx.ui.core.LayoutNode? findClosestParentNode(androidx.ui.core.LayoutNode, kotlin.jvm.functions.Function1<? super androidx.ui.core.LayoutNode,java.lang.Boolean> selector);
}
- @Deprecated public interface LayoutTagParentData {
- method @Deprecated public Object getTag();
+ public final class LayoutTagKt {
+ method public static Object? getTag(androidx.ui.core.Measurable);
+ method @androidx.compose.Stable public static androidx.ui.core.Modifier tag(androidx.ui.core.Modifier, Object tag);
+ }
+
+ public interface LayoutTagParentData {
+ method public Object getTag();
property public abstract Object tag;
}
@@ -635,7 +640,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -736,7 +741,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -786,6 +791,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -878,7 +885,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -941,6 +948,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -965,6 +974,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1097,13 +1108,15 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
}
}
@@ -1132,6 +1145,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1165,7 +1180,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1758,6 +1773,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1925,7 +1942,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1959,6 +1976,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2270,7 +2289,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsKt {
@@ -2294,7 +2313,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev15.txt b/ui/ui-core/api/restricted_0.1.0-dev15.txt
index 44591d2..ded95c4 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev15.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -254,7 +256,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -303,6 +305,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -355,6 +359,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -371,6 +377,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -394,11 +403,15 @@
}
@kotlin.PublishedApi internal enum IntrinsicMinMax {
+ method public static androidx.ui.core.IntrinsicMinMax valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicMinMax[] values();
enum_constant public static final androidx.ui.core.IntrinsicMinMax Max;
enum_constant public static final androidx.ui.core.IntrinsicMinMax Min;
}
@kotlin.PublishedApi internal enum IntrinsicWidthHeight {
+ method public static androidx.ui.core.IntrinsicWidthHeight valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicWidthHeight[] values();
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Height;
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Width;
}
@@ -460,10 +473,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -540,6 +556,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -607,13 +625,13 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> getFrameCommitObserver();
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> getFrameCommitObserver();
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
property @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public final kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> frameCommitObserver;
}
@@ -623,7 +641,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -673,12 +691,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -710,7 +731,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public void setShowLayoutBounds(boolean p);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -724,7 +745,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -774,6 +795,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -865,7 +888,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -894,7 +917,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -928,6 +951,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -952,6 +977,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1001,7 +1028,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -1029,7 +1059,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1065,6 +1095,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1084,13 +1125,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1119,6 +1183,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1152,7 +1218,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1745,6 +1811,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1811,12 +1879,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1914,7 +1982,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1948,6 +2016,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2262,7 +2332,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2282,7 +2352,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index 44591d2..ded95c4 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -38,6 +38,8 @@
}
public enum AutofillType {
+ method public static androidx.ui.autofill.AutofillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.autofill.AutofillType[] values();
enum_constant public static final androidx.ui.autofill.AutofillType AddressAuxiliaryDetails;
enum_constant public static final androidx.ui.autofill.AutofillType AddressCountry;
enum_constant public static final androidx.ui.autofill.AutofillType AddressLocality;
@@ -84,7 +86,7 @@
@androidx.compose.Immutable public final class AbsoluteAlignment implements androidx.ui.core.Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection);
method @androidx.compose.Immutable public androidx.ui.core.AbsoluteAlignment copy(float verticalBias, float horizontalBias);
- field public static final androidx.ui.core.AbsoluteAlignment.Companion! Companion;
+ field public static final androidx.ui.core.AbsoluteAlignment.Companion Companion;
}
public static final class AbsoluteAlignment.Companion {
@@ -113,7 +115,7 @@
@androidx.compose.Immutable public interface Alignment {
method public androidx.ui.unit.IntOffset align(androidx.ui.unit.IntSize size, androidx.ui.core.LayoutDirection layoutDirection = LayoutDirection.Ltr);
- field public static final androidx.ui.core.Alignment.Companion! Companion;
+ field public static final androidx.ui.core.Alignment.Companion Companion;
}
public static final class Alignment.Companion {
@@ -158,7 +160,7 @@
}
@androidx.compose.Immutable public abstract sealed class AlignmentLine {
- field public static final androidx.ui.core.AlignmentLine.Companion! Companion;
+ field public static final androidx.ui.core.AlignmentLine.Companion Companion;
field public static final int Unspecified = -2147483648; // 0x80000000
}
@@ -254,7 +256,7 @@
@androidx.compose.Stable public interface ContentScale {
method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
- field public static final androidx.ui.core.ContentScale.Companion! Companion;
+ field public static final androidx.ui.core.ContentScale.Companion Companion;
}
public static final class ContentScale.Companion {
@@ -303,6 +305,8 @@
}
public enum Direction {
+ method public static androidx.ui.core.Direction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.Direction[] values();
enum_constant public static final androidx.ui.core.Direction DOWN;
enum_constant public static final androidx.ui.core.Direction LEFT;
enum_constant public static final androidx.ui.core.Direction RIGHT;
@@ -355,6 +359,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.core.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.DropDownAlignment[] values();
enum_constant public static final androidx.ui.core.DropDownAlignment End;
enum_constant public static final androidx.ui.core.DropDownAlignment Start;
}
@@ -371,6 +377,9 @@
ctor public HorizontalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
}
+ @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) public @interface InternalCoreApi {
+ }
+
public interface IntrinsicMeasurable {
method public Object? getParentData();
method public int maxIntrinsicHeight(int width, androidx.ui.core.LayoutDirection layoutDirection);
@@ -394,11 +403,15 @@
}
@kotlin.PublishedApi internal enum IntrinsicMinMax {
+ method public static androidx.ui.core.IntrinsicMinMax valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicMinMax[] values();
enum_constant public static final androidx.ui.core.IntrinsicMinMax Max;
enum_constant public static final androidx.ui.core.IntrinsicMinMax Min;
}
@kotlin.PublishedApi internal enum IntrinsicWidthHeight {
+ method public static androidx.ui.core.IntrinsicWidthHeight valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.IntrinsicWidthHeight[] values();
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Height;
enum_constant public static final androidx.ui.core.IntrinsicWidthHeight Width;
}
@@ -460,10 +473,13 @@
}
public final class LayoutKt {
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
- method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function3<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> minIntrinsicHeightMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicWidthMeasureBlock, kotlin.jvm.functions.Function4<? super androidx.ui.core.IntrinsicMeasureScope,? super java.util.List<? extends androidx.ui.core.IntrinsicMeasurable>,? super java.lang.Integer,? super androidx.ui.core.LayoutDirection,java.lang.Integer> maxIntrinsicHeightMeasureBlock, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void Layout(kotlin.jvm.functions.Function0<kotlin.Unit> children, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated public static androidx.ui.core.LayoutNode.MeasureBlocks MeasuringIntrinsicsMeasureBlocks(kotlin.jvm.functions.Function4<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? super androidx.ui.core.LayoutDirection,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
+ method @Deprecated @androidx.compose.Composable public static void MultiMeasureLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children, kotlin.jvm.functions.Function3<? super androidx.ui.core.MeasureScope,? super java.util.List<? extends androidx.ui.core.Measurable>,? super androidx.ui.core.Constraints,? extends androidx.ui.core.MeasureScope.MeasureResult> measureBlock);
method @androidx.compose.Composable public static void WithConstraints(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.WithConstraintsScope,kotlin.Unit> children);
}
@@ -540,6 +556,8 @@
}
public enum LayoutNode.LayoutState {
+ method public static androidx.ui.core.LayoutNode.LayoutState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutNode.LayoutState[] values();
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState LayingOut;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState Measuring;
enum_constant public static final androidx.ui.core.LayoutNode.LayoutState NeedsRelayout;
@@ -607,13 +625,13 @@
method public static inline String! toString-impl(androidx.ui.core.Placeable! p);
}
- public final class ModelObserver {
- ctor public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
- method public void clear(Object target);
- method public void enableModelUpdatesObserving(boolean enabled);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> getFrameCommitObserver();
- method public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
- method public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ @Deprecated public final class ModelObserver {
+ ctor @Deprecated public ModelObserver(kotlin.jvm.functions.Function1<? super kotlin.jvm.functions.Function0<kotlin.Unit>,kotlin.Unit> commitExecutor);
+ method @Deprecated public void clear(Object target);
+ method @Deprecated public void enableModelUpdatesObserving(boolean enabled);
+ method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> getFrameCommitObserver();
+ method @Deprecated public <T> void observeReads(T target, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onCommit, kotlin.jvm.functions.Function0<kotlin.Unit> block);
+ method @Deprecated public void pauseObservingReads(kotlin.jvm.functions.Function0<kotlin.Unit> block);
property @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public final kotlin.jvm.functions.Function2<java.util.Set<?>,androidx.compose.frames.Frame,kotlin.Unit> frameCommitObserver;
}
@@ -623,7 +641,7 @@
method public <R> R! foldIn(R? initial, kotlin.jvm.functions.Function2<? super R,? super androidx.ui.core.Modifier.Element,? extends R> operation);
method public <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.ui.core.Modifier.Element,? super R,? extends R> operation);
method public default operator androidx.ui.core.Modifier plus(androidx.ui.core.Modifier other);
- field public static final androidx.ui.core.Modifier.Companion! Companion;
+ field public static final androidx.ui.core.Modifier.Companion Companion;
}
public static final class Modifier.Companion implements androidx.ui.core.Modifier {
@@ -673,12 +691,15 @@
method public void drawLayer(androidx.ui.graphics.Canvas canvas);
method public long getLayerId();
method public android.graphics.Matrix getMatrix();
+ method public androidx.ui.core.DrawLayerModifier getModifier();
method public void invalidate();
method public void move(androidx.ui.unit.IntOffset position);
method public void resize(androidx.ui.unit.IntSize size);
+ method public void setModifier(androidx.ui.core.DrawLayerModifier p);
method public void updateDisplayList();
method public void updateLayerProperties();
property public abstract long layerId;
+ property public abstract androidx.ui.core.DrawLayerModifier modifier;
}
public interface Owner {
@@ -710,7 +731,7 @@
method public boolean requestFocus();
method public boolean sendKeyEvent(androidx.ui.core.keyinput.KeyEvent keyEvent);
method public void setOnSavedStateRegistryAvailable(kotlin.jvm.functions.Function1<? super androidx.ui.savedinstancestate.UiSavedStateRegistry,kotlin.Unit> callback);
- method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @org.jetbrains.annotations.TestOnly public void setShowLayoutBounds(boolean p);
+ method @androidx.ui.core.InternalCoreApi public void setShowLayoutBounds(boolean p);
property public abstract androidx.ui.autofill.Autofill? autofill;
property public abstract androidx.ui.autofill.AutofillTree autofillTree;
property public abstract androidx.ui.core.clipboard.ClipboardManager clipboardManager;
@@ -724,7 +745,7 @@
property public abstract boolean showLayoutBounds;
property public abstract androidx.ui.input.TextInputService textInputService;
property public abstract androidx.ui.core.texttoolbar.TextToolbar textToolbar;
- field public static final androidx.ui.core.Owner.Companion! Companion;
+ field public static final androidx.ui.core.Owner.Companion Companion;
}
public static final class Owner.Companion {
@@ -774,6 +795,8 @@
}
public enum PointerEventPass {
+ method public static androidx.ui.core.PointerEventPass valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.PointerEventPass[] values();
enum_constant public static final androidx.ui.core.PointerEventPass InitialDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostDown;
enum_constant public static final androidx.ui.core.PointerEventPass PostUp;
@@ -865,7 +888,7 @@
method public static float getPivotFractionY-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.TransformOrigin.Companion! Companion;
+ field public static final androidx.ui.core.TransformOrigin.Companion Companion;
}
public static final class TransformOrigin.Companion {
@@ -894,7 +917,7 @@
public final class WrapperKt {
method public static androidx.compose.Composition setContent(androidx.activity.ComponentActivity, androidx.compose.Recomposer recomposer = Recomposer.current(), kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method public static androidx.compose.Composition setContent(android.view.ViewGroup, androidx.compose.Recomposer recomposer, androidx.compose.CompositionReference? parentComposition = null, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method @Deprecated public static androidx.compose.Composition setContent(android.view.ViewGroup, kotlin.jvm.functions.Function0<kotlin.Unit> content);
method public static androidx.compose.Composition setViewContent(android.view.ViewGroup, androidx.compose.CompositionReference? parent = null, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
method public static androidx.compose.Composition setViewContent(android.app.Activity, kotlin.jvm.functions.Function0<kotlin.Unit> composable);
@@ -928,6 +951,8 @@
package androidx.ui.core.focus {
public enum FocusDetailedState {
+ method public static androidx.ui.core.focus.FocusDetailedState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusDetailedState[] values();
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Active;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState ActiveParent;
enum_constant public static final androidx.ui.core.focus.FocusDetailedState Captured;
@@ -952,6 +977,8 @@
}
public enum FocusState {
+ method public static androidx.ui.core.focus.FocusState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.focus.FocusState[] values();
enum_constant public static final androidx.ui.core.focus.FocusState Focused;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocusable;
enum_constant public static final androidx.ui.core.focus.FocusState NotFocused;
@@ -1001,7 +1028,10 @@
}
public final class DragSlopExceededGestureFilterKt {
- method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null);
+ method public static androidx.ui.core.Modifier dragSlopExceededGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> onDragSlopExceeded, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
+ }
+
+ @kotlin.RequiresOptIn(message="This pointer input API is experimental and is likely to change before becoming " + "stable.") public @interface ExperimentalPointerInput {
}
public final class GestureUtilsKt {
@@ -1029,7 +1059,7 @@
}
public final class RawDragGestureFilterKt {
- method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null);
+ method public static androidx.ui.core.Modifier rawDragGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.DragObserver dragObserver, kotlin.jvm.functions.Function0<java.lang.Boolean>? canStartDragging = null, androidx.ui.core.gesture.scrollorientationlocking.Orientation? orientation = null);
}
public final class RawPressStartGestureFilterKt {
@@ -1065,6 +1095,17 @@
public final class ScaleUtilKt {
}
+ public interface ScrollCallback {
+ method public default void onCancel();
+ method public default float onScroll(float scrollDistance);
+ method public default void onStart(androidx.ui.geometry.Offset downPosition);
+ method public default void onStop(float velocity);
+ }
+
+ public final class ScrollGestureFilterKt {
+ method public static androidx.ui.core.Modifier scrollGestureFilter(androidx.ui.core.Modifier, androidx.ui.core.gesture.ScrollCallback scrollCallback, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation, kotlin.jvm.functions.Function1<? super androidx.ui.core.Direction,java.lang.Boolean>? canDrag = null, boolean startDragImmediately = false);
+ }
+
public final class TapGestureFilterKt {
method public static androidx.ui.core.Modifier tapGestureFilter(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Offset,kotlin.Unit> onTap);
}
@@ -1084,13 +1125,36 @@
}
public enum DelayUpMessage {
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.customevents.DelayUpMessage[] values();
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayUp;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpConsumed;
enum_constant public static final androidx.ui.core.gesture.customevents.DelayUpMessage DelayedUpNotConsumed;
}
public final class LongPressFiredEvent implements androidx.ui.core.CustomEvent {
- field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent! INSTANCE;
+ field public static final androidx.ui.core.gesture.customevents.LongPressFiredEvent INSTANCE;
+ }
+
+}
+
+package androidx.ui.core.gesture.scrollorientationlocking {
+
+ public enum Orientation {
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.gesture.scrollorientationlocking.Orientation[] values();
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Horizontal;
+ enum_constant public static final androidx.ui.core.gesture.scrollorientationlocking.Orientation Vertical;
+ }
+
+ @androidx.ui.core.gesture.ExperimentalPointerInput public final class ScrollOrientationLocker {
+ ctor public ScrollOrientationLocker(androidx.ui.core.CustomEventDispatcher customEventDispatcher);
+ method public void attemptToLockPointers(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public java.util.List<androidx.ui.core.PointerInputChange> getPointersFor(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.gesture.scrollorientationlocking.Orientation orientation);
+ method public void onCancel();
+ method public void onCustomEvent(androidx.ui.core.CustomEvent customEvent, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputSetup(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
+ method public void onPointerInputTearDown(java.util.List<androidx.ui.core.PointerInputChange> changes, androidx.ui.core.PointerEventPass pass);
}
}
@@ -1119,6 +1183,8 @@
}
public enum HapticFeedbackType {
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.hapticfeedback.HapticFeedbackType[] values();
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType LongPress;
enum_constant public static final androidx.ui.core.hapticfeedback.HapticFeedbackType TextHandleMove;
}
@@ -1152,7 +1218,7 @@
method public int getKeyCode();
method public static inline int hashCode-impl(int p);
method public static String toString-impl(int $this);
- field public static final androidx.ui.core.keyinput.Key.Companion! Companion;
+ field public static final androidx.ui.core.keyinput.Key.Companion Companion;
}
public static final class Key.Companion {
@@ -1745,6 +1811,8 @@
}
public enum KeyEventType {
+ method public static androidx.ui.core.keyinput.KeyEventType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.keyinput.KeyEventType[] values();
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyDown;
enum_constant public static final androidx.ui.core.keyinput.KeyEventType KeyUp;
}
@@ -1811,12 +1879,12 @@
}
@androidx.compose.Immutable public static final class Selection.AnchorInfo {
- ctor public Selection.AnchorInfo(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection component1();
+ ctor public Selection.AnchorInfo(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection component1();
method public int component2();
method public androidx.ui.core.selection.Selectable component3();
- method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.TextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
- method public androidx.ui.text.style.TextDirection getDirection();
+ method @androidx.compose.Immutable public androidx.ui.core.selection.Selection.AnchorInfo copy(androidx.ui.text.style.ResolvedTextDirection direction, int offset, androidx.ui.core.selection.Selectable selectable);
+ method public androidx.ui.text.style.ResolvedTextDirection getDirection();
method public int getOffset();
method public androidx.ui.core.selection.Selectable getSelectable();
}
@@ -1914,7 +1982,7 @@
property public final boolean isRoot;
property public final androidx.ui.core.semantics.SemanticsNode? parent;
property public final androidx.ui.unit.IntSize size;
- field public static final androidx.ui.core.semantics.SemanticsNode.Companion! Companion;
+ field public static final androidx.ui.core.semantics.SemanticsNode.Companion Companion;
}
public static final class SemanticsNode.Companion {
@@ -1948,6 +2016,8 @@
}
public enum TextToolbarStatus {
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.texttoolbar.TextToolbarStatus[] values();
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Hidden;
enum_constant public static final androidx.ui.core.texttoolbar.TextToolbarStatus Shown;
}
@@ -2262,7 +2332,7 @@
property @Deprecated public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function0<java.lang.Boolean>>> ScrollForward;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function2<java.lang.Float,java.lang.Float,java.lang.Boolean>>> ScrollTo;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.semantics.AccessibilityAction<kotlin.jvm.functions.Function1<java.lang.Float,java.lang.Boolean>>> SetProgress;
- field public static final androidx.ui.semantics.SemanticsActions! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsActions INSTANCE;
}
public final class SemanticsProperties {
@@ -2282,7 +2352,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsPopup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.String> TestTag;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.text.AnnotatedString> Text;
- field public static final androidx.ui.semantics.SemanticsProperties! INSTANCE;
+ field public static final androidx.ui.semantics.SemanticsProperties INSTANCE;
}
public final class SemanticsPropertiesKt {
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt
index 3fbfa70..6420041 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/CoreDemos.kt
@@ -20,21 +20,23 @@
import androidx.ui.core.demos.focus.FocusableDemo
import androidx.ui.core.demos.gestures.DoubleTapGestureFilterDemo
import androidx.ui.core.demos.gestures.DoubleTapInTapDemo
-import androidx.ui.core.demos.gestures.DragAndScaleGestureDetectorDemo
+import androidx.ui.core.demos.gestures.DragAndScaleGestureFilterDemo
+import androidx.ui.core.demos.gestures.DragGestureFilterDemo
import androidx.ui.core.demos.gestures.DragSlopExceededGestureFilterDemo
-import androidx.ui.core.demos.gestures.LongPressGestureDetectorDemo
+import androidx.ui.core.demos.gestures.HorizontalScrollersInVerticalScrollersDemo
+import androidx.ui.core.demos.gestures.LongPressDragGestureFilterDemo
import androidx.ui.core.demos.gestures.NestedLongPressDemo
import androidx.ui.core.demos.gestures.NestedPressingDemo
import androidx.ui.core.demos.gestures.NestedScalingDemo
import androidx.ui.core.demos.gestures.NestedScrollingDemo
import androidx.ui.core.demos.gestures.PopupDragDemo
import androidx.ui.core.demos.gestures.PressIndicatorGestureFilterDemo
-import androidx.ui.core.demos.gestures.TapGestureFilterDemo
import androidx.ui.core.demos.gestures.RawDragGestureFilterDemo
import androidx.ui.core.demos.gestures.ScaleGestureFilterDemo
-import androidx.ui.core.demos.gestures.DragGestureFilterDemo
-import androidx.ui.core.demos.gestures.LongPressDragGestureFilterDemo
import androidx.ui.core.demos.gestures.PointerInputDuringSubComp
+import androidx.ui.core.demos.gestures.ScrollGestureFilterDemo
+import androidx.ui.core.demos.gestures.TapGestureFilterDemo
+import androidx.ui.core.demos.gestures.VerticalScrollerInDrawerDemo
import androidx.ui.core.demos.keyinput.KeyInputDemo
import androidx.ui.core.demos.viewinterop.ViewInComposeDemo
import androidx.ui.demos.common.ComposableDemo
@@ -45,7 +47,8 @@
ComposableDemo("Press Indication") { PressIndicatorGestureFilterDemo() },
ComposableDemo("Tap") { TapGestureFilterDemo() },
ComposableDemo("Double Tap") { DoubleTapGestureFilterDemo() },
- ComposableDemo("Long Press") { LongPressGestureDetectorDemo() },
+ ComposableDemo("Long Press") { ScrollGestureFilterDemo() },
+ ComposableDemo("Scroll") { DragGestureFilterDemo() },
ComposableDemo("Drag") { DragGestureFilterDemo() },
ComposableDemo("Long Press Drag") { LongPressDragGestureFilterDemo() },
ComposableDemo("Scale") { ScaleGestureFilterDemo() }
@@ -57,9 +60,15 @@
DemoCategory(
"Combinations / Case Studies", listOf(
ComposableDemo("Nested Pressing") { NestedPressingDemo() },
+ ComposableDemo("Horizontal Scrollers In Vertical Scroller") {
+ HorizontalScrollersInVerticalScrollersDemo()
+ },
+ ComposableDemo("Vertical Scroller in Nav Drawer") {
+ VerticalScrollerInDrawerDemo()
+ },
ComposableDemo("Nested Scrolling") { NestedScrollingDemo() },
ComposableDemo("Nested Scaling") { NestedScalingDemo() },
- ComposableDemo("Drag and Scale") { DragAndScaleGestureDetectorDemo() },
+ ComposableDemo("Drag and Scale") { DragAndScaleGestureFilterDemo() },
ComposableDemo("Popup Drag") { PopupDragDemo() },
ComposableDemo("Double Tap in Tap") { DoubleTapInTapDemo() },
ComposableDemo("Nested Long Press") { NestedLongPressDemo() },
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
index 370f114..3427ce4 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
@@ -38,7 +38,7 @@
Box(Modifier.layoutId("header"), children = header)
Box(Modifier.layoutId("footer"), children = footer)
content()
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val headerPlaceable = measurables.first { it.id == "header" }.measure(
Constraints.fixed(constraints.maxWidth, 100)
)
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
index 8fcebd5..b2e2355 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
@@ -37,11 +37,11 @@
import androidx.ui.unit.dp
/**
- * Simple demo that shows off how DragGestureDetector and ScaleGestureDetector automatically
+ * Simple demo that shows off how [dragGestureFilter] and [scaleGestureFilter] automatically
* interoperate.
*/
@Composable
-fun DragAndScaleGestureDetectorDemo() {
+fun DragAndScaleGestureFilterDemo() {
val size = state { 200.dp }
val offset = state { Offset.Zero }
val dragInScale = state { false }
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
new file mode 100644
index 0000000..b789ba0
--- /dev/null
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2019 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 androidx.ui.core.demos.gestures
+
+import androidx.compose.Composable
+import androidx.compose.state
+import androidx.ui.core.Constraints
+import androidx.ui.core.ContentDrawScope
+import androidx.ui.core.Direction
+import androidx.ui.core.DrawModifier
+import androidx.ui.core.Layout
+import androidx.ui.core.Modifier
+import androidx.ui.core.gesture.ScrollCallback
+import androidx.ui.core.gesture.doubleTapGestureFilter
+import androidx.ui.core.gesture.longPressGestureFilter
+import androidx.ui.core.gesture.pressIndicatorGestureFilter
+import androidx.ui.core.gesture.scrollGestureFilter
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.tapGestureFilter
+import androidx.ui.foundation.Box
+import androidx.ui.foundation.Text
+import androidx.ui.foundation.drawBackground
+import androidx.ui.foundation.drawBorder
+import androidx.ui.geometry.Offset
+import androidx.ui.graphics.Color
+import androidx.ui.graphics.drawscope.clipRect
+import androidx.ui.layout.Column
+import androidx.ui.layout.Row
+import androidx.ui.layout.preferredSize
+import androidx.ui.unit.Dp
+import androidx.ui.unit.dp
+import kotlin.math.roundToInt
+
+/**
+ * Demonstration for how multiple DragGestureDetectors interact.
+ */
+@Composable
+fun HorizontalScrollersInVerticalScrollersDemo() {
+ Column {
+ Text("Demonstrates scroll orientation locking.")
+ Text(
+ "There is a column of rows, all of which are scrollable. Any one pointer can only " +
+ "contribute to dragging in one orientation at a time."
+ )
+ Scrollable(Orientation.Vertical) {
+ RepeatingColumn(repetitions = 10) {
+ Box(paddingTop = 8.dp, paddingBottom = 8.dp) {
+ // Inner composable that scrolls
+ Scrollable(Orientation.Horizontal) {
+ RepeatingRow(repetitions = 10) {
+ // Composable that indicates it is being pressed
+ Pressable(
+ width = 96.dp,
+ height = 96.dp
+ )
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/**
+ * A very simple ScrollView like implementation that allows for vertical scrolling.
+ */
+@Composable
+private fun Scrollable(orientation: Orientation, children: @Composable () -> Unit) {
+ val maxOffset = 0f
+ val offset = state { maxOffset }
+ val minOffset = state { 0f }
+
+ val scrollObserver = object : ScrollCallback {
+ override fun onScroll(scrollDistance: Float): Float {
+ val resultingOffset = offset.value + scrollDistance
+ val toConsume =
+ when {
+ resultingOffset > maxOffset -> {
+ maxOffset - offset.value
+ }
+ resultingOffset < minOffset.value -> {
+ minOffset.value - offset.value
+ }
+ else -> {
+ scrollDistance
+ }
+ }
+ offset.value = offset.value + toConsume
+ return toConsume
+ }
+ }
+
+ val canDrag: (Direction) -> Boolean = { direction ->
+ when {
+ direction == Direction.LEFT && offset.value > minOffset.value -> true
+ direction == Direction.UP && offset.value > minOffset.value -> true
+ direction == Direction.RIGHT && offset.value < maxOffset -> true
+ direction == Direction.DOWN && offset.value < maxOffset -> true
+ else -> false
+ }
+ }
+
+ Layout(
+ children = children,
+ modifier = Modifier.scrollGestureFilter(scrollObserver, orientation, canDrag) +
+ ClipModifier,
+ measureBlock = { measurables, constraints ->
+ val placeable =
+ when (orientation) {
+ Orientation.Horizontal -> measurables.first().measure(
+ constraints.copy(
+ minWidth = 0,
+ maxWidth = Constraints.Infinity
+ )
+ )
+ Orientation.Vertical -> measurables.first().measure(
+ constraints.copy(
+ minHeight = 0,
+ maxHeight = Constraints.Infinity
+ )
+ )
+ }
+
+ minOffset.value =
+ when (orientation) {
+ Orientation.Horizontal -> constraints.maxWidth.toFloat() - placeable.width
+ Orientation.Vertical -> constraints.maxHeight.toFloat() - placeable.height
+ }
+
+ val width =
+ when (orientation) {
+ Orientation.Horizontal -> constraints.maxWidth
+ Orientation.Vertical -> placeable.width
+ }
+
+ val height =
+ when (orientation) {
+ Orientation.Horizontal -> placeable.height
+ Orientation.Vertical -> constraints.maxHeight
+ }
+
+ layout(width, height) {
+ when (orientation) {
+ Orientation.Horizontal -> placeable.place(offset.value.roundToInt(), 0)
+ Orientation.Vertical -> placeable.place(0, offset.value.roundToInt())
+ }
+ }
+ })
+}
+
+private val ClipModifier = object : DrawModifier {
+ override fun ContentDrawScope.draw() {
+ clipRect {
+ [email protected]()
+ }
+ }
+}
+
+/**
+ * A very simple Button like implementation that visually indicates when it is being pressed.
+ */
+@Composable
+private fun Pressable(
+ width: Dp,
+ height: Dp
+) {
+
+ val pressedColor = PressedColor
+ val defaultColor = Red
+
+ val color = state { defaultColor }
+ val showPressed = state { false }
+
+ val onPress: (Offset) -> Unit = {
+ showPressed.value = true
+ }
+
+ val onRelease = {
+ showPressed.value = false
+ }
+
+ val onTap: (Offset) -> Unit = {
+ color.value = color.value.next()
+ }
+
+ val onDoubleTap: (Offset) -> Unit = {
+ color.value = color.value.prev()
+ }
+
+ val onLongPress = { _: Offset ->
+ color.value = defaultColor
+ showPressed.value = false
+ }
+
+ val gestureDetectors =
+ Modifier
+ .pressIndicatorGestureFilter(onPress, onRelease, onRelease)
+ .tapGestureFilter(onTap)
+ .doubleTapGestureFilter(onDoubleTap)
+ .longPressGestureFilter(onLongPress)
+
+ val pressOverlay =
+ if (showPressed.value) Modifier.drawBackground(pressedColor) else Modifier
+
+ Box(
+ gestureDetectors
+ .preferredSize(width, height)
+ .drawBorder(1.dp, Color.Black)
+ .drawBackground(color.value)
+ .plus(pressOverlay)
+ )
+}
+
+/**
+ * A simple composable that repeats its children as a vertical list of divided items [repetitions]
+ * times.
+ */
+@Suppress("SameParameterValue")
+@Composable
+private fun RepeatingColumn(repetitions: Int, children: @Composable () -> Unit) {
+ Column {
+ for (i in 1..repetitions) {
+ children()
+ }
+ }
+}
+
+/**
+ * A simple composable that repeats its children as a vertical list of divided items [repetitions]
+ * times.
+ */
+@Suppress("SameParameterValue")
+@Composable
+private fun RepeatingRow(repetitions: Int, children: @Composable () -> Unit) {
+ Row {
+ for (i in 1..repetitions) {
+ children()
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
index b5eec4f..35fac27d 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
@@ -46,7 +46,7 @@
Scalable(.66666666f, Color(0xFFffeb3b.toInt())) {
Scalable(.5f, Color(0xFF4caf50.toInt())) {}
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(constraints.maxWidth, constraints.maxHeight) {
@@ -86,7 +86,7 @@
modifier = Modifier.wrapContentSize(Alignment.Center)
.rawScaleGestureFilter(outerScaleObserver)
.drawBackground(color = color),
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val newConstraints =
constraints.copy(
maxWidth = (constraints.maxWidth * currentPercent.value).roundToInt(),
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
index 5985ff0..a20d89a 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
@@ -24,11 +24,12 @@
import androidx.ui.core.Modifier
import androidx.ui.core.clipToBounds
import androidx.ui.core.gesture.doubleTapGestureFilter
-import androidx.ui.core.gesture.DragObserver
+import androidx.ui.core.gesture.ScrollCallback
import androidx.ui.core.gesture.longPressGestureFilter
import androidx.ui.core.gesture.pressIndicatorGestureFilter
import androidx.ui.core.gesture.tapGestureFilter
-import androidx.ui.core.gesture.dragGestureFilter
+import androidx.ui.core.gesture.scrollGestureFilter
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
import androidx.ui.foundation.Border
import androidx.ui.foundation.Box
import androidx.ui.foundation.Text
@@ -52,12 +53,12 @@
Text("Demonstrates nested scrolling.")
Text("There are 3 fake vertical scrollers inside another vertical scroller. Try " +
"scrolling with 1 or many fingers.")
- Draggable {
- RepeatingList(repetitions = 3) {
+ Scrollable {
+ RepeatingColumn(repetitions = 3) {
Box(Modifier.preferredHeight(398.dp), padding = 72.dp) {
// Inner composable that scrolls
- Draggable {
- RepeatingList(repetitions = 5) {
+ Scrollable {
+ RepeatingColumn(repetitions = 5) {
// Composable that indicates it is being pressed
Pressable(
height = 72.dp
@@ -74,13 +75,13 @@
* A very simple ScrollView like implementation that allows for vertical scrolling.
*/
@Composable
-private fun Draggable(children: @Composable () -> Unit) {
+private fun Scrollable(children: @Composable () -> Unit) {
val offset = state { 0f }
val maxOffset = state { 0f }
- val dragObserver = object : DragObserver {
- override fun onDrag(dragDistance: Offset): Offset {
- val resultingOffset = offset.value + dragDistance.y
+ val scrollObserver = object : ScrollCallback {
+ override fun onScroll(scrollDistance: Float): Float {
+ val resultingOffset = offset.value + scrollDistance
val dyToConsume =
when {
resultingOffset > 0f -> {
@@ -90,11 +91,11 @@
maxOffset.value - offset.value
}
else -> {
- dragDistance.y
+ scrollDistance
}
}
- offset.value = offset.value + dyToConsume
- return Offset(0f, dyToConsume)
+ offset.value += dyToConsume
+ return dyToConsume
}
}
@@ -109,9 +110,9 @@
Layout(
children = children,
modifier = Modifier
- .dragGestureFilter(dragObserver, canDrag)
+ .scrollGestureFilter(scrollObserver, Orientation.Vertical, canDrag)
.clipToBounds(),
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val placeable =
measurables.first()
.measure(constraints.copy(minHeight = 0, maxHeight = Constraints.Infinity))
@@ -151,7 +152,7 @@
}
val onDoubleTap: (Offset) -> Unit = {
- color.value = color.value.prev().prev()
+ color.value = color.value.prev()
}
val onLongPress = { _: Offset ->
@@ -178,7 +179,7 @@
* times.
*/
@Composable
-private fun RepeatingList(repetitions: Int, row: @Composable () -> Unit) {
+private fun RepeatingColumn(repetitions: Int, row: @Composable () -> Unit) {
Column(Modifier.drawBorder(border = Border(2.dp, BorderColor))) {
for (i in 1..repetitions) {
row()
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt
new file mode 100644
index 0000000..738cd5f
--- /dev/null
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2019 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 androidx.ui.core.demos.gestures
+
+import androidx.compose.Composable
+import androidx.compose.emptyContent
+import androidx.compose.state
+import androidx.ui.core.Alignment
+import androidx.ui.core.DensityAmbient
+import androidx.ui.core.Modifier
+import androidx.ui.core.gesture.ScrollCallback
+import androidx.ui.core.gesture.scrollGestureFilter
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.foundation.Box
+import androidx.ui.foundation.Text
+import androidx.ui.geometry.Offset
+import androidx.ui.graphics.Color
+import androidx.ui.layout.Column
+import androidx.ui.layout.fillMaxSize
+import androidx.ui.layout.offset
+import androidx.ui.layout.preferredSize
+import androidx.ui.layout.wrapContentSize
+import androidx.ui.unit.Dp
+import androidx.ui.unit.dp
+
+/**
+ * Simple demo that shows off ScrollGestureFilter.
+ */
+@Composable
+fun ScrollGestureFilterDemo() {
+ Column {
+ Text("Demonstrates scroll orientation locking")
+ Text(
+ "The inner box is composed inside of the outer. If you start dragging the inner box" +
+ "vertically, it will drag vertically , the same pointer will only ever allow " +
+ "the box to be dragged vertically. If drag the inner box horizontally, the " +
+ "container will start being dragged horizontally and that pointer will only " +
+ "ever drag horizontally."
+ )
+ ScrollableBox(240.dp, Orientation.Horizontal, Green, Yellow) {
+ ScrollableBox(144.dp, Orientation.Vertical, Red, Blue)
+ }
+ }
+}
+
+@Composable
+fun ScrollableBox(
+ size: Dp,
+ orientation: Orientation,
+ activeColor: Color,
+ idleColor: Color,
+ children: @Composable () -> Unit = emptyContent()
+) {
+
+ val color = state { idleColor }
+ val offsetPx = state { 0f }
+
+ val offsetDp = with(DensityAmbient.current) {
+ offsetPx.value.toDp()
+ }
+
+ val scrollCallback: ScrollCallback = object : ScrollCallback {
+ override fun onStart(downPosition: Offset) {
+ color.value = activeColor
+ }
+
+ override fun onScroll(scrollDistance: Float): Float {
+ offsetPx.value += scrollDistance
+ return scrollDistance
+ }
+
+ override fun onStop(velocity: Float) {
+ color.value = idleColor
+ }
+
+ override fun onCancel() {
+ color.value = idleColor
+ }
+ }
+
+ val (offsetX, offsetY) = when (orientation) {
+ Orientation.Horizontal -> offsetDp to Dp.Hairline
+ Orientation.Vertical -> Dp.Hairline to offsetDp
+ }
+
+ Box(
+ Modifier.offset(offsetX, offsetY)
+ .fillMaxSize()
+ .wrapContentSize(Alignment.Center)
+ .scrollGestureFilter(scrollCallback, orientation)
+ .preferredSize(size),
+ backgroundColor = color.value
+ ) {
+ children()
+ }
+}
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
new file mode 100644
index 0000000..4b67c0c
--- /dev/null
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
@@ -0,0 +1,307 @@
+/*
+ * Copyright 2019 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 androidx.ui.core.demos.gestures
+
+import androidx.compose.Composable
+import androidx.compose.state
+import androidx.ui.core.Alignment
+import androidx.ui.core.Constraints
+import androidx.ui.core.ContentDrawScope
+import androidx.ui.core.DensityAmbient
+import androidx.ui.core.Direction
+import androidx.ui.core.DrawModifier
+import androidx.ui.core.Layout
+import androidx.ui.core.Modifier
+import androidx.ui.core.gesture.ScrollCallback
+import androidx.ui.core.gesture.doubleTapGestureFilter
+import androidx.ui.core.gesture.longPressGestureFilter
+import androidx.ui.core.gesture.pressIndicatorGestureFilter
+import androidx.ui.core.gesture.scrollGestureFilter
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.tapGestureFilter
+import androidx.ui.foundation.Box
+import androidx.ui.foundation.Text
+import androidx.ui.foundation.drawBackground
+import androidx.ui.foundation.drawBorder
+import androidx.ui.geometry.Offset
+import androidx.ui.graphics.Color
+import androidx.ui.graphics.drawscope.clipRect
+import androidx.ui.layout.Column
+import androidx.ui.layout.ColumnScope
+import androidx.ui.layout.Row
+import androidx.ui.layout.Stack
+import androidx.ui.layout.fillMaxHeight
+import androidx.ui.layout.fillMaxSize
+import androidx.ui.layout.fillMaxWidth
+import androidx.ui.layout.offsetPx
+import androidx.ui.layout.preferredHeight
+import androidx.ui.layout.width
+import androidx.ui.layout.wrapContentSize
+import androidx.ui.unit.Dp
+import androidx.ui.unit.dp
+import kotlin.math.roundToInt
+
+/**
+ * Demonstration for how multiple DragGestureDetectors interact.
+ */
+@Composable
+fun VerticalScrollerInDrawerDemo() {
+ Column {
+ Text("Demonstrates scroll orientation locking.")
+ Text(
+ "There is a vertically scrolling column and a drawer layout. A pointer can only " +
+ "contribute to dragging the column or the drawer, but not both."
+ )
+ DrawerLayout(280.dp) {
+ Scrollable(Orientation.Vertical) {
+ RepeatingColumn(repetitions = 10) {
+ Pressable(
+ height = 96.dp
+ )
+ }
+ }
+ }
+ }
+}
+
+@Composable
+private fun DrawerLayout(drawerWidth: Dp, children: @Composable ColumnScope.() -> Unit) {
+
+ val minOffset =
+ with(DensityAmbient.current) {
+ -drawerWidth.toPx()
+ }
+
+ val currentOffset = state { minOffset }
+ val maxOffset = 0f
+
+ val scrollObserver = object : ScrollCallback {
+ override fun onScroll(scrollDistance: Float): Float {
+ val originalOffset = currentOffset.value
+ currentOffset.value =
+ (currentOffset.value + scrollDistance).coerceIn(minOffset, maxOffset)
+ return currentOffset.value - originalOffset
+ }
+ }
+
+ val canDrag: (Direction) -> Boolean =
+ { direction ->
+ when (direction) {
+ Direction.LEFT -> currentOffset.value > minOffset
+ Direction.RIGHT -> currentOffset.value < 0
+ else -> false
+ }
+ }
+
+ Stack(Modifier.scrollGestureFilter(scrollObserver, Orientation.Horizontal, canDrag)) {
+ Column {
+ children()
+ }
+ Box(
+ Modifier
+ .fillMaxHeight()
+ .width(drawerWidth)
+ .offsetPx(x = currentOffset)
+ .drawBackground(DefaultBackgroundColor)
+ ) {
+ Text(
+ "This is empty drawer content",
+ Modifier
+ .fillMaxSize()
+ .wrapContentSize(Alignment.Center)
+ )
+ }
+ }
+}
+
+/**
+ * A very simple ScrollView like implementation that allows for vertical scrolling.
+ */
+@Composable
+private fun Scrollable(orientation: Orientation, children: @Composable () -> Unit) {
+ val maxOffset = 0f
+ val offset = state { maxOffset }
+ val minOffset = state { 0f }
+
+ val scrollObserver = object : ScrollCallback {
+ override fun onScroll(scrollDistance: Float): Float {
+ val resultingOffset = offset.value + scrollDistance
+ val toConsume =
+ when {
+ resultingOffset > maxOffset -> {
+ maxOffset - offset.value
+ }
+ resultingOffset < minOffset.value -> {
+ minOffset.value - offset.value
+ }
+ else -> {
+ scrollDistance
+ }
+ }
+ offset.value = offset.value + toConsume
+ return toConsume
+ }
+ }
+
+ val canDrag: (Direction) -> Boolean = { direction ->
+ when {
+ direction == Direction.LEFT && offset.value > minOffset.value -> true
+ direction == Direction.UP && offset.value > minOffset.value -> true
+ direction == Direction.RIGHT && offset.value < maxOffset -> true
+ direction == Direction.DOWN && offset.value < maxOffset -> true
+ else -> false
+ }
+ }
+
+ Layout(
+ children = children,
+ modifier = Modifier.scrollGestureFilter(scrollObserver, orientation, canDrag) +
+ ClipModifier,
+ measureBlock = { measurables, constraints ->
+ val placeable =
+ when (orientation) {
+ Orientation.Horizontal -> measurables.first().measure(
+ constraints.copy(
+ minWidth = 0,
+ maxWidth = Constraints.Infinity
+ )
+ )
+ Orientation.Vertical -> measurables.first().measure(
+ constraints.copy(
+ minHeight = 0,
+ maxHeight = Constraints.Infinity
+ )
+ )
+ }
+
+ minOffset.value =
+ when (orientation) {
+ Orientation.Horizontal -> constraints.maxWidth.toFloat() - placeable.width
+ Orientation.Vertical -> constraints.maxHeight.toFloat() - placeable.height
+ }
+
+ val width =
+ when (orientation) {
+ Orientation.Horizontal -> constraints.maxWidth
+ Orientation.Vertical -> placeable.width
+ }
+
+ val height =
+ when (orientation) {
+ Orientation.Horizontal -> placeable.height
+ Orientation.Vertical -> constraints.maxHeight
+ }
+
+ layout(width, height) {
+ when (orientation) {
+ Orientation.Horizontal -> placeable.place(offset.value.roundToInt(), 0)
+ Orientation.Vertical -> placeable.place(0, offset.value.roundToInt())
+ }
+ }
+ })
+}
+
+private val ClipModifier = object : DrawModifier {
+ override fun ContentDrawScope.draw() {
+ clipRect {
+ [email protected]()
+ }
+ }
+}
+
+/**
+ * A very simple Button like implementation that visually indicates when it is being pressed.
+ */
+@Composable
+private fun Pressable(
+ height: Dp
+) {
+
+ val pressedColor = PressedColor
+ val defaultColor = Red
+
+ val color = state { defaultColor }
+ val showPressed = state { false }
+
+ val onPress: (Offset) -> Unit = {
+ showPressed.value = true
+ }
+
+ val onRelease = {
+ showPressed.value = false
+ }
+
+ val onTap: (Offset) -> Unit = {
+ color.value = color.value.next()
+ }
+
+ val onDoubleTap: (Offset) -> Unit = {
+ color.value = color.value.prev()
+ }
+
+ val onLongPress = { _: Offset ->
+ color.value = defaultColor
+ showPressed.value = false
+ }
+
+ val gestureDetectors =
+ Modifier
+ .pressIndicatorGestureFilter(onPress, onRelease, onRelease)
+ .tapGestureFilter(onTap)
+ .doubleTapGestureFilter(onDoubleTap)
+ .longPressGestureFilter(onLongPress)
+
+ val pressOverlay =
+ if (showPressed.value) Modifier.drawBackground(pressedColor) else Modifier
+
+ Box(
+ Modifier
+ .fillMaxWidth()
+ .preferredHeight(height)
+ .drawBorder(1.dp, Color.Black)
+ .drawBackground(color.value)
+ .plus(pressOverlay) + gestureDetectors
+ )
+}
+
+/**
+ * A simple composable that repeats its children as a vertical list of divided items [repetitions]
+ * times.
+ */
+@Suppress("SameParameterValue")
+@Composable
+private fun RepeatingColumn(repetitions: Int, children: @Composable () -> Unit) {
+ Column {
+ for (i in 1..repetitions) {
+ children()
+ }
+ }
+}
+
+/**
+ * A simple composable that repeats its children as a vertical list of divided items [repetitions]
+ * times.
+ */
+@Suppress("SameParameterValue")
+@Composable
+private fun RepeatingRow(repetitions: Int, children: @Composable () -> Unit) {
+ Row {
+ for (i in 1..repetitions) {
+ children()
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/AlignmentLineSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/AlignmentLineSample.kt
index 075af88..4201be5 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/AlignmentLineSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/AlignmentLineSample.kt
@@ -36,7 +36,7 @@
@Composable
fun LineProviderLayout(exampleLinePosition: Int) {
val size: Int = 20
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
layout(size, size, mapOf(exampleLine to exampleLinePosition)) {}
}
}
@@ -44,7 +44,7 @@
Layout({
LineProviderLayout(exampleLinePosition = 5)
LineProviderLayout(exampleLinePosition = 10)
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
// placeables[0][line] will be 5
// placeables[1][line] will be 10
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
index e7e27f8..84f5428 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
@@ -31,22 +31,22 @@
// and will position them to be bottom right aligned.
Layout(
children,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
// The min intrinsic width of this layout will be twice the largest min intrinsic
// width of a child. Note that we call minIntrinsicWidth with h / 2 for children,
// since we should be double the size of the children.
(measurables.map { it.minIntrinsicWidth(h / 2) }.maxBy { it } ?: 0) * 2
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
(measurables.map { it.minIntrinsicHeight(w / 2) }.maxBy { it } ?: 0) * 2
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
(measurables.map { it.maxIntrinsicHeight(h / 2) }.maxBy { it } ?: 0) * 2
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
(measurables.map { it.maxIntrinsicHeight(w / 2) }.maxBy { it } ?: 0) * 2
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
// measurables contains one element corresponding to each of our layout children.
// constraints are the constraints that our parent is currently measuring us with.
val childConstraints = Constraints(
@@ -73,7 +73,7 @@
fun LayoutUsage(children: @Composable () -> Unit) {
// We build a layout that will occupy twice as much space as its children,
// and will position them to be bottom right aligned.
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
// measurables contains one element corresponding to each of our layout children.
// constraints are the constraints that our parent is currently measuring us with.
val childConstraints = Constraints(
@@ -103,7 +103,7 @@
// modifier on header and footer directly if they are composables accepting modifiers.
Box(Modifier.layoutId("header"), children = header)
Box(Modifier.layoutId("footer"), children = footer)
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeables = measurables.map { measurable ->
when (measurable.id) {
// You should use appropriate constraints. Here we measure with dummy constraints.
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModelObserverUsage.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModelObserverUsage.kt
deleted file mode 100644
index 188e4a1..0000000
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModelObserverUsage.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2019 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 androidx.ui.core.samples
-
-import androidx.annotation.Sampled
-import androidx.ui.core.ModelObserver
-
-private val modelObserver = ModelObserver { it() }
-
-private val onCommitListener: (MyTargetType) -> Unit = { target ->
- // do something when commit has happened on something we read while observing on target
- handleCommit(target)
-}
-
-@Sampled
-fun modelObserverExample(target: MyTargetType) {
- modelObserver.observeReads(target, onCommitListener) {
- // do stuff with target for which we want to track model reads
- }
-}
-
-private fun handleCommit(target: MyTargetType) {
- println(target)
-}
-
-class MyTargetType
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/AndroidPointerInputTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/AndroidPointerInputTest.kt
index ed0d0f6..3bb68b2 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/AndroidPointerInputTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/AndroidPointerInputTest.kt
@@ -22,13 +22,14 @@
import android.widget.FrameLayout
import androidx.activity.ComponentActivity
import androidx.compose.Composable
-import androidx.compose.FrameManager
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Recomposer
import androidx.compose.emptyContent
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.snapshots.Snapshot
import androidx.test.filters.SmallTest
import androidx.ui.core.pointerinput.PointerInputFilter
import androidx.ui.core.pointerinput.PointerInputModifier
@@ -184,7 +185,7 @@
.onPositioned {
latch.countDown()
}
- ) { _, _, _ ->
+ ) { _, _ ->
val sizePx = size.value
layout(sizePx, sizePx) {}
}
@@ -199,7 +200,8 @@
// we update size from 10 to 20 pixels
size.value = 20
// this call will synchronously mark the LayoutNode as needs remeasure
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
val ownerPosition = androidComposeView.calculatePosition()
val motionEvent = MotionEvent(
@@ -246,7 +248,7 @@
.onPositioned {
latch.countDown()
}
- ) { _, _, _ ->
+ ) { _, _ ->
layout(5, 5) {}
}
}
@@ -431,7 +433,7 @@
@Composable
fun FillLayout(modifier: Modifier = Modifier) {
- Layout(emptyContent(), modifier) { _, constraints, _ ->
+ Layout(emptyContent(), modifier) { _, constraints ->
layout(constraints.maxWidth, constraints.maxHeight) {}
}
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/ModelObserverTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/ModelObserverTest.kt
deleted file mode 100644
index 62fdd7d..0000000
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/ModelObserverTest.kt
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright 2019 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 androidx.ui.core
-
-import androidx.compose.FrameManager
-import androidx.compose.MutableState
-import androidx.compose.frames.commit
-import androidx.compose.frames.open
-import androidx.compose.mutableStateOf
-import androidx.test.filters.SmallTest
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertTrue
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-
-@SmallTest
-@RunWith(JUnit4::class)
-class ModelObserverTest {
-
- @Test
- fun modelChangeTriggersCallback() {
- val node = "Hello World"
- val countDownLatch = CountDownLatch(1)
-
- val model = mutableStateOf(0)
- val modelObserver = ModelObserver { it() }
- modelObserver.enableModelUpdatesObserving(true)
-
- open() // open the frame
-
- val onCommitListener: (String) -> Unit = { affectedNode ->
- assertEquals(node, affectedNode)
- assertEquals(1, countDownLatch.count)
- countDownLatch.countDown()
- }
-
- modelObserver.observeReads(node, onCommitListener) {
- // read the value
- model.value
- }
-
- model.value++
- commit() // close the frame
-
- modelObserver.enableModelUpdatesObserving(false)
- assertTrue(countDownLatch.await(1, TimeUnit.SECONDS))
- }
-
- @Test
- fun allThreeStagesWorksTogether() {
- val str = "Hello World"
- val measureNode = LayoutNode()
- val layoutNode = LayoutNode()
- val drawLatch = CountDownLatch(1)
- val measureLatch = CountDownLatch(1)
- val layoutLatch = CountDownLatch(1)
- val drawModel = mutableStateOf(0)
- val measureModel = mutableStateOf(0)
- val layoutModel = mutableStateOf(0)
-
- val onCommitDrawListener: (String) -> Unit = { affectedNode ->
- assertEquals(str, affectedNode)
- assertEquals(1, drawLatch.count)
- drawLatch.countDown()
- }
- val onCommitMeasureListener: (LayoutNode) -> Unit = { affectedNode ->
- assertEquals(measureNode, affectedNode)
- assertEquals(1, measureLatch.count)
- measureLatch.countDown()
- }
- val onCommitLayoutListener: (LayoutNode) -> Unit = { affectedNode ->
- assertEquals(layoutNode, affectedNode)
- assertEquals(1, layoutLatch.count)
- layoutLatch.countDown()
- }
- val modelObserver = ModelObserver { it() }
-
- modelObserver.enableModelUpdatesObserving(true)
-
- open() // open the frame
-
- modelObserver.observeReads(layoutNode, onCommitLayoutListener) {
- layoutModel.value
- }
-
- modelObserver.observeReads(measureNode, onCommitMeasureListener) {
- measureModel.value
- }
-
- modelObserver.observeReads(str, onCommitDrawListener) {
- drawModel.value
- }
-
- drawModel.value++
- measureModel.value++
- layoutModel.value++
- commit() // close the frame
-
- modelObserver.enableModelUpdatesObserving(false)
- assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
- assertTrue(measureLatch.await(1, TimeUnit.SECONDS))
- assertTrue(layoutLatch.await(1, TimeUnit.SECONDS))
- }
-
- @Test
- fun enclosedStagesCorrectlyObserveChanges() {
- val layoutNode1 = LayoutNode()
- val layoutNode2 = LayoutNode()
- val measureNode = LayoutNode()
- val layoutLatch1 = CountDownLatch(1)
- val layoutLatch2 = CountDownLatch(1)
- val measureLatch = CountDownLatch(1)
- val layoutModel1 = mutableStateOf(0)
- val layoutModel2 = mutableStateOf(0)
- val measureModel = mutableStateOf(0)
-
- val onCommitMeasureListener: (LayoutNode) -> Unit = { affectedNode ->
- assertEquals(affectedNode, measureNode)
- assertEquals(measureLatch.count, 1)
- measureLatch.countDown()
- }
- val onCommitLayoutListener: (LayoutNode) -> Unit = { affectedNode ->
- when (affectedNode) {
- layoutNode1 -> {
- assertEquals(1, layoutLatch1.count)
- layoutLatch1.countDown()
- }
- layoutNode2 -> {
- assertEquals(1, layoutLatch2.count)
- layoutLatch2.countDown()
- }
- measureNode -> {
- throw IllegalStateException("measureNode called with Stage.Layout")
- }
- }
- }
- val modelObserver = ModelObserver { it() }
-
- modelObserver.enableModelUpdatesObserving(true)
-
- open() // open the frame
-
- modelObserver.observeReads(layoutNode1, onCommitLayoutListener) {
- layoutModel1.value
- modelObserver.observeReads(layoutNode2, onCommitLayoutListener) {
- layoutModel2.value
- modelObserver.observeReads(measureNode, onCommitMeasureListener) {
- measureModel.value
- }
- }
- }
-
- layoutModel1.value++
- layoutModel2.value++
- measureModel.value++
- commit() // close the frame
-
- modelObserver.enableModelUpdatesObserving(false)
- assertTrue(layoutLatch1.await(1, TimeUnit.SECONDS))
- assertTrue(layoutLatch2.await(1, TimeUnit.SECONDS))
- assertTrue(measureLatch.await(1, TimeUnit.SECONDS))
- }
-
- @Test
- fun modelReadTriggersCallbackAfterSwitchingFrameWithinObserveReads() {
- val node = "Hello"
- val countDownLatch = CountDownLatch(1)
-
- val model = mutableStateOf(0)
- val onCommitListener: (String) -> Unit = { _ ->
- assertEquals(1, countDownLatch.count)
- countDownLatch.countDown()
- }
- val modelObserver = ModelObserver { it() }
-
- modelObserver.enableModelUpdatesObserving(true)
-
- open() // open the frame
-
- modelObserver.observeReads(node, onCommitListener) {
- // switch to the next frame.
- // this will be done by subcomposition, for example.
- FrameManager.nextFrame()
- // read the value
- model.value
- }
-
- model.value++
- commit() // close the frame
-
- modelObserver.enableModelUpdatesObserving(false)
- assertTrue(countDownLatch.await(1, TimeUnit.SECONDS))
- }
-
- @Test
- fun pauseStopsObserving() {
- val node = LayoutNode()
- var commits = 0
-
- runSimpleTest { modelObserver, model ->
- modelObserver.observeReads(node, { _ -> commits++ }) {
- modelObserver.pauseObservingReads {
- model.value
- }
- }
- }
-
- assertEquals(0, commits)
- }
-
- @Test
- fun nestedPauseStopsObserving() {
- val node = LayoutNode()
- var commits = 0
-
- runSimpleTest { modelObserver, model ->
- modelObserver.observeReads(node, { _ -> commits++ }) {
- modelObserver.pauseObservingReads {
- modelObserver.pauseObservingReads {
- model.value
- }
- model.value
- }
- }
- }
-
- assertEquals(0, commits)
- }
-
- @Test
- fun simpleObserving() {
- val node = LayoutNode()
- var commits = 0
-
- runSimpleTest { modelObserver, model ->
- modelObserver.observeReads(node, { _ -> commits++ }) {
- model.value
- }
- }
-
- assertEquals(1, commits)
- }
-
- @Test
- fun observeWithinPause() {
- val node = LayoutNode()
- var commits = 0
- var commits2 = 0
-
- runSimpleTest { modelObserver, model ->
- modelObserver.observeReads(node, { _ -> commits++ }) {
- modelObserver.pauseObservingReads {
- modelObserver.observeReads(node, { _ -> commits2++ }) {
- model.value
- }
- }
- }
- }
- assertEquals(0, commits)
- assertEquals(1, commits2)
- }
-
- private fun runSimpleTest(
- block: (modelObserver: ModelObserver, model: MutableState<Int>) -> Unit
- ) {
- val modelObserver = ModelObserver { it() }
- val model = mutableStateOf(0)
-
- modelObserver.enableModelUpdatesObserving(true)
- try {
- open() // open the frame
- block(modelObserver, model)
- model.value++
- commit() // close the frame
- } finally {
- modelObserver.enableModelUpdatesObserving(false)
- }
- }
-}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
index 6114766..22e5d04 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
@@ -26,8 +26,7 @@
import androidx.ui.core.test.FixedSize
import androidx.ui.core.test.Padding
import androidx.ui.core.test.background
-import androidx.ui.core.test.waitAndScreenShot
-import androidx.ui.framework.test.TestActivity
+import androidx.ui.foundation.Box
import androidx.ui.geometry.Size
import androidx.ui.graphics.BlendMode
import androidx.ui.graphics.Color
@@ -37,8 +36,19 @@
import androidx.ui.graphics.drawscope.DrawScope
import androidx.ui.graphics.painter.Painter
import androidx.ui.graphics.toArgb
+import androidx.ui.layout.height
+import androidx.ui.layout.heightIn
import androidx.ui.layout.ltr
import androidx.ui.layout.rtl
+import androidx.ui.layout.width
+import androidx.ui.layout.widthIn
+import androidx.ui.layout.wrapContentHeight
+import androidx.ui.test.assertHeightIsEqualTo
+import androidx.ui.test.assertWidthIsEqualTo
+import androidx.ui.test.captureToBitmap
+import androidx.ui.test.createComposeRule
+import androidx.ui.test.findRoot
+import androidx.ui.unit.dp
import org.junit.Assert
import org.junit.Assert.assertEquals
import org.junit.Before
@@ -58,16 +68,12 @@
val containerWidth = 100.0f
val containerHeight = 100.0f
- @Suppress("DEPRECATION")
@get:Rule
- val rule = androidx.test.rule.ActivityTestRule<TestActivity>(TestActivity::class.java)
- private lateinit var activity: TestActivity
+ val rule = createComposeRule()
private lateinit var drawLatch: CountDownLatch
@Before
fun setup() {
- activity = rule.activity
- activity.hasFocusLatch
drawLatch = CountDownLatch(1)
}
@@ -75,13 +81,11 @@
@Test
fun testPainterModifierColorFilter() {
val paintLatch = CountDownLatch(1)
- rule.runOnUiThread {
- activity.setContent {
- testPainter(
- colorFilter = ColorFilter(Color.Cyan, BlendMode.srcIn),
- latch = paintLatch
- )
- }
+ rule.setContent {
+ testPainter(
+ colorFilter = ColorFilter(Color.Cyan, BlendMode.srcIn),
+ latch = paintLatch
+ )
}
paintLatch.await(5, TimeUnit.SECONDS)
@@ -98,13 +102,11 @@
@Test
fun testPainterModifierAlpha() {
val paintLatch = CountDownLatch(1)
- rule.runOnUiThread {
- activity.setContent {
- testPainter(
- alpha = 0.5f,
- latch = paintLatch
- )
- }
+ rule.setContent {
+ testPainter(
+ alpha = 0.5f,
+ latch = paintLatch
+ )
}
paintLatch.await(5, TimeUnit.SECONDS)
@@ -132,13 +134,11 @@
@Test
fun testPainterModifierRtl() {
val paintLatch = CountDownLatch(1)
- rule.runOnUiThread {
- activity.setContent {
- testPainter(
- rtl = true,
- latch = paintLatch
- )
- }
+ rule.setContent {
+ testPainter(
+ rtl = true,
+ latch = paintLatch
+ )
}
paintLatch.await(5, TimeUnit.SECONDS)
@@ -156,25 +156,23 @@
fun testPainterAspectRatioMaintainedInSmallerParent() {
val paintLatch = CountDownLatch(1)
val containerSizePx = containerWidth.roundToInt() * 3
- rule.runOnUiThread {
- activity.setContent {
- FixedSize(size = containerSizePx, modifier = Modifier.background(Color.White)) {
- // Verify that the contents are scaled down appropriately even though
- // the Painter's intrinsic width and height is twice that of the component
- // it is to be drawn into
- Padding(containerWidth.roundToInt()) {
- AtLeastSize(size = containerWidth.roundToInt(),
- modifier = Modifier.paint(
- LatchPainter(
- containerWidth * 2,
- containerHeight * 2,
- paintLatch
- ),
- alignment = Alignment.Center,
- contentScale = ContentScale.Inside
- )
- ) {
- }
+ rule.setContent {
+ FixedSize(size = containerSizePx, modifier = Modifier.background(Color.White)) {
+ // Verify that the contents are scaled down appropriately even though
+ // the Painter's intrinsic width and height is twice that of the component
+ // it is to be drawn into
+ Padding(containerWidth.roundToInt()) {
+ AtLeastSize(size = containerWidth.roundToInt(),
+ modifier = Modifier.paint(
+ LatchPainter(
+ containerWidth * 2,
+ containerHeight * 2,
+ paintLatch
+ ),
+ alignment = Alignment.Center,
+ contentScale = ContentScale.Inside
+ )
+ ) {
}
}
}
@@ -202,21 +200,19 @@
fun testPainterAlignedBottomRightIfSmallerThanParent() {
val paintLatch = CountDownLatch(1)
val containerSizePx = containerWidth.roundToInt() * 2
- rule.runOnUiThread {
- activity.setContent {
- AtLeastSize(size = containerWidth.roundToInt() * 2,
- modifier = Modifier.background(Color.White).paint(
- LatchPainter(
- containerWidth,
- containerHeight,
- paintLatch
- ),
- alignment = Alignment.BottomEnd,
- contentScale = ContentScale.Inside
- )
- ) {
- // Intentionally empty
- }
+ rule.setContent {
+ AtLeastSize(size = containerWidth.roundToInt() * 2,
+ modifier = Modifier.background(Color.White).paint(
+ LatchPainter(
+ containerWidth,
+ containerHeight,
+ paintLatch
+ ),
+ alignment = Alignment.BottomEnd,
+ contentScale = ContentScale.Inside
+ )
+ ) {
+ // Intentionally empty
}
}
@@ -232,8 +228,8 @@
).apply {
assertEquals(Color.Red.toArgb(), getPixel(right, bottom))
assertEquals(Color.Red.toArgb(), getPixel(innerBoxLeft, bottom))
- assertEquals(Color.Red.toArgb(), getPixel(innerBoxLeft, innerBoxTop))
- assertEquals(Color.Red.toArgb(), getPixel(right, innerBoxTop))
+ assertEquals(Color.Red.toArgb(), getPixel(innerBoxLeft, innerBoxTop + 1))
+ assertEquals(Color.Red.toArgb(), getPixel(right, innerBoxTop + 1))
assertEquals(Color.White.toArgb(), getPixel(innerBoxLeft - 1, bottom))
assertEquals(Color.White.toArgb(), getPixel(innerBoxLeft - 1, innerBoxTop - 1))
@@ -245,14 +241,12 @@
@Test
fun testPainterModifierIntrinsicSize() {
val paintLatch = CountDownLatch(1)
- rule.runOnUiThread {
- activity.setContent {
- NoMinSizeContainer {
- NoIntrinsicSizeContainer(
- Modifier.paint(LatchPainter(containerWidth, containerHeight, paintLatch))
- ) {
- // Intentionally empty
- }
+ rule.setContent {
+ NoMinSizeContainer {
+ NoIntrinsicSizeContainer(
+ Modifier.paint(LatchPainter(containerWidth, containerHeight, paintLatch))
+ ) {
+ // Intentionally empty
}
}
}
@@ -279,24 +273,22 @@
fun testPainterIntrinsicSizeDoesNotExceedMax() {
val paintLatch = CountDownLatch(1)
val containerSize = containerWidth.roundToInt() / 2
- rule.runOnUiThread {
- activity.setContent {
+ rule.setContent {
+ NoIntrinsicSizeContainer(
+ Modifier.background(Color.White) +
+ FixedSizeModifier(containerWidth.roundToInt())
+ ) {
NoIntrinsicSizeContainer(
- Modifier.background(Color.White) +
- FixedSizeModifier(containerWidth.roundToInt())
+ AlignTopLeft + FixedSizeModifier(containerSize).paint(
+ LatchPainter(
+ containerWidth,
+ containerHeight,
+ paintLatch
+ ),
+ alignment = Alignment.TopStart
+ )
) {
- NoIntrinsicSizeContainer(
- AlignTopLeft + FixedSizeModifier(containerSize).paint(
- LatchPainter(
- containerWidth,
- containerHeight,
- paintLatch
- ),
- alignment = Alignment.TopStart
- )
- ) {
- // Intentionally empty
- }
+ // Intentionally empty
}
}
}
@@ -327,23 +319,21 @@
fun testPainterNotSizedToIntrinsics() {
val paintLatch = CountDownLatch(1)
val containerSize = containerWidth.roundToInt() / 2
- rule.runOnUiThread {
- activity.setContent {
+ rule.setContent {
+ NoIntrinsicSizeContainer(
+ Modifier.background(Color.White) +
+ FixedSizeModifier(containerSize)
+ ) {
NoIntrinsicSizeContainer(
- Modifier.background(Color.White) +
- FixedSizeModifier(containerSize)
+ FixedSizeModifier(containerSize).paint(
+ LatchPainter(
+ containerWidth,
+ containerHeight,
+ paintLatch
+ ),
+ sizeToIntrinsics = false, alignment = Alignment.TopStart)
) {
- NoIntrinsicSizeContainer(
- FixedSizeModifier(containerSize).paint(
- LatchPainter(
- containerWidth,
- containerHeight,
- paintLatch
- ),
- sizeToIntrinsics = false, alignment = Alignment.TopStart)
- ) {
- // Intentionally empty
- }
+ // Intentionally empty
}
}
}
@@ -365,6 +355,145 @@
}
}
+ @Test
+ fun testPainterFixedHeightScalesDownWidth() {
+ val composableHeightPx = 100f
+ val composableMaxWidthPx = 300f
+ val painterWidth = 400f
+ val painterHeight = 200f
+
+ val density = rule.density.density
+ // The resultant composable should match the height provided in the height modifier
+ // however, despite the width being a maximum of 300 pixels, the composable
+ // should be 200 pixels wide as the painter is scaled down to ensure the height constraint
+ // is satisfied. Because the Painter is twice as tall as the composable, the composable
+ // width should be half that of the painter
+ testPainterScaleMatchesSize(
+ Modifier.height(((composableHeightPx) / density).dp)
+ .widthIn(0.dp, (composableMaxWidthPx / density).dp),
+ ContentScale.Inside,
+ Size(painterWidth, painterHeight),
+ painterWidth / 2,
+ composableHeightPx
+ )
+ }
+
+ @Test
+ fun testPainterFixedWidthScalesDownHeight() {
+ val composableWidthPx = 100f
+ val composableMaxHeightPx = 300f
+ val painterWidth = 400f
+ val painterHeight = 200f
+
+ val density = rule.density.density
+ // The resultant composable should match the height provided in the height modifier
+ // however, despite the width being a maximum of 300 pixels, the resultant composable
+ // should be 200 pixels wide as the painter is scaled down to ensure the height constraint
+ // is satisfied. Because the Painter is twice as tall as the composable, the composable
+ // width should be half that of the painter
+ testPainterScaleMatchesSize(
+ Modifier.width(((composableWidthPx) / density).dp)
+ .heightIn(0.dp, (composableMaxHeightPx / density).dp),
+ ContentScale.Inside,
+ Size(painterWidth, painterHeight),
+ composableWidthPx,
+ painterHeight / 4
+ )
+ }
+
+ @Test
+ fun testPainterFixedDimensionUnchanged() {
+ val painterWidth = 1000f
+ val painterHeight = 375f
+ val density = rule.density.density
+ val composableWidth = 500f
+ val composableHeight = 800f
+ // Because the constraints are tight here, do not attempt to resize the composable
+ // based on the intrinsic dimensions of the Painter
+ testPainterScaleMatchesSize(
+ Modifier.width((composableWidth / density).dp).height((composableHeight / density).dp),
+ ContentScale.Fit,
+ Size(painterWidth, painterHeight),
+ composableWidth,
+ composableHeight
+ )
+ }
+
+ @Test
+ fun testPainterComposableHeightScaledUpWithFixedWidth() {
+ val composableWidthPx = 200f
+ val painterWidth = 100f
+ val painterHeight = 200f
+ // A Painter with ContentScale.FillWidth will scale its content to ensure that the
+ // composable width fills its width constraint. This also scales the height by the
+ // same scale factor. Because the intrinsic width is twice that of the width constraint,
+ // the height should be double that of the intrinsic height of the painter
+ testPainterScaleMatchesSize(
+ Modifier.width((composableWidthPx / rule.density.density).dp).wrapContentHeight(),
+ ContentScale.FillWidth,
+ Size(painterWidth, painterHeight),
+ composableWidthPx,
+ painterHeight * 2
+ )
+ }
+
+ @Test
+ fun testPainterWidthScaledDownWithSmallerHeight() {
+ val composableWidthPx = 200f
+ val painterWidth = 100f
+ val painterHeight = 200f
+ // A Painter with ContentScale.Inside should scale its content down to fit within the
+ // constraints of the composable
+ // In this case a fixed width that is larger than the painter with undefined height
+ // should have the composable width match that of its input and the height match
+ // that of the painter
+ testPainterScaleMatchesSize(
+ Modifier.width((composableWidthPx / rule.density.density).dp).wrapContentHeight(),
+ ContentScale.Inside,
+ Size(painterWidth, painterHeight),
+ composableWidthPx,
+ painterHeight
+ )
+ }
+
+ private fun testPainterScaleMatchesSize(
+ modifier: Modifier,
+ contentScale: ContentScale,
+ painterSize: Size,
+ composableWidthPx: Float,
+ composableHeightPx: Float
+ ) {
+ val paintLatch = CountDownLatch(1)
+
+ var composableWidth = 0f
+ var composableHeight = 0f
+ rule.setContent {
+ composableWidth = composableWidthPx / DensityAmbient.current.density
+ composableHeight = composableHeightPx / DensityAmbient.current.density
+ // Because the painter is told to fit inside the constraints, the width should
+ // match that of the provided fixed width and the height should match that of the
+ // composable as no scaling is being done
+ val painter = object : Painter() {
+ override val intrinsicSize: Size
+ get() = painterSize
+
+ override fun DrawScope.onDraw() { /* no-op */ }
+ }
+ Box(modifier =
+ Modifier.drawWithContent {
+ drawContent()
+ paintLatch.countDown()
+ }.plus(modifier)
+ .paint(painter, contentScale = contentScale)
+ )
+ }
+
+ paintLatch.await()
+ findRoot()
+ .assertWidthIsEqualTo(composableWidth.dp)
+ .assertHeightIsEqualTo(composableHeight.dp)
+ }
+
@Composable
private fun testPainter(
alpha: Float = DefaultAlpha,
@@ -384,7 +513,7 @@
}
private fun obtainScreenshotBitmap(width: Int, height: Int = width): Bitmap {
- val bitmap = rule.waitAndScreenShot()
+ val bitmap = findRoot().captureToBitmap()
Assert.assertEquals(width, bitmap.width)
Assert.assertEquals(height, bitmap.height)
return bitmap
@@ -418,7 +547,7 @@
*/
@Composable
fun NoMinSizeContainer(children: @Composable () -> Unit) {
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val loosenedConstraints = constraints.copy(minWidth = 0, minHeight = 0)
val placeables = measurables.map { it.measure(loosenedConstraints) }
val maxPlaceableWidth = placeables.maxBy { it.width }?.width ?: 0
@@ -439,7 +568,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit
) {
- Layout(children, modifier) { measurables, constraints, _ ->
+ Layout(children, modifier) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
val width = max(
placeables.maxBy { it.width }?.width ?: 0, constraints
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
index 024dba2..1e4c039 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
@@ -17,6 +17,8 @@
import android.view.View
import androidx.compose.Composable
+import androidx.compose.Providers
+import androidx.compose.ambientOf
import androidx.compose.emptyContent
import androidx.lifecycle.ViewTreeLifecycleOwner
import androidx.test.espresso.Espresso
@@ -919,6 +921,22 @@
Truth.assertThat(positionRight).isEqualTo(expectedPositionRight)
}
+ @Test
+ fun popup_preservesAmbients() {
+ val ambient = ambientOf<Float>()
+ var value = 0f
+ composeTestRule.setContent {
+ Providers(ambient provides 1f) {
+ Popup {
+ value = ambient.current
+ }
+ }
+ }
+ runOnIdleCompose {
+ Truth.assertThat(value).isEqualTo(1f)
+ }
+ }
+
private fun matchesAndroidComposeView(): BoundedMatcher<View, View> {
return object : BoundedMatcher<View, View>(View::class.java) {
override fun matchesSafely(item: View?): Boolean {
@@ -967,7 +985,7 @@
@Composable
private fun TestAlign(children: @Composable () -> Unit) {
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val measurable = measurables.firstOrNull()
// The child cannot be larger than our max constraints, but we ignore min constraints.
val placeable = measurable?.measure(constraints.copy(minWidth = 0, minHeight = 0))
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
index 616f090..d4816af 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
@@ -73,7 +73,7 @@
Stack {
Layout(
modifier = Modifier.longPressDragGestureFilter(longPressDragObserver),
- measureBlock = { _, _, _ ->
+ measureBlock = { _, _ ->
layout(100, 100) {
setupLatch.countDown()
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
index c9c909f..a879adb 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
@@ -72,7 +72,7 @@
touchSlop = with(DensityAmbient.current) { TouchSlop.toPx() }
Layout(
modifier = Modifier.scaleGestureFilter(scaleObserver),
- measureBlock = { _, _, _ ->
+ measureBlock = { _, _ ->
layout(
ceil(touchSlop * LayoutDimensionFactor).toInt(),
ceil(touchSlop * LayoutDimensionFactor).toInt()
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
index a62a0d2..74f79cb 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
@@ -258,7 +258,7 @@
dragObserver,
startDragImmediately = startDragImmediately
),
- measureBlock = { _, _, _ ->
+ measureBlock = { _, _ ->
layout(100, 100) {
setupLatch.countDown()
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/selection/SelectionHandlesTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/selection/SelectionHandlesTest.kt
index 97c6aba..41b9fbd 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/selection/SelectionHandlesTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/selection/SelectionHandlesTest.kt
@@ -27,7 +27,7 @@
import androidx.ui.graphics.Color
import androidx.ui.graphics.toArgb
import androidx.ui.text.InternalTextApi
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import com.google.common.truth.Truth.assertThat
import com.nhaarman.mockitokotlin2.mock
import org.junit.Before
@@ -53,12 +53,12 @@
private val selectionLtrHandleDirection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = mock()
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = mock()
),
@@ -66,12 +66,12 @@
)
private val selectionRtlHandleDirection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = mock()
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = mock()
),
@@ -182,24 +182,29 @@
@Test
fun isHandleLtrDirection_ltr_handles_not_cross_return_true() {
- assertThat(isHandleLtrDirection(direction = TextDirection.Ltr, areHandlesCrossed = false))
- .isTrue()
+ assertThat(
+ isHandleLtrDirection(direction = ResolvedTextDirection.Ltr, areHandlesCrossed = false)
+ ).isTrue()
}
@Test
fun isHandleLtrDirection_ltr_handles_cross_return_false() {
- assertThat(isHandleLtrDirection(direction = TextDirection.Ltr, areHandlesCrossed = true))
- .isFalse()
+ assertThat(
+ isHandleLtrDirection(direction = ResolvedTextDirection.Ltr, areHandlesCrossed = true)
+ ).isFalse()
}
@Test
fun isHandleLtrDirection_rtl_handles_not_cross_return_false() {
- assertThat(isHandleLtrDirection(direction = TextDirection.Rtl, areHandlesCrossed = false))
- .isFalse()
+ assertThat(
+ isHandleLtrDirection(direction = ResolvedTextDirection.Rtl, areHandlesCrossed = false)
+ ).isFalse()
}
@Test
fun isHandleLtrDirection_rtl_handles_cross_return_true() {
- assertThat(isHandleLtrDirection(direction = TextDirection.Rtl, areHandlesCrossed = true))
+ assertThat(
+ isHandleLtrDirection(direction = ResolvedTextDirection.Rtl, areHandlesCrossed = true)
+ ).isTrue()
}
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
index 82c6e79..8c9a4d4 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
@@ -46,6 +46,7 @@
import androidx.ui.core.DrawLayerModifier
import androidx.ui.core.DrawModifier
import androidx.ui.core.HorizontalAlignmentLine
+import androidx.ui.core.InternalCoreApi
import androidx.ui.core.IntrinsicMeasurable
import androidx.ui.core.IntrinsicMeasureScope
import androidx.ui.core.Layout
@@ -86,6 +87,7 @@
import androidx.ui.unit.dp
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
+import org.junit.Assert.assertNotNull
import org.junit.Assert.assertSame
import org.junit.Assert.assertTrue
import org.junit.Assert.fail
@@ -317,7 +319,7 @@
}
Padding(size = model.size, modifier = fillColor(model, isInner = true)) {
}
- }, measureBlock = { measurables, constraints, _ ->
+ }, measureBlock = { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
layout(placeables[0].width, placeables[0].height) {
placeables[0].place(0, 0)
@@ -400,23 +402,23 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val header = @Composable {
- Layout(measureBlock = { _, constraints, _ ->
+ Layout(measureBlock = { _, constraints ->
assertEquals(childConstraints[0], constraints)
layout(0, 0) {}
}, children = emptyContent(), modifier = Modifier.layoutId("header"))
}
val footer = @Composable {
- Layout(measureBlock = { _, constraints, _ ->
+ Layout(measureBlock = { _, constraints ->
assertEquals(childConstraints[1], constraints)
layout(0, 0) {}
}, children = emptyContent(), modifier = Modifier.layoutId("footer"))
- Layout(measureBlock = { _, constraints, _ ->
+ Layout(measureBlock = { _, constraints ->
assertEquals(childConstraints[2], constraints)
layout(0, 0) {}
}, children = emptyContent(), modifier = Modifier.layoutId("footer"))
}
- Layout({ header(); footer() }) { measurables, _, _ ->
+ Layout({ header(); footer() }) { measurables, _ ->
assertEquals(childrenCount, measurables.size)
measurables.forEachIndexed { index, measurable ->
measurable.measure(childConstraints[index])
@@ -460,7 +462,7 @@
drawRect(model.innerColor)
}
)
- }, measureBlock = { measurables, constraints, _ ->
+ }, measureBlock = { measurables, constraints ->
measureCalls++
layout(30, 30) {
layoutCalls++
@@ -498,7 +500,7 @@
height: Int,
children: @Composable () -> Unit
) {
- Layout(children = children, measureBlock = { measurables, constraints, _ ->
+ Layout(children = children, measureBlock = { measurables, constraints ->
val resolvedWidth = constraints.constrainWidth(width)
val resolvedHeight = constraints.constrainHeight(height)
layout(resolvedWidth, resolvedHeight) {
@@ -535,7 +537,7 @@
drawn.value = true
latch.countDown()
},
- measureBlock = { _, constraints, _ ->
+ measureBlock = { _, constraints ->
measured.value = true
val resolvedWidth = constraints.constrainWidth(width)
val resolvedHeight = constraints.minHeight
@@ -626,7 +628,7 @@
}
}
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
layout(width = 20, height = 20) {
measurables.first().measure(constraints)
.place(offset.value, offset.value)
@@ -738,7 +740,7 @@
activity.setContent {
val child1 = @Composable {
Wrap {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(
0,
0,
@@ -752,7 +754,7 @@
}
val child2 = @Composable {
Wrap {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(
0,
0,
@@ -765,7 +767,7 @@
}
}
val inner = @Composable {
- Layout({ child1(); child2() }) { measurables, constraints, _ ->
+ Layout({ child1(); child2() }) { measurables, constraints ->
val placeable1 = measurables[0].measure(constraints)
val placeable2 = measurables[1].measure(constraints)
assertEquals(10, placeable1[TestVerticalLine])
@@ -778,7 +780,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
assertEquals(10, placeable[TestVerticalLine])
assertEquals(20, placeable[TestHorizontalLine])
@@ -800,17 +802,17 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child1 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine1 to 10)) {}
}
}
val child2 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine2 to 20)) { }
}
}
val inner = @Composable {
- Layout({ child1(); child2() }) { measurables, constraints, _ ->
+ Layout({ child1(); child2() }) { measurables, constraints ->
val placeable1 = measurables[0].measure(constraints)
measurables[1].measure(constraints)
layout(0, 0) {
@@ -819,7 +821,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
assertEquals(10, placeable[TestLine1])
assertEquals(AlignmentLine.Unspecified, placeable[TestLine2])
@@ -845,7 +847,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child1 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
++child1Measures
layout(0, 0, mapOf(TestLine1 to 10)) {
++child1Layouts
@@ -853,7 +855,7 @@
}
}
val child2 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
++child2Measures
layout(0, 0, mapOf(TestLine2 to 20)) {
++child2Layouts
@@ -861,7 +863,7 @@
}
}
val inner = @Composable {
- Layout({ child1(); child2() }) { measurables, constraints, _ ->
+ Layout({ child1(); child2() }) { measurables, constraints ->
val placeable1 = measurables[0].measure(constraints)
val placeable2 = measurables[1].measure(constraints)
layout(0, 0) {
@@ -870,7 +872,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
assertEquals(10, placeable[TestLine1])
assertEquals(20, placeable[TestLine2])
@@ -900,7 +902,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child1 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
++child1Measures
layout(0, 0, mapOf(TestLine1 to 10)) {
++child1Layouts
@@ -908,7 +910,7 @@
}
}
val child2 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
++child2Measures
layout(0, 0, mapOf(TestLine2 to 20)) {
++child2Layouts
@@ -916,7 +918,7 @@
}
}
val inner = @Composable {
- Layout({ child1(); child2() }) { measurables, constraints, _ ->
+ Layout({ child1(); child2() }) { measurables, constraints ->
val placeable1 = measurables[0].measure(constraints)
assertEquals(10, placeable1[TestLine1])
val placeable2 = measurables[1].measure(constraints)
@@ -926,7 +928,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(placeable.width, placeable.height) {
layoutLatch.countDown()
@@ -948,12 +950,12 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child1 = @Composable {
- Layout(children = { }) { _, _, _ ->
+ Layout(children = { }) { _, _ ->
layout(0, 0, mapOf(TestLine to 10)) { }
}
}
val child2 = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(
0,
0,
@@ -962,7 +964,7 @@
}
}
val inner = @Composable {
- Layout({ child1(); child2() }) { measurables, constraints, _ ->
+ Layout({ child1(); child2() }) { measurables, constraints ->
val placeable1 = measurables[0].measure(constraints)
layout(0, 0) {
assertEquals(10, placeable1[TestLine])
@@ -971,7 +973,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(placeable.width, placeable.height) {
layoutLatch.countDown()
@@ -990,14 +992,14 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = { }) { _, _, _ ->
+ Layout(children = { }) { _, _ ->
layout(0, 0, mapOf(TestLine to 10)) {
++childLayouts
}
}
}
val inner = @Composable {
- Layout({ child() }) { measurables, constraints, _ ->
+ Layout({ child() }) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(0, 0) {
assertEquals(10, placeable[TestLine])
@@ -1006,7 +1008,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -1030,11 +1032,11 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine to offset.value)) {}
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
linePosition = placeable[TestLine]
++measure
@@ -1071,7 +1073,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(
0,
0,
@@ -1079,7 +1081,7 @@
) {}
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
++measure
layout(placeable.width, placeable.height) {
@@ -1114,11 +1116,11 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine to offset.value)) { }
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
++measure
layout(1, 1) {
val placeable = measurables.first().measure(constraints)
@@ -1155,12 +1157,12 @@
activity.setContent {
val innerChild = @Composable {
offset.value // Artificial remeasure.
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine to 10)) { }
}
}
val child = @Composable {
- Layout({ innerChild(); innerChild() }) { measurables, constraints, _ ->
+ Layout({ innerChild(); innerChild() }) { measurables, constraints ->
offset.value // Artificial remeasure.
val placeable1 = measurables[0].measure(constraints)
val placeable2 = measurables[1].measure(constraints)
@@ -1170,7 +1172,7 @@
}
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
if (offset.value < 15) {
placeable[TestLine]
@@ -1203,19 +1205,19 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val innerChild = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
layout(0, 0, mapOf(TestLine to 10)) { }
}
}
val child = @Composable {
- Layout({ innerChild() }) { measurables, constraints, _ ->
+ Layout({ innerChild() }) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(0, 0, mapOf(TestLine to 20)) {
placeable.place(0, 0)
}
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
assertEquals(20, placeable[TestLine])
layout(0, 0) {
@@ -1240,13 +1242,13 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
++innerChildMeasures
layout(0, 0, mapOf(TestLine to 10)) { ++innerChildLayouts }
}
}
val inner = @Composable {
- Layout({ Wrap { Wrap { child() } } }) { measurables, constraints, _ ->
+ Layout({ Wrap { Wrap { child() } } }) { measurables, constraints ->
++outerChildMeasures
val placeable = measurables[0].measure(constraints)
layout(0, 0) {
@@ -1255,7 +1257,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
val width = placeable.width.coerceAtLeast(10)
val height = placeable.height.coerceAtLeast(10)
@@ -1292,7 +1294,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, constraints, _ ->
+ Layout(children = {}) { _, constraints ->
layout(
constraints.minWidth,
constraints.minHeight,
@@ -1301,7 +1303,7 @@
}
}
val inner = @Composable {
- Layout({ Wrap { Wrap { child() } } }) { measurables, constraints, _ ->
+ Layout({ Wrap { Wrap { child() } } }) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -1309,7 +1311,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -1332,7 +1334,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val child = @Composable {
- Layout(children = {}) { _, constraints, _ ->
+ Layout(children = {}) { _, constraints ->
layout(
constraints.minWidth,
constraints.minHeight,
@@ -1346,7 +1348,7 @@
val inner = @Composable {
Layout({
WrapForceRelayout(offset) { child() }
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
if (offset.value > 15) assertEquals(10, placeable[TestLine])
@@ -1355,7 +1357,7 @@
}
}
}
- Layout(inner) { measurables, constraints, _ ->
+ Layout(inner) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
val width = placeable.width.coerceAtLeast(10)
val height = placeable.height.coerceAtLeast(10)
@@ -1485,7 +1487,7 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
val layout = @Composable { modifier: Modifier ->
- Layout(modifier = modifier, children = {}) { _, _, _ ->
+ Layout(modifier = modifier, children = {}) { _, _ ->
layout(
0,
0,
@@ -1562,7 +1564,7 @@
val container = @Composable { children: @Composable () -> Unit ->
// This simulates a Container optimisation, when the child does not
// affect parent size.
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
layout(30, 30) {
measurables[0].measure(constraints).place(0, 0)
}
@@ -1580,7 +1582,7 @@
assertTrue(laidOut)
latch.countDown()
}
- ) { _, _, _ ->
+ ) { _, _ ->
laidOut = true
layout(0, 0) {}
}
@@ -1610,7 +1612,7 @@
activity.setContent {
Layout(children = {
AtLeastSize(30, modifier = Modifier.drawBehind { drawn = true })
- }, modifier = Modifier.drawLatchModifier()) { _, _, _ ->
+ }, modifier = Modifier.drawLatchModifier()) { _, _ ->
// don't measure or place the AtLeastSize
latch.countDown()
layout(20, 20) {}
@@ -1636,7 +1638,7 @@
val model = SquareModel(size = 0)
activityTestRule.runOnUiThreadIR {
activity.setContent {
- Layout(children = { }) { _, _, _ ->
+ Layout(children = { }) { _, _ ->
latch.countDown()
layout(model.size, model.size) {}
}
@@ -1658,11 +1660,11 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
Layout(children = {
- Layout(children = emptyContent()) { _, _, _ ->
+ Layout(children = emptyContent()) { _, _ ->
latch.countDown()
layout(model.size, model.size) {}
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -1686,11 +1688,11 @@
activityTestRule.runOnUiThreadIR {
activity.setContent {
Layout(children = {
- Layout(modifier = Modifier.drawLayer(), children = emptyContent()) { _, _, _ ->
+ Layout(modifier = Modifier.drawLayer(), children = emptyContent()) { _, _ ->
latch.countDown()
layout(model.size, model.size) {}
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -1754,13 +1756,13 @@
activity.setContent {
val child = @Composable {
Wrap {
- Layout(children = {}, modifier = PaddingModifier(padding)) { _, _, _ ->
+ Layout(children = {}, modifier = PaddingModifier(padding)) { _, _ ->
layout(0, 0, mapOf(testLine to alignmentLinePosition)) { }
}
}
}
- Layout(child) { measurables, constraints, _ ->
+ Layout(child) { measurables, constraints ->
assertEquals(
padding + alignmentLinePosition,
measurables[0].measure(constraints)[testLine]
@@ -1800,7 +1802,7 @@
FixedSize(size, layoutModifier)
FixedSize(size, parentDataModifier)
},
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
for (i in 0 until measurables.size) {
val child = measurables[i]
val placeable = child.measure(constraints)
@@ -2086,6 +2088,7 @@
// Tests that show layout bounds draws outlines around content and modifiers
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
@Test
+ @OptIn(InternalCoreApi::class)
fun showLayoutBounds_content() {
activityTestRule.runOnUiThreadIR {
activity.setContent {
@@ -2124,7 +2127,7 @@
// this verifies the layout was remeasured before being drawn
assertTrue(lastLayoutValue)
drawlatch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
lastLayoutValue = state.value
// this registers the value read
if (!state.value) {
@@ -2135,7 +2138,7 @@
layout(100, 100) {}
}
FixedSize(30, children = emptyContent())
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val (first, second) = measurables
val firstPlaceable = first.measure(constraints)
// switch frame, as inside the measure block we changed the model value
@@ -2357,7 +2360,7 @@
Layout(
modifier = Modifier.background(Color.Red),
children = yellowSquare
- ) { measurables, _, _ ->
+ ) { measurables, _ ->
val childConstraints = Constraints.fixed(10, 10)
val p = measurables[0].measure(childConstraints)
layout(30, 30) {
@@ -2439,6 +2442,106 @@
}
}
+ // Delegates don't change when the modifier types remain the same
+ @Test
+ fun instancesKeepDelegates() {
+ var color by mutableStateOf(Color.Red)
+ var m: Measurable? = null
+ val layoutCaptureModifier = object : LayoutModifier {
+ override fun MeasureScope.measure(
+ measurable: Measurable,
+ constraints: Constraints,
+ layoutDirection: LayoutDirection
+ ): MeasureScope.MeasureResult {
+ m = measurable
+ val p = measurable.measure(constraints, layoutDirection)
+ drawLatch.countDown()
+ return layout(p.width, p.height) {
+ p.place(0, 0)
+ }
+ }
+ }
+ activityTestRule.runOnUiThread {
+ activity.setContent {
+ FixedSize(30, layoutCaptureModifier.background(color)) {}
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+ var firstMeasurable = m
+ drawLatch = CountDownLatch(1)
+
+ activityTestRule.runOnUiThread {
+ m = null
+ color = Color.Blue
+ }
+
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+ assertNotNull(m)
+ assertSame(firstMeasurable, m)
+ }
+
+ // LayoutNodeWrappers remain even when there are multiple for a modifier
+ @Test
+ fun replaceMultiImplementationModifier() {
+ var color by mutableStateOf(Color.Red)
+ var m: Measurable? = null
+
+ var layerLatch = CountDownLatch(1)
+
+ class SpecialModifier(
+ val drawLatch: CountDownLatch,
+ val layerLatch: CountDownLatch
+ ) : DrawModifier, DrawLayerModifier {
+ override fun ContentDrawScope.draw() {
+ drawContent()
+ drawLatch.countDown()
+ }
+
+ override val translationX: Float
+ get() {
+ layerLatch.countDown()
+ return super.translationX
+ }
+ }
+
+ val layoutCaptureModifier = object : LayoutModifier {
+ override fun MeasureScope.measure(
+ measurable: Measurable,
+ constraints: Constraints,
+ layoutDirection: LayoutDirection
+ ): MeasureScope.MeasureResult {
+ m = measurable
+ val p = measurable.measure(constraints, layoutDirection)
+ return layout(p.width, p.height) {
+ p.place(0, 0)
+ }
+ }
+ }
+ activityTestRule.runOnUiThread {
+ activity.setContent {
+ FixedSize(30, layoutCaptureModifier +
+ SpecialModifier(drawLatch, layerLatch).background(color)) {}
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+ assertTrue(layerLatch.await(1, TimeUnit.SECONDS))
+ var firstMeasurable = m
+ drawLatch = CountDownLatch(1)
+ layerLatch = CountDownLatch(1)
+
+ activityTestRule.runOnUiThread {
+ m = null
+ color = Color.Blue
+ }
+
+ // The latches are triggered in the new instance
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+ assertTrue(layerLatch.await(1, TimeUnit.SECONDS))
+ // The new instance's measurable is the same.
+ assertNotNull(m)
+ assertSame(firstMeasurable, m)
+ }
+
private fun composeSquares(model: SquareModel) {
activityTestRule.runOnUiThreadIR {
activity.setContent {
@@ -2573,7 +2676,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit
) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
val placeables = measurables.map { m ->
m.measure(constraints)
}
@@ -2663,7 +2766,7 @@
children: @Composable () -> Unit = emptyContent()
) {
Layout(
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val newConstraints = Constraints(
minWidth = max(size, constraints.minWidth),
maxWidth = if (constraints.hasBoundedWidth) {
@@ -2704,7 +2807,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit = emptyContent()
) {
- Layout(children = children, modifier = modifier) { measurables, _, _ ->
+ Layout(children = children, modifier = modifier) { measurables, _ ->
val newConstraints = Constraints.fixed(size, size)
val placeables = measurables.map { m ->
m.measure(newConstraints)
@@ -2721,7 +2824,7 @@
fun Align(modifier: Modifier = Modifier.None, children: @Composable () -> Unit) {
Layout(
modifier = modifier,
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val newConstraints = Constraints(
minWidth = 0,
maxWidth = constraints.maxWidth,
@@ -2754,7 +2857,7 @@
) {
Layout(
modifier = modifier,
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val totalDiff = size * 2
val targetMinWidth = constraints.minWidth - totalDiff
val targetMaxWidth = if (constraints.hasBoundedWidth) {
@@ -2799,7 +2902,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit
) {
- Layout(modifier = modifier, children = children) { measurables, _, _ ->
+ Layout(modifier = modifier, children = children) { measurables, _ ->
val testConstraints = Constraints()
measurables.forEach { it.measure(testConstraints) }
val childConstraints = Constraints.fixed(size, size)
@@ -2826,7 +2929,7 @@
minHeight: Int = 0,
children: @Composable () -> Unit = {}
) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
val width = max(placeables.maxBy { it.width }?.width ?: 0, minWidth)
val height = max(placeables.maxBy { it.height }?.height ?: 0, minHeight)
@@ -2862,7 +2965,7 @@
onMaxPositionChanged: () -> Unit,
child: @Composable () -> Unit
) {
- Layout(modifier = modifier, children = child) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = child) { measurables, constraints ->
val childConstraints = constraints.copy(
maxHeight = constraints.maxHeight,
maxWidth = Constraints.Infinity
@@ -2883,7 +2986,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit
) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
val width = placeables.maxBy { it.width }?.width ?: 0
val height = placeables.maxBy { it.height }?.height ?: 0
@@ -2896,7 +2999,7 @@
@Composable
fun SimpleRow(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
var width = 0
var height = 0
val placeables = measurables.map {
@@ -2917,7 +3020,7 @@
@Composable
fun JustConstraints(modifier: Modifier, children: @Composable () -> Unit) {
- Layout(children, modifier) { _, constraints, _ ->
+ Layout(children, modifier) { _, constraints ->
layout(constraints.minWidth, constraints.minHeight) {}
}
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
index 2862ab1..e56a98b 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
@@ -91,7 +91,7 @@
it.ref = squareRef
}
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
assertEquals(1, measurables.size)
val placeable = measurables.first().measure(
constraints.copy(minWidth = 0, minHeight = 0)
@@ -446,7 +446,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit
) {
- Layout(children, modifier) { measurables, constraints, _ ->
+ Layout(children, modifier) { measurables, constraints ->
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
index 27dc478..f897944 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
@@ -111,7 +111,7 @@
Layout(
children = children,
modifier = Modifier.clipToBounds()
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val placeables = measurables.map { m ->
m.measure(constraints)
}
@@ -124,7 +124,7 @@
}
}
- Layout(children = middle) { measurables, constraints, _ ->
+ Layout(children = middle) { measurables, constraints ->
val placeables = measurables.map { m ->
m.measure(constraints)
}
@@ -236,7 +236,7 @@
Layout(
children = children,
modifier = Modifier.clipToBounds()
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val placeables = measurables.map { m ->
m.measure(constraints)
}
@@ -246,7 +246,7 @@
}
}
- Layout(children = middle) { measurables, constraints, _ ->
+ Layout(children = middle) { measurables, constraints ->
val placeables = measurables.map { m ->
m.measure(constraints)
}
@@ -311,7 +311,7 @@
@Composable
fun child(modifier: Modifier) {
- Layout(children = emptyContent(), modifier = modifier) { _, _, _ ->
+ Layout(children = emptyContent(), modifier = modifier) { _, _ ->
layout(2, 2) {}
}
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/DrawReorderingTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/DrawReorderingTest.kt
index c3fbe5f..102c300 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/DrawReorderingTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/DrawReorderingTest.kt
@@ -654,7 +654,7 @@
modifier: Modifier = Modifier,
children: @Composable () -> Unit = emptyContent()
) {
- Layout(children = children, modifier = modifier) { measurables, _, _ ->
+ Layout(children = children, modifier = modifier) { measurables, _ ->
val newConstraints = Constraints.fixed(size.value, size.value)
val placeables = measurables.map { m ->
m.measure(newConstraints)
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
index dfde7fa..c6b4706 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
@@ -145,7 +145,7 @@
Layout(
children,
modifier
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val childConstraints = constraints.copy(minWidth = 0, minHeight = 0)
val placeables = measurables.map { it.measure(childConstraints) }
var containerWidth = constraints.minWidth
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
index 2b71e10..1d5a462 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
@@ -66,7 +66,7 @@
AtLeastSize(0, children = emptyContent())
}
}
- ) { measurables, _, _ ->
+ ) { measurables, _ ->
assertEquals(3, measurables.size)
assertEquals("first", measurables[0].id)
assertEquals("second", measurables[1].id)
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ModelReadsTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ModelReadsTest.kt
index 5f42287..72095a4 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ModelReadsTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ModelReadsTest.kt
@@ -16,9 +16,10 @@
package androidx.ui.core.test
-import androidx.compose.FrameManager
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.MutableState
import androidx.compose.mutableStateOf
+import androidx.compose.snapshots.Snapshot
import androidx.test.filters.SmallTest
import androidx.ui.core.Layout
import androidx.ui.core.Modifier
@@ -66,7 +67,7 @@
// read from the model
offset.value
drawLatch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
layout(10, 10) {
// read from the model
offset.value
@@ -109,7 +110,7 @@
// read from the model
drawModel.value
drawLatch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
layout(10, 10) {
// read from the model
positionModel.value
@@ -151,7 +152,7 @@
// read from the model
offset.value
drawLatch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
measureLatch.countDown()
// read from the model
layout(offset.value, 10) {}
@@ -188,7 +189,7 @@
var positionLatch = CountDownLatch(1)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
measureLatch.countDown()
// read from the model
layout(measureModel.value, 10) {
@@ -247,7 +248,7 @@
val model = mutableStateOf(0)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
if (enabled.value) {
// read the model
model.value
@@ -268,7 +269,7 @@
val model = mutableStateOf(0)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
layout(10, 10) {
if (enabled.value) {
// read the model
@@ -312,7 +313,7 @@
rule.runOnUiThread {
activity.setContent {
if (enabled.value) {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
// read the model
model.value
latch.countDown()
@@ -333,7 +334,7 @@
rule.runOnUiThread {
activity.setContent {
if (enabled.value) {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
layout(10, 10) {
// read the model
model.value
@@ -354,11 +355,12 @@
val model = mutableStateOf(0)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
if (model.value == 1) {
// this will trigger remeasure request for this node we currently measure
model.value = 2
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
latch.countDown()
layout(100, 100) {}
@@ -387,7 +389,7 @@
var modelAlreadyChanged = false
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
valueReadDuringMeasure = remeasureModel.value
remeasureLatch.countDown()
layout(100, 100) {
@@ -395,7 +397,8 @@
if (!modelAlreadyChanged) {
// this will trigger remeasure request for this node we layout
remeasureModel.value = 1
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
// the remeasure will also include another relayout and we don't
// want to loop and request remeasure again
modelAlreadyChanged = true
@@ -417,8 +420,8 @@
relayoutModel.value = 1
}
- assertTrue(remeasureLatch.await(1, TimeUnit.HOURS))
- assertTrue(relayoutLatch.await(1, TimeUnit.HOURS))
+ assertTrue(remeasureLatch.await(1, TimeUnit.SECONDS))
+ assertTrue(relayoutLatch.await(1, TimeUnit.SECONDS))
assertEquals(1, valueReadDuringMeasure)
}
@@ -430,11 +433,12 @@
val relayoutModel = mutableStateOf(0)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
if (remeasureModel.value != 0) {
// this will trigger relayout request for this node we currently measure
relayoutModel.value = 1
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
remeasureLatch.countDown()
layout(100, 100) {
@@ -465,12 +469,13 @@
val model = mutableStateOf(0)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, _, _ ->
+ Layout({}) { _, _ ->
layout(100, 100) {
if (model.value == 1) {
// this will trigger relayout request for this node we currently layout
model.value = 2
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
latch.countDown()
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OnPositionedTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OnPositionedTest.kt
index 02267ba..de6ffdb 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OnPositionedTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OnPositionedTest.kt
@@ -150,7 +150,7 @@
rule.runOnUiThreadIR {
activity.setContent {
Layout(
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
layout(10, 10) {
measurables[0].measure(constraints).place(position, 0)
}
@@ -197,7 +197,7 @@
modifier = Modifier.onChildPositioned {
onChildPositionedCalledTimes++
},
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
layout(10, 10) {
measurables[1].measure(constraints).place(0, 0)
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OpacityTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OpacityTest.kt
index 1f0bbb0..d502291 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OpacityTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/OpacityTest.kt
@@ -232,7 +232,7 @@
@Composable
fun Row(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
var width = 0
var height = 0
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ParentDataModifierTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ParentDataModifierTest.kt
index 1d047bb..93f7a33 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ParentDataModifierTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ParentDataModifierTest.kt
@@ -64,7 +64,7 @@
activity.setContent {
Layout(children = {
SimpleDrawChild(drawLatch = drawLatch)
- }, measureBlock = { measurables, constraints, _ ->
+ }, measureBlock = { measurables, constraints ->
assertEquals(1, measurables.size)
parentData.value = measurables[0].parentData
@@ -91,7 +91,7 @@
children = {
SimpleDrawChild(drawLatch = drawLatch)
},
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
assertEquals(1, measurables.size)
parentData.value = measurables[0].parentData
@@ -115,16 +115,16 @@
Layout(
modifier = Modifier.layoutId(0),
children = emptyContent()
- ) { _, _, _ -> layout(0, 0) {} }
+ ) { _, _ -> layout(0, 0) {} }
}
val footer = @Composable {
Layout(
modifier = Modifier.layoutId(1),
children = emptyContent()
- ) { _, _, _ -> layout(0, 0) {} }
+ ) { _, _ -> layout(0, 0) {} }
}
- Layout({ header(); footer() }) { measurables, _, _ ->
+ Layout({ header(); footer() }) { measurables, _ ->
assertEquals(0, ((measurables[0]).parentData as? LayoutIdParentData)?.id)
assertEquals(1, ((measurables[1]).parentData as? LayoutIdParentData)?.id)
layout(0, 0) { }
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
index ce5a290..0175b3c 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
@@ -63,7 +63,7 @@
val latch = CountDownLatch(1)
rule.runOnUiThread {
activity.setContent {
- Layout({}) { _, constraints, _ ->
+ Layout({}) { _, constraints ->
realConstraints = constraints
latch.countDown()
layout(10, 10) {}
@@ -86,7 +86,7 @@
Layout({}, Modifier.onPositioned {
coordinates = it
latch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
layout(10, 10) {}
}
}
@@ -110,7 +110,7 @@
child.setContent(Recomposer.current()) {
Layout({}, Modifier.onPositioned {
latch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
layout(10, 15) {}
}
}
@@ -133,7 +133,7 @@
child.setContent(Recomposer.current()) {
Layout({}, Modifier.fillMaxSize().onPositioned {
latch.countDown()
- }) { _, _, _ ->
+ }) { _, _ ->
layout(10, 15) {}
}
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
index 4107efa..15b7b33 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
@@ -182,13 +182,13 @@
activityTestRule.runOnUiThread {
activity.setContent {
val children = @Composable {
- Layout({}) { _, _, layoutDirection ->
+ Layout({}) { _, _ ->
actualDirection = layoutDirection
latch.countDown()
layout(100, 100) {}
}
}
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
layout(100, 100) {
measurables.first().measure(constraints, direction.value)
.place(0, 0)
@@ -307,23 +307,23 @@
) {
Layout(
children = {},
- minIntrinsicWidthMeasureBlock = { _, _, layoutDirection ->
+ minIntrinsicWidthMeasureBlock = { _, _ ->
assertEquals(LayoutDirection.Rtl, layoutDirection)
0
},
- minIntrinsicHeightMeasureBlock = { _, _, layoutDirection ->
+ minIntrinsicHeightMeasureBlock = { _, _ ->
assertEquals(LayoutDirection.Rtl, layoutDirection)
0
},
- maxIntrinsicWidthMeasureBlock = { _, _, layoutDirection ->
+ maxIntrinsicWidthMeasureBlock = { _, _ ->
assertEquals(LayoutDirection.Rtl, layoutDirection)
0
},
- maxIntrinsicHeightMeasureBlock = { _, _, layoutDirection ->
+ maxIntrinsicHeightMeasureBlock = { _, _ ->
assertEquals(LayoutDirection.Rtl, layoutDirection)
0
}
- ) { _, _, layoutDirection ->
+ ) { _, _ ->
assertEquals(LayoutDirection.Rtl, layoutDirection)
latch.countDown()
layout(0, 0) {}
@@ -353,7 +353,7 @@
}
},
modifier = modifier
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
val width = placeables.fold(0) { sum, p -> sum + p.width }
val height = placeables.fold(0) { sum, p -> sum + p.height }
@@ -375,7 +375,7 @@
@Composable
private fun UpdateLayoutDirection(ld: LayoutDirection, children: @Composable () -> Unit) {
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val placeable = measurables[0].measure(constraints, ld)
layout(placeable.width, placeable.height) {
placeable.place(0, 0)
@@ -391,7 +391,7 @@
bottom: Dp,
children: @Composable () -> Unit
) {
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val childConstraints = constraints.offset(
-start.toIntPx() - end.toIntPx(),
-top.toIntPx() - bottom.toIntPx()
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
index d4421dfc..a4e3916 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
@@ -37,7 +37,7 @@
import androidx.ui.core.LayoutDirection
import androidx.ui.core.LayoutModifier
import androidx.ui.core.Measurable
-import androidx.ui.core.MeasureBlock
+import androidx.ui.core.MeasureBlock2
import androidx.ui.core.MeasureScope
import androidx.ui.core.Modifier
import androidx.ui.core.Ref
@@ -109,11 +109,11 @@
}
WithConstraints(drawModifier) {
paddedConstraints.value = constraints
- Layout(measureBlock = { _, childConstraints, _ ->
+ Layout(measureBlock = { _, childConstraints ->
firstChildConstraints.value = childConstraints
layout(size, size) { }
}, children = { })
- Layout(measureBlock = { _, chilConstraints, _ ->
+ Layout(measureBlock = { _, chilConstraints ->
secondChildConstraints.value = chilConstraints
layout(size, size) { }
}, children = { })
@@ -157,10 +157,10 @@
Layout(
children = {},
modifier = innerModifier
- ) { measurables, constraints2, _ ->
+ ) { measurables, constraints2 ->
layout(model.size, model.size) {}
}
- }, modifier = outerModifier) { measurables, constraints3, _ ->
+ }, modifier = outerModifier) { measurables, constraints3 ->
val placeable = measurables[0].measure(
Constraints.fixed(
model.size,
@@ -241,7 +241,7 @@
/* intentionally empty */
}
)
- Layout(modifier = background, children = {}) { _, _, _ ->
+ Layout(modifier = background, children = {}) { _, _ ->
// read the model
model.value
latch.countDown()
@@ -409,7 +409,7 @@
Layout(
{},
countdownLatchBackgroundModifier(Color.Yellow)
- ) { _, _, _ ->
+ ) { _, _ ->
// the same as the value inside ValueModel
val size = receivedConstraints.maxWidth
layout(size, size) {}
@@ -450,7 +450,7 @@
if (model) {
latch.countDown()
}
- }) { _, _, _ ->
+ }) { _, _ ->
if (!model) {
model = true
}
@@ -488,7 +488,7 @@
Layout(
children = {},
modifier = countdownLatchBackgroundModifier(Color.Yellow)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(model.value, model.value) {}
}
}
@@ -529,7 +529,7 @@
assertTrue(lastLayoutValue)
drawlatch.countDown()
}
- Layout(children = {}, modifier = drawModifier) { _, _, _ ->
+ Layout(children = {}, modifier = drawModifier) { _, _ ->
lastLayoutValue = state.value
// this registers the value read
if (!state.value) {
@@ -562,7 +562,7 @@
WithConstraints {
assertEquals(1, innerComposeLatch.count)
innerComposeLatch.countDown()
- Layout(children = emptyContent()) { _, _, _ ->
+ Layout(children = emptyContent()) { _, _ ->
assertEquals(1, innerMeasureLatch.count)
innerMeasureLatch.countDown()
layout(100, 100) {
@@ -571,7 +571,7 @@
}
}
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
assertEquals(1, outerMeasureLatch.count)
outerMeasureLatch.countDown()
layout(100, 100) {
@@ -582,7 +582,7 @@
}
}
- Layout(children) { measurables, _, _ ->
+ Layout(children) { measurables, _ ->
layout(100, 100) {
// we fix the constraints used by children so if the constraints given
// by the android view will change it would not affect the test
@@ -610,7 +610,7 @@
Layout(
children = {},
modifier = countdownLatchBackgroundModifier(Color.Transparent)
- ) { _, _, _ ->
+ ) { _, _ ->
// read and write once inside measureBlock
if (state.value == 0) {
state.value = 1
@@ -643,7 +643,7 @@
}
},
modifier = layoutDirectionModifier(LayoutDirection.Rtl)
- ) { m, c, _ ->
+ ) { m, c ->
val p = m.first().measure(c)
layout(0, 0) {
p.place(Offset.Zero)
@@ -673,7 +673,7 @@
}
},
modifier = layoutDirectionModifier(LayoutDirection.Ltr)
- ) { m, c, _ ->
+ ) { m, c ->
val p = m.first().measure(c)
layout(0, 0) {
p.place(Offset.Zero)
@@ -694,7 +694,7 @@
val zeroConstraints = Constraints.fixed(0, 0)
rule.runOnUiThreadIR {
activity.setContent {
- Layout(measureBlock = { measurables, _, _ ->
+ Layout(measureBlock = { measurables, _ ->
layout(0, 0) {
// there was a bug when the child of WithConstraints wasn't marking
// needsRemeasure and it was only measured because the constraints
@@ -706,7 +706,7 @@
}, children = {
WithConstraints {
compositionLatch.countDown()
- Layout(children = {}) { _, _, _ ->
+ Layout(children = {}) { _, _ ->
childMeasureLatch.countDown()
layout(0, 0) {}
}
@@ -772,7 +772,7 @@
latch.countDown()
}
}
- ) { m, _, _ ->
+ ) { m, _ ->
layout(0, 0) {
m.first().measure(Constraints(dpConstraints)).place(Offset.Zero)
}
@@ -815,7 +815,7 @@
WithConstraints {
NeedsOtherMeasurementComposable(10)
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val withConstraintsPlaceable = measurables[0].measure(constraints)
layout(30, 30) {
@@ -829,7 +829,7 @@
Layout(
children = {},
modifier = backgroundModifier(Color.Red)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(foo, foo) { }
}
}
@@ -845,8 +845,8 @@
Layout(
children = children,
modifier = modifier,
- measureBlock = remember<MeasureBlock>(width, height) {
- { measurables, _, _ ->
+ measureBlock = remember<MeasureBlock2>(width, height) {
+ { measurables, _ ->
val constraint = Constraints(maxWidth = width, maxHeight = height)
layout(width, height) {
measurables.forEach {
@@ -868,8 +868,8 @@
height: Int,
children: @Composable () -> Unit
) {
- Layout(children = children, measureBlock = remember<MeasureBlock>(width, height) {
- { measurables, _, _ ->
+ Layout(children = children, measureBlock = remember<MeasureBlock2>(width, height) {
+ { measurables, _ ->
val constraint = Constraints(maxWidth = width, maxHeight = height)
val placeables = measurables.map { it.measure(constraint) }
layout(width, height) {
@@ -883,7 +883,7 @@
@Composable
private fun ChangingConstraintsLayout(size: State<Int>, children: @Composable () -> Unit) {
- Layout(children) { measurables, _, _ ->
+ Layout(children) { measurables, _ ->
layout(100, 100) {
val constraints = Constraints.fixed(size.value, size.value)
measurables.first().measure(constraints).place(0, 0)
@@ -896,7 +896,7 @@
direction: State<LayoutDirection>,
children: @Composable () -> Unit
) {
- Layout(children) { measurables, _, _ ->
+ Layout(children) { measurables, _ ->
layout(100, 100) {
val constraints = Constraints.fixed(100, 100)
measurables.first().measure(constraints, direction.value).place(0, 0)
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WrapperTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WrapperTest.kt
index 1245d3d..3440074 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WrapperTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WrapperTest.kt
@@ -18,7 +18,10 @@
import android.widget.FrameLayout
import androidx.compose.Composable
import androidx.compose.Composition
+import androidx.compose.Providers
import androidx.compose.Recomposer
+import androidx.compose.ambientOf
+import androidx.compose.compositionReference
import androidx.compose.invalidate
import androidx.compose.onActive
import androidx.compose.onCommit
@@ -27,12 +30,14 @@
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.ViewTreeLifecycleOwner
-import androidx.test.filters.SmallTest
+import androidx.test.filters.MediumTest
import androidx.ui.core.setContent
import androidx.ui.framework.test.TestActivity
+import androidx.ui.viewinterop.AndroidView
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
+import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -43,7 +48,7 @@
@Composable private fun Recompose(body: @Composable (recompose: () -> Unit) -> Unit) =
body(invalidate)
-@SmallTest
+@MediumTest
@RunWith(JUnit4::class)
class WrapperTest {
@Suppress("DEPRECATION")
@@ -134,6 +139,34 @@
}
}
+ @Test
+ @Ignore("b/159106722")
+ fun compositionLinked_whenParentProvided() {
+ val composedLatch = CountDownLatch(1)
+ var value = 0f
+
+ activityTestRule.runOnUiThread {
+ val frameLayout = FrameLayout(activity)
+ activity.setContent {
+ val ambient = ambientOf<Float>()
+ Providers(ambient provides 1f) {
+ val recomposer = Recomposer.current()
+ val composition = compositionReference()
+
+ AndroidView(frameLayout)
+ onCommit {
+ frameLayout.setContent(recomposer, composition) {
+ value = ambient.current
+ composedLatch.countDown()
+ }
+ }
+ }
+ }
+ }
+ assertTrue(composedLatch.await(1, TimeUnit.SECONDS))
+ assertEquals(1f, value)
+ }
+
private class RegistryOwner : LifecycleOwner {
var registry = LifecycleRegistry(this).also {
it.currentState = Lifecycle.State.RESUMED
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/compat/XmlVectorParserTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/compat/XmlVectorParserTest.kt
index 2324088..658288a 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/compat/XmlVectorParserTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/compat/XmlVectorParserTest.kt
@@ -63,16 +63,16 @@
assertEquals(10.0f, moveTo.y)
val relativeLineTo1 = path[1].assertType<PathNode.RelativeLineTo>()
- assertEquals(10.0f, relativeLineTo1.x)
- assertEquals(0.0f, relativeLineTo1.y)
+ assertEquals(10.0f, relativeLineTo1.dx)
+ assertEquals(0.0f, relativeLineTo1.dy)
val relativeLineTo2 = path[2].assertType<PathNode.RelativeLineTo>()
- assertEquals(0.0f, relativeLineTo2.x)
- assertEquals(10.0f, relativeLineTo2.y)
+ assertEquals(0.0f, relativeLineTo2.dx)
+ assertEquals(10.0f, relativeLineTo2.dy)
val relativeLineTo3 = path[3].assertType<PathNode.RelativeLineTo>()
- assertEquals(-10.0f, relativeLineTo3.x)
- assertEquals(0.0f, relativeLineTo3.y)
+ assertEquals(-10.0f, relativeLineTo3.dx)
+ assertEquals(0.0f, relativeLineTo3.dy)
path[4].assertType<PathNode.Close>()
}
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
index e0b6df8..b797e05 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
@@ -304,7 +304,7 @@
*/
@Composable
private fun SimpleTestLayout(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
if (measurables.isEmpty()) {
layout(constraints.minWidth, constraints.minHeight) {}
} else {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidAmbients.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidAmbients.kt
index c971a90..4a78076 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidAmbients.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidAmbients.kt
@@ -19,11 +19,13 @@
import android.content.Context
import android.content.res.Configuration
import android.view.View
+import androidx.animation.rootAnimationClockFactory
import androidx.compose.Composable
-import androidx.compose.NeverEqual
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Providers
import androidx.compose.ambientOf
import androidx.compose.getValue
+import androidx.compose.neverEqualPolicy
import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.state
@@ -31,13 +33,19 @@
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModelStoreOwner
import androidx.ui.platform.AndroidUriHandler
+import androidx.ui.platform.UriHandler
+import androidx.ui.savedinstancestate.UiSavedStateRegistryAmbient
+import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.Dispatchers
/**
* The Android [Configuration]. The [Configuration] is useful for determining how to organize the
* UI.
*/
-val ConfigurationAmbient = ambientOf<Configuration>(NeverEqual)
+val ConfigurationAmbient = ambientOf<Configuration>(
+ @OptIn(ExperimentalComposeApi::class)
+ neverEqualPolicy()
+)
/**
* Provides a [Context] that can be used by Android applications.
@@ -62,7 +70,10 @@
@Composable
internal fun ProvideAndroidAmbients(owner: AndroidOwner, content: @Composable () -> Unit) {
val context = owner.view.context
- var configuration by state(NeverEqual) {
+ var configuration by state(
+ @OptIn(ExperimentalComposeApi::class)
+ neverEqualPolicy()
+ ) {
context.applicationContext.resources.configuration
}
// onConfigurationChange is the correct hook to update configuration, however it is
@@ -94,3 +105,32 @@
)
}
}
+
+// TODO(igotti): move back to Ambients.kt once Owner will be commonized.
+@Composable
+@OptIn(androidx.animation.InternalAnimationApi::class)
+internal fun ProvideCommonAmbients(
+ owner: Owner,
+ uriHandler: UriHandler,
+ coroutineContext: CoroutineContext,
+ content: @Composable () -> Unit
+) {
+ val rootAnimationClock = remember { rootAnimationClockFactory() }
+
+ Providers(
+ AnimationClockAmbient provides rootAnimationClock,
+ AutofillAmbient provides owner.autofill,
+ AutofillTreeAmbient provides owner.autofillTree,
+ ClipboardManagerAmbient provides owner.clipboardManager,
+ @Suppress("DEPRECATION")
+ CoroutineContextAmbient provides coroutineContext,
+ DensityAmbient provides owner.density,
+ FontLoaderAmbient provides owner.fontLoader,
+ HapticFeedBackAmbient provides owner.hapticFeedBack,
+ TextInputServiceAmbient provides owner.textInputService,
+ TextToolbarAmbient provides owner.textToolbar,
+ UiSavedStateRegistryAmbient provides owner.savedStateRegistry,
+ UriHandlerAmbient provides uriHandler,
+ children = content
+ )
+}
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
index 387e9cc..ef772aa 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+@file:OptIn(ExperimentalComposeApi::class)
package androidx.ui.core
import android.annotation.SuppressLint
@@ -31,14 +33,13 @@
import android.view.View
import android.view.ViewGroup
import android.view.ViewStructure
-import android.view.accessibility.AccessibilityEvent
-import android.view.accessibility.AccessibilityManager
import android.view.autofill.AutofillValue
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
+import androidx.compose.ExperimentalComposeApi
+import androidx.compose.snapshots.SnapshotStateObserver
import androidx.core.os.HandlerCompat
import androidx.core.view.ViewCompat
-import androidx.core.view.accessibility.AccessibilityNodeProviderCompat
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModelStoreOwner
import androidx.lifecycle.ViewTreeLifecycleOwner
@@ -63,8 +64,6 @@
import androidx.ui.core.semantics.SemanticsNode
import androidx.ui.core.semantics.SemanticsModifierCore
import androidx.ui.core.semantics.SemanticsOwner
-import androidx.ui.core.semantics.getAllSemanticsNodesToMap
-import androidx.ui.core.semantics.getOrNull
import androidx.ui.core.text.AndroidFontResourceLoader
import androidx.ui.core.texttoolbar.AndroidTextToolbar
import androidx.ui.core.texttoolbar.TextToolbar
@@ -80,11 +79,9 @@
import androidx.ui.input.TextInputServiceAndroid
import androidx.ui.input.textInputServiceFactory
import androidx.ui.savedinstancestate.UiSavedStateRegistry
-import androidx.ui.semantics.SemanticsProperties
import androidx.ui.text.font.Font
import androidx.ui.unit.Density
import androidx.ui.unit.IntOffset
-import androidx.ui.unit.max
import androidx.ui.util.fastForEach
import androidx.ui.util.trace
import java.lang.reflect.Method
@@ -116,7 +113,6 @@
) : ViewGroup(context), AndroidOwner {
override val view: View = this
- private val accessibilityDelegate = AndroidComposeViewAccessibilityDelegateCompat(this)
override var density = Density(context)
private set
@@ -136,23 +132,8 @@
it.modifier = Modifier.drawLayer() + semanticsModifier + focusModifier + keyInputModifier
}
- private inner class SemanticsNodeCopy(
- semanticsNode: SemanticsNode
- ) {
- val config = semanticsNode.config
- val children: MutableSet<Int> = mutableSetOf()
-
- init {
- semanticsNode.children.fastForEach { child ->
- children.add(child.id)
- }
- }
- }
-
override val semanticsOwner: SemanticsOwner = SemanticsOwner(root)
- private var semanticsNodes: MutableMap<Int, SemanticsNodeCopy> = mutableMapOf()
- private var semanticsRoot = SemanticsNodeCopy(semanticsOwner.rootSemanticsNode)
- private var checkingForSemanticsChanges = false
+ private val accessibilityDelegate = AndroidComposeViewAccessibilityDelegateCompat(this)
// Used by components that want to provide autofill semantic information.
// TODO: Replace with SemanticsTree: Temporary hack until we have a semantics tree implemented.
@@ -198,16 +179,6 @@
}
}
- override fun dispatchWindowFocusChanged(hasFocus: Boolean) {
- Log.d(FOCUS_TAG, "Owner WindowFocusChanged($hasFocus)")
- // If the focus state is not Inactive, it indicates that this is not the first time that
- // this Window got focus. So we maintain the previous focus state.
- if (hasFocus && focusModifier.focusDetailedState == Inactive) {
- focusModifier.focusDetailedState = Active
- // TODO(b/152535715): propagate focus to children based on child focusability.
- }
- }
-
override fun sendKeyEvent(keyEvent: KeyEvent): Boolean {
return keyInputModifier.processKeyInput(keyEvent)
}
@@ -222,7 +193,7 @@
return sendKeyEvent(keyEvent)
}
- private val modelObserver = ModelObserver { command ->
+ private val snapshotObserver = SnapshotStateObserver { command ->
if (handler.looper === Looper.myLooper()) {
command()
} else {
@@ -250,10 +221,12 @@
}
}
+ @OptIn(InternalCoreApi::class)
override var showLayoutBounds = false
override fun pauseModelReadObserveration(block: () -> Unit) =
- modelObserver.pauseObservingReads(block)
+ @OptIn(ExperimentalComposeApi::class)
+ snapshotObserver.pauseObservingReads(block)
init {
setWillNotDraw(false)
@@ -287,7 +260,7 @@
override fun onDetach(node: LayoutNode) {
measureAndLayoutDelegate.onNodeDetached(node)
- modelObserver.clear(node)
+ snapshotObserver.clear(node)
}
private val androidViewsHandler by lazy(LazyThreadSafetyMode.NONE) {
@@ -311,15 +284,20 @@
private val measureAndLayoutDelegate = MeasureAndLayoutDelegate(root)
+ private var measureAndLayoutScheduled = false
+
private val measureAndLayoutHandler: Handler =
HandlerCompat.createAsync(Looper.getMainLooper()) {
+ measureAndLayoutScheduled = false
measureAndLayout()
true
}
private fun scheduleMeasureAndLayout() {
- measureAndLayoutHandler.removeMessages(0)
- measureAndLayoutHandler.sendEmptyMessage(0)
+ if (!isLayoutRequested && !measureAndLayoutScheduled) {
+ measureAndLayoutScheduled = true
+ measureAndLayoutHandler.sendEmptyMessage(0)
+ }
}
override val measureIteration: Long get() = measureAndLayoutDelegate.measureIteration
@@ -380,15 +358,15 @@
// [ Layout block end ]
override fun observeLayoutModelReads(node: LayoutNode, block: () -> Unit) {
- modelObserver.observeReads(node, onCommitAffectingLayout, block)
+ snapshotObserver.observeReads(node, onCommitAffectingLayout, block)
}
override fun observeMeasureModelReads(node: LayoutNode, block: () -> Unit) {
- modelObserver.observeReads(node, onCommitAffectingMeasure, block)
+ snapshotObserver.observeReads(node, onCommitAffectingMeasure, block)
}
fun observeLayerModelReads(layer: OwnedLayer, block: () -> Unit) {
- modelObserver.observeReads(layer, onCommitAffectingLayer, block)
+ snapshotObserver.observeReads(layer, onCommitAffectingLayer, block)
}
override fun onDraw(canvas: android.graphics.Canvas) {
@@ -414,111 +392,15 @@
}
override fun onSemanticsChange() {
- if ((context.getSystemService(Context.ACCESSIBILITY_SERVICE)
- as AccessibilityManager).isEnabled && !checkingForSemanticsChanges
- ) {
- checkingForSemanticsChanges = true
- Handler(Looper.getMainLooper()).post {
- checkForSemanticsChanges()
- checkingForSemanticsChanges = false
- }
- }
+ accessibilityDelegate.onSemanticsChange()
}
private fun updateLayerProperties(layer: OwnedLayer) {
- modelObserver.observeReads(layer, onCommitAffectingLayerParams) {
+ snapshotObserver.observeReads(layer, onCommitAffectingLayerParams) {
layer.updateLayerProperties()
}
}
- private fun checkForSemanticsChanges() {
- val newSemanticsNodes = semanticsOwner.getAllSemanticsNodesToMap()
-
- // Structural change
- sendSemanticsStructureChangeEvents(semanticsOwner.rootSemanticsNode, semanticsRoot)
-
- // Property change
- for (id in newSemanticsNodes.keys) {
- if (semanticsNodes.contains(id)) {
- // We do doing this search because the new configuration is set as a whole, so we
- // can't indicate which property is changed when setting the new configuration.
- var newNode = newSemanticsNodes[id]
- var oldNode = semanticsNodes[id]
- for (entry in newNode!!.config) {
- if (entry.value == oldNode!!.config.getOrNull(entry.key)) {
- continue
- }
- when (entry.key) {
- // we are in aosp, so can't use the state description yet.
- SemanticsProperties.AccessibilityValue,
- SemanticsProperties.AccessibilityLabel ->
- accessibilityDelegate.sendEventForVirtualView(
- semanticsNodeIdToAccessibilityVirtualNodeId(id),
- AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
- AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION,
- entry.value as CharSequence
- )
- else -> {
- // TODO(b/151840490) send the correct events when property changes
- }
- }
- }
- }
- }
-
- // Update the cache
- semanticsNodes.clear()
- for (entry in newSemanticsNodes.entries) {
- semanticsNodes[entry.key] = SemanticsNodeCopy(entry.value)
- }
- semanticsRoot = SemanticsNodeCopy(semanticsOwner.rootSemanticsNode)
- }
-
- private fun sendSemanticsStructureChangeEvents(
- newNode: SemanticsNode,
- oldNode: SemanticsNodeCopy
- ) {
- var newChildren: MutableSet<Int> = mutableSetOf()
-
- // If any child is added, clear the subtree rooted at this node and return.
- newNode.children.fastForEach { child ->
- if (!oldNode.children.contains(child.id)) {
- accessibilityDelegate.sendEventForVirtualView(
- semanticsNodeIdToAccessibilityVirtualNodeId(newNode.id),
- AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
- AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE,
- null
- )
- return
- }
- newChildren.add(child.id)
- }
-
- // If any child is deleted, clear the subtree rooted at this node and return.
- for (child in oldNode.children) {
- if (!newChildren.contains(child)) {
- accessibilityDelegate.sendEventForVirtualView(
- semanticsNodeIdToAccessibilityVirtualNodeId(newNode.id),
- AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
- AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE,
- null
- )
- return
- }
- }
-
- newNode.children.fastForEach { child ->
- sendSemanticsStructureChangeEvents(child, semanticsNodes[child.id]!!)
- }
- }
-
- private fun semanticsNodeIdToAccessibilityVirtualNodeId(id: Int): Int {
- if (id == semanticsOwner.rootSemanticsNode.id) {
- return AccessibilityNodeProviderCompat.HOST_VIEW_ID
- }
- return id
- }
-
override fun dispatchDraw(canvas: android.graphics.Canvas) {
measureAndLayout()
// we don't have to observe here because the root has a layer modifier
@@ -560,7 +442,7 @@
override fun onAttachedToWindow() {
super.onAttachedToWindow()
showLayoutBounds = getIsShowingLayoutBounds()
- modelObserver.enableModelUpdatesObserving(true)
+ snapshotObserver.enableStateUpdatesObserving(true)
ifDebug { if (autofillSupported()) _autofill?.registerCallback() }
root.attach(this)
@@ -583,8 +465,11 @@
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
- modelObserver.enableModelUpdatesObserving(false)
+ snapshotObserver.enableStateUpdatesObserving(false)
ifDebug { if (autofillSupported()) _autofill?.unregisterCallback() }
+ if (measureAndLayoutScheduled) {
+ measureAndLayoutHandler.removeMessages(0)
+ }
root.detach()
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
index a43eb7b..66052a2 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
@@ -18,6 +18,8 @@
import android.content.Context
import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
import android.text.TextUtils
import android.view.MotionEvent
import android.view.View
@@ -33,6 +35,7 @@
import androidx.core.view.accessibility.AccessibilityNodeProviderCompat
import androidx.ui.core.semantics.SemanticsNode
import androidx.ui.core.semantics.findChildById
+import androidx.ui.core.semantics.getAllSemanticsNodesToMap
import androidx.ui.core.semantics.getOrNull
import androidx.ui.semantics.CustomAccessibilityAction
import androidx.ui.semantics.SemanticsActions
@@ -52,45 +55,45 @@
*/
const val ParcelSafeTextLength = 100000
private val AccessibilityActionsResourceIds = intArrayOf(
- androidx.ui.core.R.id.accessibility_custom_action_0,
- androidx.ui.core.R.id.accessibility_custom_action_1,
- androidx.ui.core.R.id.accessibility_custom_action_2,
- androidx.ui.core.R.id.accessibility_custom_action_3,
- androidx.ui.core.R.id.accessibility_custom_action_4,
- androidx.ui.core.R.id.accessibility_custom_action_5,
- androidx.ui.core.R.id.accessibility_custom_action_6,
- androidx.ui.core.R.id.accessibility_custom_action_7,
- androidx.ui.core.R.id.accessibility_custom_action_8,
- androidx.ui.core.R.id.accessibility_custom_action_9,
- androidx.ui.core.R.id.accessibility_custom_action_10,
- androidx.ui.core.R.id.accessibility_custom_action_11,
- androidx.ui.core.R.id.accessibility_custom_action_12,
- androidx.ui.core.R.id.accessibility_custom_action_13,
- androidx.ui.core.R.id.accessibility_custom_action_14,
- androidx.ui.core.R.id.accessibility_custom_action_15,
- androidx.ui.core.R.id.accessibility_custom_action_16,
- androidx.ui.core.R.id.accessibility_custom_action_17,
- androidx.ui.core.R.id.accessibility_custom_action_18,
- androidx.ui.core.R.id.accessibility_custom_action_19,
- androidx.ui.core.R.id.accessibility_custom_action_20,
- androidx.ui.core.R.id.accessibility_custom_action_21,
- androidx.ui.core.R.id.accessibility_custom_action_22,
- androidx.ui.core.R.id.accessibility_custom_action_23,
- androidx.ui.core.R.id.accessibility_custom_action_24,
- androidx.ui.core.R.id.accessibility_custom_action_25,
- androidx.ui.core.R.id.accessibility_custom_action_26,
- androidx.ui.core.R.id.accessibility_custom_action_27,
- androidx.ui.core.R.id.accessibility_custom_action_28,
- androidx.ui.core.R.id.accessibility_custom_action_29,
- androidx.ui.core.R.id.accessibility_custom_action_30,
- androidx.ui.core.R.id.accessibility_custom_action_31
+ R.id.accessibility_custom_action_0,
+ R.id.accessibility_custom_action_1,
+ R.id.accessibility_custom_action_2,
+ R.id.accessibility_custom_action_3,
+ R.id.accessibility_custom_action_4,
+ R.id.accessibility_custom_action_5,
+ R.id.accessibility_custom_action_6,
+ R.id.accessibility_custom_action_7,
+ R.id.accessibility_custom_action_8,
+ R.id.accessibility_custom_action_9,
+ R.id.accessibility_custom_action_10,
+ R.id.accessibility_custom_action_11,
+ R.id.accessibility_custom_action_12,
+ R.id.accessibility_custom_action_13,
+ R.id.accessibility_custom_action_14,
+ R.id.accessibility_custom_action_15,
+ R.id.accessibility_custom_action_16,
+ R.id.accessibility_custom_action_17,
+ R.id.accessibility_custom_action_18,
+ R.id.accessibility_custom_action_19,
+ R.id.accessibility_custom_action_20,
+ R.id.accessibility_custom_action_21,
+ R.id.accessibility_custom_action_22,
+ R.id.accessibility_custom_action_23,
+ R.id.accessibility_custom_action_24,
+ R.id.accessibility_custom_action_25,
+ R.id.accessibility_custom_action_26,
+ R.id.accessibility_custom_action_27,
+ R.id.accessibility_custom_action_28,
+ R.id.accessibility_custom_action_29,
+ R.id.accessibility_custom_action_30,
+ R.id.accessibility_custom_action_31
)
}
/** Virtual view id for the currently hovered logical item. */
private var hoveredVirtualViewId = InvalidId
private val accessibilityManager: AccessibilityManager =
- view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE) as
- AccessibilityManager
+ view.context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
+ private val handler = Handler(Looper.getMainLooper())
private var nodeProvider: AccessibilityNodeProviderCompat = MyNodeProvider()
private var focusedVirtualViewId = InvalidId
// For actionIdToId and labelToActionId, the keys are the virtualViewIds. The value of
@@ -99,6 +102,23 @@
private var actionIdToLabel = SparseArrayCompat<SparseArrayCompat<CharSequence>>()
private var labelToActionId = SparseArrayCompat<Map<CharSequence, Int>>()
+ private class SemanticsNodeCopy(
+ semanticsNode: SemanticsNode
+ ) {
+ val config = semanticsNode.config
+ val children: MutableSet<Int> = mutableSetOf()
+
+ init {
+ semanticsNode.children.fastForEach { child ->
+ children.add(child.id)
+ }
+ }
+ }
+
+ private var semanticsNodes: MutableMap<Int, SemanticsNodeCopy> = mutableMapOf()
+ private var semanticsRoot = SemanticsNodeCopy(view.semanticsOwner.rootSemanticsNode)
+ private var checkingForSemanticsChanges = false
+
fun createNodeInfo(virtualViewId: Int):
AccessibilityNodeInfoCompat {
val info: AccessibilityNodeInfoCompat = AccessibilityNodeInfoCompat.obtain()
@@ -131,7 +151,7 @@
// TODO(b/151240295): Should we have widgets class name?
info.className = ClassName
- info.setPackageName(view.getContext().getPackageName())
+ info.packageName = view.context.packageName
try {
info.setBoundsInScreen(
android.graphics.Rect(
@@ -153,13 +173,13 @@
// Manage internal accessibility focus state.
if (focusedVirtualViewId == virtualViewId) {
- info.setAccessibilityFocused(true)
+ info.isAccessibilityFocused = true
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat
.ACTION_CLEAR_ACCESSIBILITY_FOCUS
)
} else {
- info.setAccessibilityFocused(false)
+ info.isAccessibilityFocused = false
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat
.ACTION_ACCESSIBILITY_FOCUS
@@ -212,7 +232,7 @@
)
}
- var rangeInfo =
+ val rangeInfo =
semanticsNode.config.getOrNull(SemanticsProperties.AccessibilityRangeInfo)
if (rangeInfo != null) {
info.rangeInfo = AccessibilityNodeInfoCompat.RangeInfoCompat.obtain(
@@ -222,26 +242,26 @@
}
if (semanticsNode.config.contains(CustomActions)) {
- var customActions = semanticsNode.config[CustomActions]
+ val customActions = semanticsNode.config[CustomActions]
if (customActions.size >= AccessibilityActionsResourceIds.size) {
throw IllegalStateException(
"Can't have more than " +
"${AccessibilityActionsResourceIds.size} custom actions for one widget"
)
}
- var currentActionIdToLabel = SparseArrayCompat<CharSequence>()
- var currentLabelToActionId = mutableMapOf<CharSequence, Int>()
+ val currentActionIdToLabel = SparseArrayCompat<CharSequence>()
+ val currentLabelToActionId = mutableMapOf<CharSequence, Int>()
// If this virtual node had custom action id assignment before, we try to keep the id
// unchanged for the same action (identified by action label). This way, we can
// minimize the influence of custom action change between custom actions are
// presented to the user and actually performed.
if (labelToActionId.containsKey(virtualViewId)) {
- var oldLabelToActionId = labelToActionId[virtualViewId]
- var availableIds = AccessibilityActionsResourceIds.toMutableList()
- var unassignedActions = mutableListOf<CustomAccessibilityAction>()
+ val oldLabelToActionId = labelToActionId[virtualViewId]
+ val availableIds = AccessibilityActionsResourceIds.toMutableList()
+ val unassignedActions = mutableListOf<CustomAccessibilityAction>()
for (action in customActions) {
if (oldLabelToActionId!!.contains(action.label)) {
- var actionId = oldLabelToActionId[action.label]
+ val actionId = oldLabelToActionId[action.label]
currentActionIdToLabel.put(actionId!!, action.label)
currentLabelToActionId[action.label] = actionId
availableIds.remove(actionId)
@@ -255,7 +275,7 @@
}
}
for ((index, action) in unassignedActions.withIndex()) {
- var actionId = availableIds[index]
+ val actionId = availableIds[index]
currentActionIdToLabel.put(actionId, action.label)
currentLabelToActionId[action.label] = actionId
info.addAction(
@@ -266,7 +286,7 @@
}
} else {
for ((index, action) in customActions.withIndex()) {
- var actionId = AccessibilityActionsResourceIds[index]
+ val actionId = AccessibilityActionsResourceIds[index]
currentActionIdToLabel.put(actionId, action.label)
currentLabelToActionId[action.label] = actionId
info.addAction(
@@ -305,8 +325,9 @@
* @return Whether this virtual view actually took accessibility focus.
*/
private fun requestAccessibilityFocus(virtualViewId: Int): Boolean {
- if (!accessibilityManager.isEnabled() ||
- !accessibilityManager.isTouchExplorationEnabled()) {
+ if (!accessibilityManager.isEnabled ||
+ !accessibilityManager.isTouchExplorationEnabled
+ ) {
return false
}
// TODO: Check virtual view visibility.
@@ -343,9 +364,9 @@
* You should call this method after performing a user action that normally
* fires an accessibility event, such as clicking on an item.
*
- * <pre>public void performItemClick(T item) {
+ * <pre>public performItemClick(T item) {
* ...
- * sendEventForVirtualViewId(item.id, AccessibilityEvent.TYPE_VIEW_CLICKED)
+ * sendEventForVirtualView(item.id, AccessibilityEvent.TYPE_VIEW_CLICKED)
* }
* </pre>
*
@@ -355,13 +376,13 @@
* @param contentDescription Content description of this event.
* @return true if the event was sent successfully.
*/
- fun sendEventForVirtualView(
+ private fun sendEventForVirtualView(
virtualViewId: Int,
eventType: Int,
- contentChangeType: Int?,
- contentDescription: CharSequence?
+ contentChangeType: Int? = null,
+ contentDescription: CharSequence? = null
): Boolean {
- if ((virtualViewId == InvalidId) || !accessibilityManager.isEnabled()) {
+ if ((virtualViewId == InvalidId) || !accessibilityManager.isEnabled) {
return false
}
@@ -374,6 +395,7 @@
if (contentDescription != null) {
event.contentDescription = contentDescription
}
+
return parent.requestSendAccessibilityEvent(view, event)
}
@@ -393,7 +415,7 @@
event.className = ClassName
// Don't allow the client to override these properties.
- event.packageName = view.getContext().getPackageName()
+ event.packageName = view.context.packageName
event.setSource(view, virtualViewId)
return event
@@ -426,7 +448,7 @@
action: Int,
arguments: Bundle?
): Boolean {
- var node: SemanticsNode
+ val node: SemanticsNode
if (virtualViewId == AccessibilityNodeProviderCompat.HOST_VIEW_ID) {
node = view.semanticsOwner.rootSemanticsNode
} else {
@@ -465,13 +487,17 @@
}
android.R.id.accessibilityActionSetProgress -> {
if (arguments == null || !arguments.containsKey(
- AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE)) {
+ AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE
+ )
+ ) {
return false
}
return if (node.canPerformAction(SemanticsActions.SetProgress)) {
node.config[SemanticsActions.SetProgress].action(
arguments.getFloat(
- AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE))
+ AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE
+ )
+ )
} else {
false
}
@@ -515,7 +541,7 @@
return false
}
- when (event.getAction()) {
+ when (event.action) {
MotionEvent.ACTION_HOVER_MOVE, MotionEvent.ACTION_HOVER_ENTER -> {
val virtualViewId: Int = getVirtualViewAt(event.getX(), event.getY())
updateHoveredVirtualView(virtualViewId)
@@ -535,8 +561,8 @@
}
private fun getVirtualViewAt(x: Float, y: Float): Int {
- var node = view.semanticsOwner.rootSemanticsNode
- var id = findVirtualViewAt(x + node.globalBounds.left,
+ val node = view.semanticsOwner.rootSemanticsNode
+ val id = findVirtualViewAt(x + node.globalBounds.left,
y + node.globalBounds.top, node)
if (id == node.id) {
return AccessibilityNodeProviderCompat.HOST_VIEW_ID
@@ -547,7 +573,7 @@
// TODO(b/151729467): compose accessibility getVirtualViewAt needs to be more efficient
private fun findVirtualViewAt(x: Float, y: Float, node: SemanticsNode): Int {
node.children.fastForEach {
- var id = findVirtualViewAt(x, y, it)
+ val id = findVirtualViewAt(x, y, it)
if (id != InvalidId) {
return id
}
@@ -620,6 +646,110 @@
// TODO (in a separate cl): Called when the SemanticsNode with id semanticsNodeId disappears.
// fun clearNode(semanticsNodeId: Int) { // clear the actionIdToId and labelToActionId nodes }
+ internal fun onSemanticsChange() {
+ if (accessibilityManager.isEnabled && !checkingForSemanticsChanges) {
+ checkingForSemanticsChanges = true
+ handler.post {
+ checkForSemanticsChanges()
+ checkingForSemanticsChanges = false
+ }
+ }
+ }
+
+ private fun checkForSemanticsChanges() {
+ val newSemanticsNodes = view.semanticsOwner.getAllSemanticsNodesToMap()
+
+ // Structural change
+ sendSemanticsStructureChangeEvents(view.semanticsOwner.rootSemanticsNode, semanticsRoot)
+
+ // Property change
+ sendSemanticsPropertyChangeEvents(newSemanticsNodes)
+
+ // Update the cache
+ semanticsNodes.clear()
+ for (entry in newSemanticsNodes.entries) {
+ semanticsNodes[entry.key] = SemanticsNodeCopy(entry.value)
+ }
+ semanticsRoot = SemanticsNodeCopy(view.semanticsOwner.rootSemanticsNode)
+ }
+
+ private fun sendSemanticsPropertyChangeEvents(newSemanticsNodes: Map<Int, SemanticsNode>) {
+ for (id in newSemanticsNodes.keys) {
+ if (!semanticsNodes.contains(id)) {
+ continue
+ }
+
+ // We do doing this search because the new configuration is set as a whole, so we
+ // can't indicate which property is changed when setting the new configuration.
+ val newNode = newSemanticsNodes[id]
+ val oldNode = semanticsNodes[id]
+ for (entry in newNode!!.config) {
+ if (entry.value == oldNode!!.config.getOrNull(entry.key)) {
+ continue
+ }
+ when (entry.key) {
+ // we are in aosp, so can't use the state description yet.
+ SemanticsProperties.AccessibilityValue,
+ SemanticsProperties.AccessibilityLabel ->
+ sendEventForVirtualView(
+ semanticsNodeIdToAccessibilityVirtualNodeId(id),
+ AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION,
+ entry.value as CharSequence
+ )
+ else -> {
+ // TODO(b/151840490) send the correct events when property changes
+ }
+ }
+ }
+ }
+ }
+
+ private fun sendSemanticsStructureChangeEvents(
+ newNode: SemanticsNode,
+ oldNode: SemanticsNodeCopy
+ ) {
+ val newChildren: MutableSet<Int> = mutableSetOf()
+
+ // If any child is added, clear the subtree rooted at this node and return.
+ newNode.children.fastForEach { child ->
+ if (!oldNode.children.contains(child.id)) {
+ sendEventForVirtualView(
+ semanticsNodeIdToAccessibilityVirtualNodeId(newNode.id),
+ AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE,
+ null
+ )
+ return
+ }
+ newChildren.add(child.id)
+ }
+
+ // If any child is deleted, clear the subtree rooted at this node and return.
+ for (child in oldNode.children) {
+ if (!newChildren.contains(child)) {
+ sendEventForVirtualView(
+ semanticsNodeIdToAccessibilityVirtualNodeId(newNode.id),
+ AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE,
+ null
+ )
+ return
+ }
+ }
+
+ newNode.children.fastForEach { child ->
+ sendSemanticsStructureChangeEvents(child, semanticsNodes[child.id]!!)
+ }
+ }
+
+ private fun semanticsNodeIdToAccessibilityVirtualNodeId(id: Int): Int {
+ if (id == view.semanticsOwner.rootSemanticsNode.id) {
+ return AccessibilityNodeProviderCompat.HOST_VIEW_ID
+ }
+ return id
+ }
+
inner class MyNodeProvider() : AccessibilityNodeProviderCompat() {
override fun createAccessibilityNodeInfo(virtualViewId: Int):
AccessibilityNodeInfoCompat? {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/DelegatingLayoutNodeWrapper.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/DelegatingLayoutNodeWrapper.kt
index 66dec2d..d55e4b3 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/DelegatingLayoutNodeWrapper.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/DelegatingLayoutNodeWrapper.kt
@@ -27,8 +27,8 @@
* [LayoutNodeWrapper] with default implementations for methods.
*/
internal open class DelegatingLayoutNodeWrapper<T : Modifier.Element>(
- override val wrapped: LayoutNodeWrapper,
- val modifier: T
+ override var wrapped: LayoutNodeWrapper,
+ open var modifier: T
) : LayoutNodeWrapper(wrapped.layoutNode) {
override val providedAlignmentLines: Set<AlignmentLine>
get() = wrapped.providedAlignmentLines
@@ -39,10 +39,27 @@
override val measureScope: MeasureScope get() = wrapped.measureScope
+ /**
+ * Indicates that this modifier is used in [wrappedBy] also.
+ */
+ var isChained = false
+
init {
wrapped.wrappedBy = this
}
+ /**
+ * Sets the modifier instance to the new modifier. [modifier] must be the
+ * same type as the current modifier.
+ */
+ fun setModifierTo(modifier: Modifier.Element) {
+ if (modifier !== this.modifier) {
+ require(modifier.javaClass == this.modifier.javaClass)
+ @Suppress("UNCHECKED_CAST")
+ this.modifier = modifier as T
+ }
+ }
+
override fun draw(canvas: Canvas) {
withPositionTranslation(canvas) {
wrapped.draw(canvas)
@@ -135,13 +152,11 @@
override val parentData: Any? get() = wrapped.parentData
override fun attach() {
- wrapped.attach()
_isAttached = true
}
override fun detach() {
_isAttached = false
- wrapped.detach()
}
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/InnerPlaceable.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/InnerPlaceable.kt
index 929b6f5..6b710cb 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/InnerPlaceable.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/InnerPlaceable.kt
@@ -73,7 +73,7 @@
override fun minIntrinsicWidth(height: Int, layoutDirection: LayoutDirection): Int {
return layoutNode.measureBlocks.minIntrinsicWidth(
- layoutNode.measureScope,
+ measureScope,
layoutNode.children,
height,
layoutDirection
@@ -82,7 +82,7 @@
override fun minIntrinsicHeight(width: Int, layoutDirection: LayoutDirection): Int {
return layoutNode.measureBlocks.minIntrinsicHeight(
- layoutNode.measureScope,
+ measureScope,
layoutNode.children,
width,
layoutDirection
@@ -91,7 +91,7 @@
override fun maxIntrinsicWidth(height: Int, layoutDirection: LayoutDirection): Int {
return layoutNode.measureBlocks.maxIntrinsicWidth(
- layoutNode.measureScope,
+ measureScope,
layoutNode.children,
height,
layoutDirection
@@ -100,7 +100,7 @@
override fun maxIntrinsicHeight(width: Int, layoutDirection: LayoutDirection): Int {
return layoutNode.measureBlocks.maxIntrinsicHeight(
- layoutNode.measureScope,
+ measureScope,
layoutNode.children,
width,
layoutDirection
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/IntrinsicMeasurable.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/IntrinsicMeasurable.kt
index db10f8e..dc8edb1 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/IntrinsicMeasurable.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/IntrinsicMeasurable.kt
@@ -54,5 +54,9 @@
/**
* A function for performing intrinsic measurement.
*/
+typealias IntrinsicMeasureBlock2 =
+ IntrinsicMeasureScope.(List<IntrinsicMeasurable>, Int) -> Int
+
+@Deprecated("Use IntrinsicMeasureBlock2 instead")
typealias IntrinsicMeasureBlock =
IntrinsicMeasureScope.(List<IntrinsicMeasurable>, Int, LayoutDirection) -> Int
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayerWrapper.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayerWrapper.kt
index 3b96373..9bd3871 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayerWrapper.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayerWrapper.kt
@@ -34,6 +34,13 @@
// Do not invalidate itself on position change.
override val invalidateLayerOnBoundsChange get() = false
+ override var modifier: DrawLayerModifier
+ get() = super.modifier
+ set(value) {
+ super.modifier = value
+ _layer?.modifier = value
+ }
+
private val invalidateParentLayer: () -> Unit = {
wrappedBy?.findLayer()?.invalidate()
}
@@ -161,4 +168,8 @@
hitPointerInputFilters
)
}
+
+ override fun onModifierChanged() {
+ _layer?.invalidate()
+ }
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Layout.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Layout.kt
index 475e343..381d61f 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Layout.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Layout.kt
@@ -17,18 +17,18 @@
package androidx.ui.core
import androidx.compose.Composable
+import androidx.compose.ComposableContract
import androidx.compose.Composition
import androidx.compose.CompositionReference
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.FrameManager
import androidx.compose.Recomposer
import androidx.compose.Stable
-import androidx.compose.Untracked
import androidx.compose.compositionReference
import androidx.compose.currentComposer
import androidx.compose.emit
import androidx.compose.onDispose
import androidx.compose.remember
+import androidx.compose.snapshots.Snapshot
import androidx.ui.core.LayoutNode.LayoutState
import androidx.ui.node.UiApplier
import androidx.ui.unit.Density
@@ -76,6 +76,82 @@
/*crossinline*/
children: @Composable () -> Unit,
/*crossinline*/
+ minIntrinsicWidthMeasureBlock: IntrinsicMeasureBlock2,
+ /*crossinline*/
+ minIntrinsicHeightMeasureBlock: IntrinsicMeasureBlock2,
+ /*crossinline*/
+ maxIntrinsicWidthMeasureBlock: IntrinsicMeasureBlock2,
+ /*crossinline*/
+ maxIntrinsicHeightMeasureBlock: IntrinsicMeasureBlock2,
+ modifier: Modifier = Modifier,
+ /*crossinline*/
+ measureBlock: MeasureBlock2
+) {
+ val measureBlocks = object : LayoutNode.MeasureBlocks {
+ override fun measure(
+ measureScope: MeasureScope,
+ measurables: List<Measurable>,
+ constraints: Constraints,
+ layoutDirection: LayoutDirection
+ ) = measureScope.measureBlock(measurables, constraints)
+ override fun minIntrinsicWidth(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+ ): Int {
+ val receiver = IntrinsicsMeasureScope(intrinsicMeasureScope, layoutDirection)
+ return receiver.minIntrinsicWidthMeasureBlock(measurables, h)
+ }
+ override fun minIntrinsicHeight(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+ ): Int {
+ val receiver = IntrinsicsMeasureScope(intrinsicMeasureScope, layoutDirection)
+ return receiver.minIntrinsicHeightMeasureBlock(measurables, w)
+ }
+ override fun maxIntrinsicWidth(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+ ): Int {
+ val receiver = IntrinsicsMeasureScope(intrinsicMeasureScope, layoutDirection)
+ return receiver.maxIntrinsicWidthMeasureBlock(measurables, h)
+ }
+ override fun maxIntrinsicHeight(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+ ): Int {
+ val receiver = IntrinsicsMeasureScope(intrinsicMeasureScope, layoutDirection)
+ return receiver.maxIntrinsicHeightMeasureBlock(measurables, w)
+ }
+ }
+ Layout(children, measureBlocks, modifier)
+}
+
+@Deprecated(
+ "Use Layout() function with 'MeasureScope.(List<Measurable>, Constraints) -> MeasureScope" +
+ ".MeasureResult' measure block and 'IntrinsicMeasureScope.(List<IntrinsicMeasurable>," +
+ " Int) -> Int' intrinsic measure blocks instead.",
+ ReplaceWith("Layout(children, {measurable, height -> minIntrinsicWidthMeasureBlock}, " +
+ "{measurable, width -> minIntrinsicHeightMeasureBlock}, " +
+ "{measurable, height -> maxIntrinsicWidthMeasureBlock}, " +
+ "{measurable, width -> maxIntrinsicHeightMeasureBlock}," +
+ " modifier, " +
+ "{measurables, constraints -> measureBlock})"
+ )
+)
+@Suppress("DEPRECATION")
+@Composable
+/*inline*/ fun Layout(
+ /*crossinline*/
+ children: @Composable () -> Unit,
+ /*crossinline*/
minIntrinsicWidthMeasureBlock: IntrinsicMeasureBlock,
/*crossinline*/
minIntrinsicHeightMeasureBlock: IntrinsicMeasureBlock,
@@ -150,6 +226,26 @@
children: @Composable () -> Unit,
modifier: Modifier = Modifier,
/*noinline*/
+ measureBlock: MeasureBlock2
+) {
+
+ val measureBlocks = remember(measureBlock) { MeasuringIntrinsicsMeasureBlocks(measureBlock) }
+ Layout(children, measureBlocks, modifier)
+}
+
+@Deprecated(
+ """Use Layout() function with
+ 'MeasureScope.(List<Measurable>, Constraints) -> MeasureScope.MeasureResult'
+ measure block instead.""",
+ ReplaceWith("Layout(children, modifier, {measurables, constraints -> measureBlock})")
+)
+@Suppress("DEPRECATION")
+@Composable
+/*inline*/ fun Layout(
+ /*crossinline*/
+ children: @Composable () -> Unit,
+ modifier: Modifier = Modifier,
+ /*noinline*/
measureBlock: MeasureBlock
) {
@@ -180,7 +276,7 @@
fun MultiMeasureLayout(
modifier: Modifier = Modifier,
children: @Composable () -> Unit,
- measureBlock: MeasureBlock
+ measureBlock: MeasureBlock2
) {
val measureBlocks = remember(measureBlock) { MeasuringIntrinsicsMeasureBlocks(measureBlock) }
val materialized = currentComposer.materialize(modifier)
@@ -284,6 +380,71 @@
* Default [LayoutNode.MeasureBlocks] object implementation, providing intrinsic measurements
* that use the measure block replacing the measure calls with intrinsic measurement calls.
*/
+fun MeasuringIntrinsicsMeasureBlocks(measureBlock: MeasureBlock2) =
+ object : LayoutNode.MeasureBlocks {
+ override fun measure(
+ measureScope: MeasureScope,
+ measurables: List<Measurable>,
+ constraints: Constraints,
+ layoutDirection: LayoutDirection
+ ) = measureScope.measureBlock(measurables, constraints)
+ override fun minIntrinsicWidth(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+ ) = intrinsicMeasureScope.MeasuringMinIntrinsicWidth(
+ measureBlock,
+ measurables,
+ h,
+ layoutDirection
+ )
+ override fun minIntrinsicHeight(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+ ) = intrinsicMeasureScope.MeasuringMinIntrinsicHeight(
+ measureBlock,
+ measurables,
+ w,
+ layoutDirection
+ )
+ override fun maxIntrinsicWidth(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+ ) = intrinsicMeasureScope.MeasuringMaxIntrinsicWidth(
+ measureBlock,
+ measurables,
+ h,
+ layoutDirection
+ )
+ override fun maxIntrinsicHeight(
+ intrinsicMeasureScope: IntrinsicMeasureScope,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+ ) = intrinsicMeasureScope.MeasuringMaxIntrinsicHeight(
+ measureBlock,
+ measurables,
+ w,
+ layoutDirection
+ )
+
+ override fun toString(): String {
+ // this calls simpleIdentityToString on measureBlock because it is typically a lambda,
+ // which has a useless toString that doesn't hint at the source location
+ return simpleIdentityToString(
+ this,
+ "MeasuringIntrinsicsMeasureBlocks"
+ ) + "{ measureBlock=${simpleIdentityToString(measureBlock)} }"
+ }
+ }
+
+@Deprecated("Use MeasuringIntrinsicsMeasureBlocks with MeasureBlock2 instead")
+@Suppress("DEPRECATION")
fun MeasuringIntrinsicsMeasureBlocks(measureBlock: MeasureBlock) =
object : LayoutNode.MeasureBlocks {
override fun measure(
@@ -352,6 +513,22 @@
* measure block with measure calls replaced with intrinsic measurement calls.
*/
private inline fun Density.MeasuringMinIntrinsicWidth(
+ measureBlock: MeasureBlock2 /*TODO: crossinline*/,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+): Int {
+ val mapped = measurables.map {
+ DefaultIntrinsicMeasurable(it, IntrinsicMinMax.Min, IntrinsicWidthHeight.Width)
+ }
+ val constraints = Constraints(maxHeight = h)
+ val layoutReceiver = IntrinsicsMeasureScope(this, layoutDirection)
+ val layoutResult = layoutReceiver.measureBlock(mapped, constraints)
+ return layoutResult.width
+}
+
+@Suppress("DEPRECATION")
+private inline fun Density.MeasuringMinIntrinsicWidth(
measureBlock: MeasureBlock /*TODO: crossinline*/,
measurables: List<IntrinsicMeasurable>,
h: Int,
@@ -371,6 +548,22 @@
* measure block with measure calls replaced with intrinsic measurement calls.
*/
private inline fun Density.MeasuringMinIntrinsicHeight(
+ measureBlock: MeasureBlock2 /*TODO: crossinline*/,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+): Int {
+ val mapped = measurables.map {
+ DefaultIntrinsicMeasurable(it, IntrinsicMinMax.Min, IntrinsicWidthHeight.Height)
+ }
+ val constraints = Constraints(maxWidth = w)
+ val layoutReceiver = IntrinsicsMeasureScope(this, layoutDirection)
+ val layoutResult = layoutReceiver.measureBlock(mapped, constraints)
+ return layoutResult.height
+}
+
+@Suppress("DEPRECATION")
+private inline fun Density.MeasuringMinIntrinsicHeight(
measureBlock: MeasureBlock /*TODO: crossinline*/,
measurables: List<IntrinsicMeasurable>,
w: Int,
@@ -390,6 +583,22 @@
* measure block with measure calls replaced with intrinsic measurement calls.
*/
private inline fun Density.MeasuringMaxIntrinsicWidth(
+ measureBlock: MeasureBlock2 /*TODO: crossinline*/,
+ measurables: List<IntrinsicMeasurable>,
+ h: Int,
+ layoutDirection: LayoutDirection
+): Int {
+ val mapped = measurables.map {
+ DefaultIntrinsicMeasurable(it, IntrinsicMinMax.Max, IntrinsicWidthHeight.Width)
+ }
+ val constraints = Constraints(maxHeight = h)
+ val layoutReceiver = IntrinsicsMeasureScope(this, layoutDirection)
+ val layoutResult = layoutReceiver.measureBlock(mapped, constraints)
+ return layoutResult.width
+}
+
+@Suppress("DEPRECATION")
+private inline fun Density.MeasuringMaxIntrinsicWidth(
measureBlock: MeasureBlock /*TODO: crossinline*/,
measurables: List<IntrinsicMeasurable>,
h: Int,
@@ -409,6 +618,22 @@
* measure block with measure calls replaced with intrinsic measurement calls.
*/
private inline fun Density.MeasuringMaxIntrinsicHeight(
+ measureBlock: MeasureBlock2 /*TODO: crossinline*/,
+ measurables: List<IntrinsicMeasurable>,
+ w: Int,
+ layoutDirection: LayoutDirection
+): Int {
+ val mapped = measurables.map {
+ DefaultIntrinsicMeasurable(it, IntrinsicMinMax.Max, IntrinsicWidthHeight.Height)
+ }
+ val constraints = Constraints(maxWidth = w)
+ val layoutReceiver = IntrinsicsMeasureScope(this, layoutDirection)
+ val layoutResult = layoutReceiver.measureBlock(mapped, constraints)
+ return layoutResult.height
+}
+
+@Suppress("DEPRECATION")
+private inline fun Density.MeasuringMaxIntrinsicHeight(
measureBlock: MeasureBlock /*TODO: crossinline*/,
measurables: List<IntrinsicMeasurable>,
w: Int,
@@ -548,8 +773,10 @@
// if there were models created and read inside this subcomposition
// and we are going to modify this models within the same frame
// the composables which read this model will not be recomposed.
- // to make this possible we should switch to the next frame.
- FrameManager.nextFrame()
+ // to make this possible we should apply global changes to ensure
+ // these are observed as changes.
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.notifyObjectsInitialized()
}
// Measure the obtained children and compute our size.
@@ -572,9 +799,13 @@
@OptIn(ExperimentalComposeApi::class)
fun subcompose() {
- // TODO(b/150390669): Review use of @Untracked
+ // TODO(b/150390669): Review use of @ComposableContract(tracked = false)
composition =
- subcomposeInto(nodeRef.value!!, recomposer, compositionRef) @Untracked {
+ subcomposeInto(
+ nodeRef.value!!,
+ recomposer,
+ compositionRef
+ ) @ComposableContract(tracked = false) {
scope.children()
}
forceRecompose = false
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNode.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNode.kt
index 3146e01..9a5f35b 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNode.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNode.kt
@@ -90,6 +90,12 @@
get() = requireOwner().measureIteration == outerMeasurablePlaceable.measureIteration
/**
+ * A cache of modifiers to be used when setting and reusing previous modifiers.
+ */
+ private var wrapperCache = emptyArray<DelegatingLayoutNodeWrapper<*>?>()
+ private var wrapperCacheCount = 0
+
+ /**
* Inserts a child [LayoutNode] at a particular index. If this LayoutNode [owner] is not `null`
* then [instance] will become [attach]ed also. [instance] must have a `null` [parent].
*/
@@ -179,7 +185,7 @@
requestRemeasure()
parent?.requestRemeasure()
- outerLayoutNodeWrapper.attach()
+ forEachDelegate { it.attach() }
onAttach?.invoke(owner)
}
@@ -198,7 +204,7 @@
alignmentLinesQueryOwner = null
alignmentUsageByParent = UsageByParent.NotUsed
onDetach?.invoke(owner)
- outerLayoutNodeWrapper.detach()
+ forEachDelegate { it.detach() }
if (outerSemantics != null) {
owner.onSemanticsChange()
@@ -349,7 +355,7 @@
}
/**
- * The scope used to run the [MeasureBlocks.measure] [MeasureBlock].
+ * The scope used to run the [MeasureBlocks.measure] [MeasureBlock2].
*/
val measureScope: MeasureScope = object : MeasureScope(), Density {
private val ownerDensity: Density
@@ -494,6 +500,8 @@
if (value == field) return
field = value
+ copyWrappersToCache()
+
// Rebuild layoutNodeWrapper
val oldOuterWrapper = outerMeasurablePlaceable.outerWrapper
if (outerSemantics != null && isAttached()) {
@@ -504,65 +512,95 @@
onChildPositionedCallbacks.clear()
outerZIndexModifier = null
innerLayerWrapper = null
+
+ // Create a new chain of LayoutNodeWrappers, reusing existing ones from wrappers
+ // when possible.
val outerWrapper = modifier.foldOut(innerLayoutNodeWrapper) { mod, toWrap ->
var wrapper = toWrap
- // The order in which the following blocks occur matters. For example, the
- // DrawModifier block should be before the LayoutModifier block so that a Modifier
- // that implements both DrawModifier and LayoutModifier will have it's draw bounds
- // reflect the dimensions defined by the LayoutModifier.
if (mod is OnPositionedModifier) {
onPositionedCallbacks += mod
}
if (mod is OnChildPositionedModifier) {
onChildPositionedCallbacks += mod
}
- if (mod is DrawModifier) {
- wrapper = ModifiedDrawNode(wrapper, mod)
- }
- if (mod is DrawLayerModifier) {
- val layerWrapper = LayerWrapper(wrapper, mod)
- wrapper = layerWrapper
- if (innerLayerWrapper == null) {
- innerLayerWrapper = layerWrapper
- }
- }
- if (mod is FocusModifier) {
- require(mod is FocusModifierImpl)
- wrapper = ModifiedFocusNode(wrapper, mod).also { mod.focusNode = it }
- }
- if (mod is KeyInputModifier) {
- wrapper = ModifiedKeyInputNode(wrapper, mod).also { mod.keyInputNode = it }
- }
- if (mod is PointerInputModifier) {
- wrapper = PointerInputDelegatingWrapper(wrapper, mod)
- }
- if (mod is LayoutModifier) {
- wrapper = ModifiedLayoutNode(wrapper, mod)
- }
- if (mod is ParentDataModifier) {
- wrapper = ModifiedParentDataNode(wrapper, mod)
- }
- if (mod is SemanticsModifier) {
- wrapper = SemanticsWrapper(wrapper, mod)
- if (isAttached()) {
- owner!!.onSemanticsChange()
- }
- }
if (mod is ZIndexModifier) {
outerZIndexModifier = mod
}
+
+ val delegate = reuseLayoutNodeWrapper(mod, toWrap)
+ if (delegate != null) {
+ wrapper = delegate
+ } else {
+ // The order in which the following blocks occur matters. For example, the
+ // DrawModifier block should be before the LayoutModifier block so that a
+ // Modifier that implements both DrawModifier and LayoutModifier will have
+ // it's draw bounds reflect the dimensions defined by the LayoutModifier.
+ if (mod is DrawModifier) {
+ wrapper = ModifiedDrawNode(wrapper, mod)
+ }
+ if (mod is DrawLayerModifier) {
+ val layerWrapper = LayerWrapper(wrapper, mod).assignChained(toWrap)
+ wrapper = layerWrapper
+ if (innerLayerWrapper == null) {
+ innerLayerWrapper = layerWrapper
+ }
+ }
+ if (mod is FocusModifier) {
+ require(mod is FocusModifierImpl)
+ wrapper = ModifiedFocusNode(wrapper, mod).also { mod.focusNode = it }
+ .assignChained(toWrap)
+ }
+ if (mod is KeyInputModifier) {
+ wrapper = ModifiedKeyInputNode(wrapper, mod).also { mod.keyInputNode = it }
+ .assignChained(toWrap)
+ }
+ if (mod is PointerInputModifier) {
+ wrapper = PointerInputDelegatingWrapper(wrapper, mod).assignChained(toWrap)
+ }
+ if (mod is LayoutModifier) {
+ wrapper = ModifiedLayoutNode(wrapper, mod).assignChained(toWrap)
+ }
+ if (mod is ParentDataModifier) {
+ wrapper = ModifiedParentDataNode(wrapper, mod).assignChained(toWrap)
+ }
+ if (mod is SemanticsModifier) {
+ wrapper = SemanticsWrapper(wrapper, mod).assignChained(toWrap)
+ }
+ }
wrapper
}
+
outerWrapper.wrappedBy = parent?.innerLayoutNodeWrapper
outerMeasurablePlaceable.outerWrapper = outerWrapper
+
+ if (isAttached()) {
+ // call detach() on all removed LayoutNodeWrappers
+ for (i in 0 until wrapperCacheCount) {
+ wrapperCache[i]?.detach()
+ }
+
+ // attach() all new LayoutNodeWrappers
+ forEachDelegate {
+ if (!it.isAttached) {
+ it.attach()
+ }
+ }
+ }
+ for (i in 0 until wrapperCacheCount) {
+ wrapperCache[i] = null
+ }
+ wrapperCacheCount = 0
+
+ // call onModifierChanged() on all LayoutNodeWrappers
+ forEachDelegate { it.onModifierChanged() }
+
// Optimize the case where the layout itself is not modified. A common reason for
// this is if no wrapping actually occurs above because no LayoutModifiers are
// present in the modifier chain.
- if (oldOuterWrapper != outerWrapper) {
- oldOuterWrapper.detach()
+ if (oldOuterWrapper != innerLayoutNodeWrapper ||
+ outerWrapper != innerLayoutNodeWrapper) {
requestRemeasure()
parent?.requestRelayout()
- outerWrapper.attach()
} else if (layoutState == Ready && addedCallback) {
// We need to notify the callbacks of a change in position since there's
// a new one.
@@ -874,9 +912,7 @@
*/
fun getModifierInfo(): List<ModifierInfo> {
val infoList = mutableListOf<ModifierInfo>()
- var wrapper = outerLayoutNodeWrapper
-
- while (wrapper != innerLayoutNodeWrapper) {
+ forEachDelegate { wrapper ->
val info = if (wrapper is LayerWrapper) {
ModifierInfo(wrapper.modifier, wrapper, wrapper.layer)
} else {
@@ -884,11 +920,95 @@
ModifierInfo(wrapper.modifier, wrapper)
}
infoList += info
- wrapper = wrapper.wrapped!!
}
return infoList
}
+ /**
+ * Reuses a [DelegatingLayoutNodeWrapper] from [wrapperCache] if one matches the class
+ * type of [modifier]. This walks backward through the [wrapperCache] and
+ * extracts all [DelegatingLayoutNodeWrapper]s that are
+ * [chained][DelegatingLayoutNodeWrapper.isChained] together.
+ * If none can be reused, `null` is returned.
+ */
+ private fun reuseLayoutNodeWrapper(
+ modifier: Modifier.Element,
+ wrapper: LayoutNodeWrapper
+ ): DelegatingLayoutNodeWrapper<*>? {
+ if (wrapperCacheCount == 0) {
+ return null
+ }
+ val index = lastMatchingModifierIndex(modifier)
+
+ if (index < 0) {
+ return null
+ }
+
+ val endWrapper = removeFromWrapperCache(index)
+ var startWrapper = endWrapper
+ var chainedIndex = index
+ startWrapper.setModifierTo(modifier)
+ if (innerLayerWrapper == null && startWrapper is LayerWrapper) {
+ innerLayerWrapper = startWrapper
+ }
+
+ while (startWrapper.isChained) {
+ chainedIndex--
+ startWrapper = removeFromWrapperCache(chainedIndex)
+ startWrapper.setModifierTo(modifier)
+ if (innerLayerWrapper == null && startWrapper is LayerWrapper) {
+ innerLayerWrapper = startWrapper
+ }
+ }
+
+ endWrapper.wrapped = wrapper
+ wrapper.wrappedBy = endWrapper
+ return startWrapper
+ }
+
+ private fun lastMatchingModifierIndex(modifier: Modifier): Int {
+ var index = wrapperCacheCount - 1
+ while (index >= 0) {
+ val wrapper = wrapperCache[index]
+ if (wrapper != null && (wrapper.modifier === modifier ||
+ wrapper.modifier.javaClass == modifier.javaClass)) {
+ return index
+ }
+ index--
+ }
+ return -1
+ }
+
+ private fun removeFromWrapperCache(index: Int): DelegatingLayoutNodeWrapper<*> {
+ val wrapper = wrapperCache[index]!!
+ wrapperCache[index] = null
+ if (index == wrapperCacheCount - 1) {
+ wrapperCacheCount--
+ }
+ return wrapper
+ }
+
+ /**
+ * Copies all [DelegatingLayoutNodeWrapper]s currently in use and returns them in a new
+ * Array.
+ */
+ private fun copyWrappersToCache() {
+ // first count them:
+ var count = 0
+ forEachDelegate { count++ }
+ if (count == 0) {
+ return
+ }
+ if (wrapperCache.size < count) {
+ wrapperCache = arrayOfNulls(count)
+ }
+ wrapperCacheCount = count
+ var i = 0
+ forEachDelegate {
+ wrapperCache[i++] = it as DelegatingLayoutNodeWrapper<*>
+ }
+ }
+
// Delegation from Measurable to measurableAndPlaceable
override fun measure(constraints: Constraints, layoutDirection: LayoutDirection) =
outerMeasurablePlaceable.measure(constraints, layoutDirection)
@@ -915,6 +1035,18 @@
override fun maxIntrinsicHeight(width: Int, layoutDirection: LayoutDirection): Int =
outerMeasurablePlaceable.maxIntrinsicHeight(width, layoutDirection)
+ /**
+ * Calls [block] on all [DelegatingLayoutNodeWrapper]s in the LayoutNodeWrapper chain.
+ */
+ private inline fun forEachDelegate(block: (LayoutNodeWrapper) -> Unit) {
+ var delegate = outerLayoutNodeWrapper
+ val inner = innerLayoutNodeWrapper
+ while (delegate != inner) {
+ block(delegate)
+ delegate = delegate.wrapped!!
+ }
+ }
+
internal companion object {
private val ErrorMeasureBlocks = object : NoIntrinsicsMeasureBlocks(
error = "Undefined intrinsics block and it is required"
@@ -1067,3 +1199,20 @@
override val layoutDirection: LayoutDirection
get() = wrapped!!.measureScope.layoutDirection
}
+
+/**
+ * Sets [DelegatingLayoutNodeWrapper#isChained] to `true` of the [wrapped] when it
+ * is part of a chain of LayoutNodes for the same modifier.
+ *
+ * @param originalWrapper The LayoutNodeWrapper that the modifier chain should be wrapping.
+ */
+@Suppress("NOTHING_TO_INLINE")
+private inline fun <T : DelegatingLayoutNodeWrapper<*>> T.assignChained(
+ originalWrapper: LayoutNodeWrapper
+): T {
+ if (originalWrapper !== wrapped) {
+ var wrapper = wrapped as DelegatingLayoutNodeWrapper<*>
+ wrapper.isChained = true
+ }
+ return this
+}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNodeWrapper.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNodeWrapper.kt
index 0a761c0..7e56b29 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNodeWrapper.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutNodeWrapper.kt
@@ -376,6 +376,12 @@
*/
abstract fun findLastKeyInputWrapper(): ModifiedKeyInputNode?
+ /**
+ * Called when [LayoutNode.modifier] has changed and all the LayoutNodeWrappers have been
+ * configured.
+ */
+ open fun onModifierChanged() {}
+
internal companion object {
const val ExpectAttachedLayoutCoordinates = "LayoutCoordinate operations are only valid " +
"when isAttached is true"
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
index 9d4e4d0..753df72 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
@@ -57,10 +57,16 @@
// `onRequestMeasure` will be called for all items in `postponedMeasureRequests`
return true
}
- if (layoutState == LayoutState.NeedsRemeasure ||
- layoutState == LayoutState.NeedsRelayout) {
- // remeasure or relayout is scheduled
- return relayoutNodes.contains(this)
+ // remeasure or relayout is scheduled
+ val parentLayoutState = parent?.layoutState
+ if (layoutState == LayoutState.NeedsRemeasure) {
+ return relayoutNodes.contains(this) ||
+ parentLayoutState == LayoutState.NeedsRemeasure
+ }
+ if (layoutState == LayoutState.NeedsRelayout) {
+ return relayoutNodes.contains(this) ||
+ parentLayoutState == LayoutState.NeedsRemeasure ||
+ parentLayoutState == LayoutState.NeedsRelayout
}
}
return true
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureAndLayoutDelegate.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureAndLayoutDelegate.kt
index 6da999b..4b685eb 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureAndLayoutDelegate.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureAndLayoutDelegate.kt
@@ -129,7 +129,10 @@
} else {
layoutNode.layoutState = NeedsRemeasure
if (layoutNode.isPlaced || layoutNode.canAffectPlacedParent) {
- relayoutNodes.add(layoutNode)
+ val parentLayoutState = layoutNode.parent?.layoutState
+ if (parentLayoutState != NeedsRemeasure) {
+ relayoutNodes.add(layoutNode)
+ }
}
}
!duringMeasureLayout
@@ -152,7 +155,10 @@
Ready -> {
layoutNode.layoutState = NeedsRelayout
if (layoutNode.isPlaced) {
- relayoutNodes.add(layoutNode)
+ val parentLayoutState = layoutNode.parent?.layoutState
+ if (parentLayoutState != NeedsRemeasure && parentLayoutState != NeedsRelayout) {
+ relayoutNodes.add(layoutNode)
+ }
}
!duringMeasureLayout
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureScope.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureScope.kt
index ed1f5c4..51af139 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureScope.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/MeasureScope.kt
@@ -91,5 +91,9 @@
/**
* A function for performing layout measurement.
*/
+typealias MeasureBlock2 =
+ MeasureScope.(List<Measurable>, Constraints) -> MeasureScope.MeasureResult
+
+@Deprecated("Use MeasureBlock2 instead")
typealias MeasureBlock =
MeasureScope.(List<Measurable>, Constraints, LayoutDirection) -> MeasureScope.MeasureResult
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModelObserver.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModelObserver.kt
index 7b91bbb..e40c6e7 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModelObserver.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModelObserver.kt
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+@file:Suppress("DEPRECATION", "UNUSED_PARAMETER")
+
package androidx.ui.core
import androidx.annotation.RestrictTo
@@ -21,16 +23,13 @@
import androidx.compose.frames.FrameCommitObserver
import androidx.compose.frames.FrameReadObserver
import androidx.compose.frames.observeAllReads
-import androidx.compose.frames.registerCommitObserver
import androidx.ui.util.fastForEach
import androidx.ui.util.synchronized
import org.jetbrains.annotations.TestOnly
/**
* Allows for easy model read observation. To begin observe a change, you must pass a
- * non-lambda `onCommit` listener to the [observeReads] method:
- *
- * @sample androidx.ui.core.samples.modelObserverExample
+ * non-lambda `onCommit` listener to the [observeReads] method.
*
* When a state change has been committed, the `onCommit` listener will be called
* with the `targetObject` as the argument. There are no order guarantees for
@@ -43,6 +42,12 @@
*
* @param commitExecutor The executor on which all `onCommit` calls will be made.
*/
+@Deprecated("Frames have been replaced by snapshots",
+ ReplaceWith(
+ "SnapshotStateObserver",
+ "androidx.compose.snapshots"
+ )
+)
class ModelObserver(private val commitExecutor: (command: () -> Unit) -> Unit) {
private val commitObserver: FrameCommitObserver = { committed, _ ->
var hasValues = false
@@ -182,17 +187,7 @@
/**
* Starts or stops watching for model commits based on [enabled].
*/
- fun enableModelUpdatesObserving(enabled: Boolean) {
- require(enabled == (commitUnsubscribe == null)) {
- "Called twice with the same enabled value: $enabled"
- }
- if (enabled) {
- commitUnsubscribe = registerCommitObserver(commitObserver)
- } else {
- commitUnsubscribe?.invoke()
- commitUnsubscribe = null
- }
- }
+ fun enableModelUpdatesObserving(enabled: Boolean): Unit = error("deprecated")
/**
* Calls the `onCommit` callback for the given targets.
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModifiedLayoutNode.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModifiedLayoutNode.kt
index 5abf9d5..aca0bc1 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModifiedLayoutNode.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ModifiedLayoutNode.kt
@@ -22,40 +22,40 @@
import androidx.ui.graphics.PaintingStyle
internal class ModifiedLayoutNode(
wrapped: LayoutNodeWrapper,
- private val layoutModifier: LayoutModifier
-) : DelegatingLayoutNodeWrapper<LayoutModifier>(wrapped, layoutModifier) {
+ modifier: LayoutModifier
+) : DelegatingLayoutNodeWrapper<LayoutModifier>(wrapped, modifier) {
override val measureScope = ModifierMeasureScope()
override fun performMeasure(
constraints: Constraints,
layoutDirection: LayoutDirection
- ): Placeable = with(layoutModifier) {
+ ): Placeable = with(modifier) {
measureScope.layoutDirection = layoutDirection
measureResult = measureScope.measure(wrapped, constraints, layoutDirection)
this@ModifiedLayoutNode
}
override fun minIntrinsicWidth(height: Int, layoutDirection: LayoutDirection): Int =
- with(layoutModifier) {
+ with(modifier) {
measureScope.layoutDirection = layoutDirection
measureScope.minIntrinsicWidth(wrapped, height, layoutDirection)
}
override fun maxIntrinsicWidth(height: Int, layoutDirection: LayoutDirection): Int =
- with(layoutModifier) {
+ with(modifier) {
measureScope.layoutDirection = layoutDirection
measureScope.maxIntrinsicWidth(wrapped, height, layoutDirection)
}
override fun minIntrinsicHeight(width: Int, layoutDirection: LayoutDirection): Int =
- with(layoutModifier) {
+ with(modifier) {
measureScope.layoutDirection = layoutDirection
measureScope.minIntrinsicHeight(wrapped, width, layoutDirection)
}
override fun maxIntrinsicHeight(width: Int, layoutDirection: LayoutDirection): Int =
- with(layoutModifier) {
+ with(modifier) {
measureScope.layoutDirection = layoutDirection
measureScope.maxIntrinsicHeight(wrapped, width, layoutDirection)
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/OwnedLayer.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/OwnedLayer.kt
index 6190494..2001b81 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/OwnedLayer.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/OwnedLayer.kt
@@ -33,6 +33,11 @@
val layerId: Long
/**
+ * The DrawLayerModifier used in this layer.
+ */
+ var modifier: DrawLayerModifier
+
+ /**
* Reads the [DrawLayerModifier] and dirties the layer so that it will be redrawn.
*/
fun updateLayerProperties()
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Owner.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Owner.kt
index cbe825a..1ca7972 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Owner.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Owner.kt
@@ -15,7 +15,6 @@
*/
package androidx.ui.core
-import androidx.annotation.RestrictTo
import androidx.ui.autofill.Autofill
import androidx.ui.autofill.AutofillTree
import androidx.ui.core.clipboard.ClipboardManager
@@ -29,7 +28,6 @@
import androidx.ui.text.font.Font
import androidx.ui.unit.Density
import androidx.ui.unit.IntOffset
-import org.jetbrains.annotations.TestOnly
/**
* Owner implements the connection to the underlying view system. On Android, this connects
@@ -95,8 +93,7 @@
*/
var showLayoutBounds: Boolean
/** @suppress */
- @TestOnly
- @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+ @InternalCoreApi
set
/**
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/PainterModifier.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/PainterModifier.kt
index 92afd77..c784030 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/PainterModifier.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/PainterModifier.kt
@@ -81,14 +81,15 @@
height: Int,
layoutDirection: LayoutDirection
): Int {
- val constraints = Constraints(maxHeight = height)
- val layoutWidth =
- measurable.minIntrinsicWidth(modifyConstraints(constraints).maxHeight)
- val painterIntrinsicWidth =
- painter.intrinsicSize.width.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: layoutWidth
- return max(painterIntrinsicWidth, layoutWidth)
+ return if (sizeToIntrinsics) {
+ val constraints = Constraints(maxHeight = height)
+ val layoutWidth =
+ measurable.minIntrinsicWidth(modifyConstraints(constraints).maxHeight)
+ val scaledSize = calculateScaledSize(Size(layoutWidth.toFloat(), height.toFloat()))
+ max(scaledSize.width.roundToInt(), layoutWidth)
+ } else {
+ measurable.minIntrinsicWidth(height)
+ }
}
override fun IntrinsicMeasureScope.maxIntrinsicWidth(
@@ -96,14 +97,15 @@
height: Int,
layoutDirection: LayoutDirection
): Int {
- val constraints = Constraints(maxHeight = height)
- val layoutWidth =
- measurable.maxIntrinsicWidth(modifyConstraints(constraints).maxHeight)
- val painterIntrinsicWidth =
- painter.intrinsicSize.width.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: layoutWidth
- return max(painterIntrinsicWidth, layoutWidth)
+ return if (sizeToIntrinsics) {
+ val constraints = Constraints(maxHeight = height)
+ val layoutWidth =
+ measurable.maxIntrinsicWidth(modifyConstraints(constraints).maxHeight)
+ val scaledSize = calculateScaledSize(Size(layoutWidth.toFloat(), height.toFloat()))
+ max(scaledSize.width.roundToInt(), layoutWidth)
+ } else {
+ measurable.maxIntrinsicWidth(height)
+ }
}
override fun IntrinsicMeasureScope.minIntrinsicHeight(
@@ -111,14 +113,15 @@
width: Int,
layoutDirection: LayoutDirection
): Int {
- val constraints = Constraints(maxWidth = width)
- val layoutHeight =
- measurable.minIntrinsicHeight(modifyConstraints(constraints).maxWidth)
- val painterIntrinsicHeight =
- painter.intrinsicSize.height.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: layoutHeight
- return max(painterIntrinsicHeight, layoutHeight)
+ return if (sizeToIntrinsics) {
+ val constraints = Constraints(maxWidth = width)
+ val layoutHeight =
+ measurable.minIntrinsicHeight(modifyConstraints(constraints).maxWidth)
+ val scaledSize = calculateScaledSize(Size(width.toFloat(), layoutHeight.toFloat()))
+ max(scaledSize.height.roundToInt(), layoutHeight)
+ } else {
+ measurable.minIntrinsicHeight(width)
+ }
}
override fun IntrinsicMeasureScope.maxIntrinsicHeight(
@@ -126,35 +129,85 @@
width: Int,
layoutDirection: LayoutDirection
): Int {
- val constraints = Constraints(maxWidth = width)
- val layoutHeight =
- measurable.maxIntrinsicHeight(modifyConstraints(constraints).maxWidth)
- val painterIntrinsicHeight =
- painter.intrinsicSize.height.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: layoutHeight
- return max(painterIntrinsicHeight, layoutHeight)
+ return if (sizeToIntrinsics) {
+ val constraints = Constraints(maxWidth = width)
+ val layoutHeight =
+ measurable.maxIntrinsicHeight(modifyConstraints(constraints).maxWidth)
+ val scaledSize = calculateScaledSize(Size(width.toFloat(), layoutHeight.toFloat()))
+ max(scaledSize.height.roundToInt(), layoutHeight)
+ } else {
+ measurable.maxIntrinsicHeight(width)
+ }
+ }
+
+ private fun calculateScaledSize(dstSize: Size): Size {
+ return if (!sizeToIntrinsics) {
+ dstSize
+ } else {
+ val intrinsicWidth = painter.intrinsicSize.width
+ val intrinsicHeight = painter.intrinsicSize.height
+ val srcWidth = if (intrinsicWidth == Float.POSITIVE_INFINITY) {
+ dstSize.width
+ } else {
+ intrinsicWidth
+ }
+
+ val srcHeight = if (intrinsicHeight == Float.POSITIVE_INFINITY) {
+ dstSize.height
+ } else {
+ intrinsicHeight
+ }
+
+ val srcSize = Size(srcWidth, srcHeight)
+ srcSize * contentScale.scale(srcSize, dstSize)
+ }
}
private fun modifyConstraints(constraints: Constraints): Constraints {
+ if (!sizeToIntrinsics || (constraints.hasFixedWidth && constraints.hasFixedHeight)) {
+ // If we have fixed constraints or we are not attempting to size the
+ // composable based on the size of the Painter, do not attempt to
+ // modify them. Otherwise rely on Alignment and ContentScale
+ // to determine how to position the drawing contents of the Painter within
+ // the provided bounds
+ return constraints
+ }
+
val intrinsicSize = painter.intrinsicSize
val intrinsicWidth =
- intrinsicSize.width.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: constraints.minWidth
+ if (intrinsicSize.width != Float.POSITIVE_INFINITY) {
+ intrinsicSize.width.roundToInt()
+ } else {
+ constraints.minWidth
+ }
+
val intrinsicHeight =
- intrinsicSize.height.takeUnless {
- !sizeToIntrinsics || it == Float.POSITIVE_INFINITY
- }?.roundToInt() ?: constraints.minHeight
+ if (intrinsicSize.height != Float.POSITIVE_INFINITY) {
+ intrinsicSize.height.roundToInt()
+ } else {
+ constraints.minHeight
+ }
- val minWidth = constraints.constrainWidth(intrinsicWidth)
- val minHeight = constraints.constrainHeight(intrinsicHeight)
+ // Scale the width and height appropriately based on the given constraints
+ // and ContentScale
+ val constrainedWidth = constraints.constrainWidth(intrinsicWidth)
+ val constrainedHeight = constraints.constrainHeight(intrinsicHeight)
+ val scaledSize = calculateScaledSize(
+ Size(constrainedWidth.toFloat(), constrainedHeight.toFloat())
+ )
- return if (minWidth == constraints.minWidth && minHeight == constraints.minHeight) {
- constraints
+ val minWidth = if (constraints.hasFixedWidth) {
+ constraints.minWidth
} else {
- constraints.copy(minWidth = minWidth, minHeight = minHeight)
+ scaledSize.width.roundToInt()
}
+
+ val minHeight = if (constraints.hasFixedHeight) {
+ constraints.minHeight
+ } else {
+ scaledSize.height.roundToInt()
+ }
+ return constraints.copy(minWidth = minWidth, minHeight = minHeight)
}
override fun ContentDrawScope.draw() {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Popup.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Popup.kt
index 253f6a7..5b8b757 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Popup.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Popup.kt
@@ -30,6 +30,7 @@
import androidx.compose.Immutable
import androidx.compose.Providers
import androidx.compose.ambientOf
+import androidx.compose.compositionReference
import androidx.compose.currentComposer
import androidx.compose.emptyContent
import androidx.compose.onCommit
@@ -187,7 +188,7 @@
// Update the popup's position
popupLayout.updatePosition()
- }) { _, _, layoutDirection ->
+ }) { _, _ ->
popupLayout.popupPositionProperties.parentLayoutDirection = layoutDirection
layout(0, 0) {}
}
@@ -195,8 +196,9 @@
// TODO(lmr): refactor these APIs so that recomposer isn't necessary
@OptIn(ExperimentalComposeApi::class)
val recomposer = currentComposer.recomposer
+ val parentComposition = compositionReference()
onCommit {
- composition = popupLayout.setContent(recomposer) {
+ composition = popupLayout.setContent(recomposer, parentComposition) {
SimpleStack(Modifier.semantics { this.popup = true }.onPositioned {
// Get the size of the content
popupLayout.popupPositionProperties.childrenSize = it.size
@@ -219,7 +221,7 @@
@Suppress("NOTHING_TO_INLINE")
@Composable
private inline fun SimpleStack(modifier: Modifier, noinline children: @Composable () -> Unit) {
- Layout(children = children, modifier = modifier) { measurables, constraints, _ ->
+ Layout(children = children, modifier = modifier) { measurables, constraints ->
when (measurables.size) {
0 -> layout(0, 0) {}
1 -> {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/RenderNodeLayer.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/RenderNodeLayer.kt
index f032b4c..aeb05dc 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/RenderNodeLayer.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/RenderNodeLayer.kt
@@ -32,7 +32,7 @@
@TargetApi(29)
internal class RenderNodeLayer(
val ownerView: AndroidComposeView,
- val drawLayerModifier: DrawLayerModifier,
+ drawLayerModifier: DrawLayerModifier,
val drawBlock: (Canvas) -> Unit,
val invalidateParentLayer: () -> Unit
) : OwnedLayer {
@@ -61,22 +61,30 @@
override val layerId: Long
get() = renderNode.uniqueId
+ override var modifier: DrawLayerModifier = drawLayerModifier
+ set(value) {
+ if (field !== value) {
+ field = value
+ updateLayerProperties()
+ }
+ }
+
override fun updateLayerProperties() {
- transformOrigin = drawLayerModifier.transformOrigin
+ transformOrigin = modifier.transformOrigin
val wasClippingManually = renderNode.clipToOutline && outlineResolver.clipPath != null
- renderNode.scaleX = drawLayerModifier.scaleX
- renderNode.scaleY = drawLayerModifier.scaleY
- renderNode.alpha = drawLayerModifier.alpha
- renderNode.translationX = drawLayerModifier.translationX
- renderNode.translationY = drawLayerModifier.translationY
- renderNode.elevation = drawLayerModifier.shadowElevation
- renderNode.rotationZ = drawLayerModifier.rotationZ
- renderNode.rotationX = drawLayerModifier.rotationX
- renderNode.rotationY = drawLayerModifier.rotationY
+ renderNode.scaleX = modifier.scaleX
+ renderNode.scaleY = modifier.scaleY
+ renderNode.alpha = modifier.alpha
+ renderNode.translationX = modifier.translationX
+ renderNode.translationY = modifier.translationY
+ renderNode.elevation = modifier.shadowElevation
+ renderNode.rotationZ = modifier.rotationZ
+ renderNode.rotationX = modifier.rotationX
+ renderNode.rotationY = modifier.rotationY
renderNode.pivotX = transformOrigin.pivotFractionX * renderNode.width
renderNode.pivotY = transformOrigin.pivotFractionY * renderNode.height
- val shape = drawLayerModifier.shape
- val clip = drawLayerModifier.clip
+ val shape = modifier.shape
+ val clip = modifier.clip
renderNode.clipToOutline = clip && shape !== RectangleShape
renderNode.clipToBounds = clip && shape === RectangleShape
val shapeChanged = outlineResolver.update(
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ViewLayer.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ViewLayer.kt
index 8a697e6..a158617 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ViewLayer.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/ViewLayer.kt
@@ -35,7 +35,7 @@
internal class ViewLayer(
val ownerView: AndroidComposeView,
val container: ViewLayerContainer,
- val drawLayerModifier: DrawLayerModifier,
+ drawLayerModifier: DrawLayerModifier,
val drawBlock: (Canvas) -> Unit,
val invalidateParentLayer: () -> Unit
) : View(ownerView.context), OwnedLayer {
@@ -49,6 +49,14 @@
private var drawnWithZ = false
private val canvasHolder = CanvasHolder()
+ override var modifier: DrawLayerModifier = drawLayerModifier
+ set(value) {
+ if (value !== field) {
+ field = value
+ updateLayerProperties()
+ }
+ }
+
/**
* Local copy of the transform origin as DrawLayerModifier can be implemented
* as a model object. Update this field within [updateLayerProperties] and use it
@@ -66,20 +74,20 @@
get() = id.toLong()
override fun updateLayerProperties() {
- this.mTransformOrigin = drawLayerModifier.transformOrigin
- this.scaleX = drawLayerModifier.scaleX
- this.scaleY = drawLayerModifier.scaleY
- this.alpha = drawLayerModifier.alpha
- this.translationX = drawLayerModifier.translationX
- this.translationY = drawLayerModifier.translationY
- this.elevation = drawLayerModifier.shadowElevation
- this.rotation = drawLayerModifier.rotationZ
- this.rotationX = drawLayerModifier.rotationX
- this.rotationY = drawLayerModifier.rotationY
+ this.mTransformOrigin = modifier.transformOrigin
+ this.scaleX = modifier.scaleX
+ this.scaleY = modifier.scaleY
+ this.alpha = modifier.alpha
+ this.translationX = modifier.translationX
+ this.translationY = modifier.translationY
+ this.elevation = modifier.shadowElevation
+ this.rotation = modifier.rotationZ
+ this.rotationX = modifier.rotationX
+ this.rotationY = modifier.rotationY
this.pivotX = mTransformOrigin.pivotFractionX * width
this.pivotY = mTransformOrigin.pivotFractionY * height
- val shape = drawLayerModifier.shape
- val clip = drawLayerModifier.clip
+ val shape = modifier.shape
+ val clip = modifier.clip
this.clipToBounds = clip && shape === RectangleShape
resetClipBounds()
val wasClippingManually = manualClipPath != null
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Wrapper.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Wrapper.kt
index b9262c1..c838502 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Wrapper.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Wrapper.kt
@@ -144,7 +144,7 @@
?: AndroidOwner(this, this).also {
setContentView(it.view, DefaultLayoutParams)
}
- return doSetContent(composeView, recomposer, content)
+ return doSetContent(composeView, recomposer, null, content)
}
/**
@@ -160,14 +160,20 @@
/**
* Composes the given composable into the given view.
*
+ * The new composition can be logically "linked" to an existing one, by providing a non-null
+ * [parentComposition]. This will ensure that invalidations and ambients will flow through
+ * the two compositions as if they were not separate.
+ *
* Note that this [ViewGroup] should have an unique id for the saved instance state mechanism to
* be able to save and restore the values used within the composition. See [View.setId].
*
- * @param recomposer The [Recomposer] to coordinate scheduling of composition updates
+ * @param recomposer The [Recomposer] to coordinate scheduling of composition updates.
+ * @param parentComposition The parent composition reference, if applicable.
* @param content Composable that will be the content of the view.
*/
fun ViewGroup.setContent(
recomposer: Recomposer,
+ parentComposition: CompositionReference? = null,
content: @Composable () -> Unit
): Composition {
FrameManager.ensureStarted()
@@ -176,9 +182,8 @@
getChildAt(0) as? AndroidOwner
} else {
removeAllViews(); null
- }
- ?: AndroidOwner(context).also { addView(it.view, DefaultLayoutParams) }
- return doSetContent(composeView, recomposer, content)
+ } ?: AndroidOwner(context).also { addView(it.view, DefaultLayoutParams) }
+ return doSetContent(composeView, recomposer, parentComposition, content)
}
/**
@@ -198,11 +203,12 @@
)
fun ViewGroup.setContent(
content: @Composable () -> Unit
-): Composition = setContent(Recomposer.current(), content)
+): Composition = setContent(recomposer = Recomposer.current(), content = content)
private fun doSetContent(
owner: AndroidOwner,
recomposer: Recomposer,
+ parentComposition: CompositionReference?,
content: @Composable () -> Unit
): Composition {
if (inspectionWanted(owner)) {
@@ -210,7 +216,7 @@
Collections.newSetFromMap(WeakHashMap<SlotTable, Boolean>()))
}
@OptIn(ExperimentalComposeApi::class)
- val original = compositionFor(owner.root, UiApplier(owner.root), recomposer)
+ val original = compositionFor(owner.root, UiApplier(owner.root), recomposer, parentComposition)
val wrapped = owner.view.getTag(R.id.wrapped_composition_tag)
as? WrappedComposition
?: WrappedComposition(owner, original).also {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilter.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilter.kt
index 801522c..29ccad2 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilter.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilter.kt
@@ -14,9 +14,13 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalPointerInput::class)
+
package androidx.ui.core.gesture
import androidx.compose.remember
+import androidx.ui.core.CustomEvent
+import androidx.ui.core.CustomEventDispatcher
import androidx.ui.core.DensityAmbient
import androidx.ui.core.Direction
import androidx.ui.core.Modifier
@@ -24,31 +28,46 @@
import androidx.ui.core.PointerInputChange
import androidx.ui.core.changedToUpIgnoreConsumed
import androidx.ui.core.composed
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.scrollorientationlocking.ScrollOrientationLocker
import androidx.ui.core.pointerinput.PointerInputFilter
import androidx.ui.core.positionChange
import androidx.ui.geometry.Offset
import androidx.ui.unit.IntSize
/**
- * This gesture filter detects when the average distance change of all pointers surpasses touch
+ * This gesture filter detects when the average distance change of all pointers surpasses the touch
* slop.
*
* The value of touch slop is currently defined internally as the constant [TouchSlop].
*
- * @param onDragSlopExceeded Called when touch slop is exceeded in a supported direction. See
- * [canDrag].
- * @param canDrag Set to limit the directions under which touch slop can be exceeded. Return true
- * if you want a drag to be started due to the touch slop being surpassed in the given [Direction].
- * If [canDrag] is not provided, touch slop will be able to be exceeded in all directions.
+ * Note: [canDrag] and [orientation] interact such that [canDrag] will only be called for
+ * [Direction]s that are included in the given [orientation].
+ *
+ * Note: Changing the value of [orientation] will reset the gesture filter such that it will not
+ * respond to input until new pointers are detected.
+ *
+ * @param onDragSlopExceeded Called when touch slop is exceeded in a supported direction and
+ * orientation.
+ * @param canDrag Set to limit the types of directions under which touch slop can be exceeded.
+ * Return true if you want a drag to be started due to the touch slop being surpassed in the
+ * given [Direction]. If [canDrag] is not provided, touch slop will be able to be exceeded in all
+ * directions.
+ * @param orientation If provided, limits the [Direction]s that scroll slop can be exceeded in to
+ * those that are included in the given orientation and does not consider pointers that are locked
+ * to other orientations.
*/
fun Modifier.dragSlopExceededGestureFilter(
onDragSlopExceeded: () -> Unit,
- canDrag: ((Direction) -> Boolean)? = null
+ canDrag: ((Direction) -> Boolean)? = null,
+ orientation: Orientation? = null
): Modifier = composed {
val touchSlop = with(DensityAmbient.current) { TouchSlop.toPx() }
- val filter = remember { DragSlopExceededGestureFilter(touchSlop) }
- filter.canDrag = canDrag
+ val filter = remember {
+ DragSlopExceededGestureFilter(touchSlop)
+ }
filter.onDragSlopExceeded = onDragSlopExceeded
+ filter.setDraggableData(orientation, canDrag)
PointerInputModifierImpl(filter)
}
@@ -61,80 +80,126 @@
private var dyUnderSlop = 0f
private var passedSlop = false
- var canDrag: ((Direction) -> Boolean)? = null
+ private var canDrag: ((Direction) -> Boolean)? = null
+ private var orientation: Orientation? = null
+
var onDragSlopExceeded: () -> Unit = {}
+ lateinit var scrollOrientationLocker: ScrollOrientationLocker
+ lateinit var customEventDispatcher: CustomEventDispatcher
+
+ fun setDraggableData(orientation: Orientation?, canDrag: ((Direction) -> Boolean)?) {
+ this.orientation = orientation
+ this.canDrag = { direction ->
+ when {
+ orientation == Orientation.Horizontal && direction == Direction.UP -> false
+ orientation == Orientation.Horizontal && direction == Direction.DOWN -> false
+ orientation == Orientation.Vertical && direction == Direction.LEFT -> false
+ orientation == Orientation.Vertical && direction == Direction.RIGHT -> false
+ else -> canDrag?.invoke(direction) ?: true
+ }
+ }
+ }
+
+ override fun onInit(customEventDispatcher: CustomEventDispatcher) {
+ scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ }
+
override fun onPointerInput(
changes: List<PointerInputChange>,
pass: PointerEventPass,
bounds: IntSize
): List<PointerInputChange> {
- if (!passedSlop &&
- (pass == PointerEventPass.PostUp || pass == PointerEventPass.PostDown)
- ) {
- // Get current average change.
- val averagePositionChange = getAveragePositionChange(changes)
- val dx = averagePositionChange.x
- val dy = averagePositionChange.y
+ scrollOrientationLocker.onPointerInputSetup(changes, pass)
- // Track changes during postUp and during postDown. This allows for fancy dragging
- // due to a parent being dragged and will likely be removed.
- // TODO(b/157087973): Likely remove this two pass complexity.
- if (pass == PointerEventPass.PostUp) {
- dxForPass = dx
- dyForPass = dy
- dxUnderSlop += dx
- dyUnderSlop += dy
- } else {
- dxUnderSlop += dx - dxForPass
- dyUnderSlop += dy - dyForPass
+ if (pass == PointerEventPass.PostUp || pass == PointerEventPass.PostDown) {
+
+ // Filter changes for those that we can interact with due to our orientation.
+ val applicableChanges =
+ with(orientation) {
+ if (this != null) {
+ scrollOrientationLocker.getPointersFor(changes, this)
+ } else {
+ changes
+ }
+ }
+
+ if (!passedSlop) {
+
+ // Get current average change.
+ val averagePositionChange = getAveragePositionChange(applicableChanges)
+ val dx = averagePositionChange.x
+ val dy = averagePositionChange.y
+
+ // Track changes during postUp and during postDown. This allows for fancy dragging
+ // due to a parent being dragged and will likely be removed.
+ // TODO(b/157087973): Likely remove this two pass complexity.
+ if (pass == PointerEventPass.PostUp) {
+ dxForPass = dx
+ dyForPass = dy
+ dxUnderSlop += dx
+ dyUnderSlop += dy
+ } else {
+ dxUnderSlop += dx - dxForPass
+ dyUnderSlop += dy - dyForPass
+ }
+
+ // Map the distance to the direction enum for a call to canDrag.
+ val directionX = averagePositionChange.horizontalDirection()
+ val directionY = averagePositionChange.verticalDirection()
+
+ val canDragX = directionX != null && canDrag?.invoke(directionX) ?: true
+ val canDragY = directionY != null && canDrag?.invoke(directionY) ?: true
+
+ val passedSlopX = canDragX && Math.abs(dxUnderSlop) > touchSlop
+ val passedSlopY = canDragY && Math.abs(dyUnderSlop) > touchSlop
+
+ if (passedSlopX || passedSlopY) {
+ passedSlop = true
+ onDragSlopExceeded.invoke()
+ } else {
+ // If we have passed slop in a direction that we can't drag in, we should reset
+ // our tracking back to zero so that a user doesn't have to later scroll the slop
+ // + the extra distance they scrolled in the wrong direction.
+ if (!canDragX &&
+ ((directionX == Direction.LEFT && dxUnderSlop < 0) ||
+ (directionX == Direction.RIGHT && dxUnderSlop > 0))
+ ) {
+ dxUnderSlop = 0f
+ }
+ if (!canDragY &&
+ ((directionY == Direction.UP && dyUnderSlop < 0) ||
+ (directionY == Direction.DOWN && dyUnderSlop > 0))
+ ) {
+ dyUnderSlop = 0f
+ }
+ }
}
- // Map the distance to the direction enum for a call to canDrag.
- val directionX = averagePositionChange.horizontalDirection()
- val directionY = averagePositionChange.verticalDirection()
-
- val canDragX = directionX != null && canDrag?.invoke(directionX) ?: true
- val canDragY = directionY != null && canDrag?.invoke(directionY) ?: true
-
- val passedSlopX = canDragX && Math.abs(dxUnderSlop) > touchSlop
- val passedSlopY = canDragY && Math.abs(dyUnderSlop) > touchSlop
-
- if (passedSlopX || passedSlopY) {
- passedSlop = true
- onDragSlopExceeded.invoke()
- } else {
- // If we have passed slop in a direction that we can't drag in, we should reset
- // our tracking back to zero so that a user doesn't have to later scroll the slop
- // + the extra distance they scrolled in the wrong direction.
- if (!canDragX &&
- ((directionX == Direction.LEFT && dxUnderSlop < 0) ||
- (directionX == Direction.RIGHT && dxUnderSlop > 0))
- ) {
- dxUnderSlop = 0f
- }
- if (!canDragY &&
- ((directionY == Direction.UP && dyUnderSlop < 0) ||
- (directionY == Direction.DOWN && dyUnderSlop > 0))
- ) {
- dyUnderSlop = 0f
- }
+ if (pass == PointerEventPass.PostDown &&
+ changes.all { it.changedToUpIgnoreConsumed() }
+ ) {
+ // On the final pass, check to see if all pointers have changed to up, and if they
+ // have, reset.
+ reset()
}
}
- if (pass == PointerEventPass.PostDown &&
- changes.all { it.changedToUpIgnoreConsumed() }
- ) {
- reset()
- }
+ scrollOrientationLocker.onPointerInputTearDown(changes, pass)
+
return changes
}
override fun onCancel() {
+ scrollOrientationLocker.onCancel()
reset()
}
+ override fun onCustomEvent(customEvent: CustomEvent, pass: PointerEventPass) {
+ scrollOrientationLocker.onCustomEvent(customEvent, pass)
+ }
+
private fun reset() {
passedSlop = false
dxForPass = 0f
@@ -148,6 +213,10 @@
* Get's the average distance change of all pointers as an Offset.
*/
private fun getAveragePositionChange(changes: List<PointerInputChange>): Offset {
+ if (changes.isEmpty()) {
+ return Offset.Zero
+ }
+
val sum = changes.fold(Offset.Zero) { sum, change ->
sum + change.positionChange()
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ExperimentalPointerInput.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ExperimentalPointerInput.kt
new file mode 100644
index 0000000..8ca6b32
--- /dev/null
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ExperimentalPointerInput.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 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 androidx.ui.core.gesture
+
+@RequiresOptIn("This pointer input API is experimental and is likely to change before becoming " +
+ "stable.")
+annotation class ExperimentalPointerInput
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/RawDragGestureFilter.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/RawDragGestureFilter.kt
index 8484c3a..08a9cee 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/RawDragGestureFilter.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/RawDragGestureFilter.kt
@@ -14,9 +14,13 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalPointerInput::class)
+
package androidx.ui.core.gesture
import androidx.compose.remember
+import androidx.ui.core.CustomEvent
+import androidx.ui.core.CustomEventDispatcher
import androidx.ui.core.Modifier
import androidx.ui.core.PointerEventPass
import androidx.ui.core.PointerId
@@ -28,6 +32,8 @@
import androidx.ui.core.composed
import androidx.ui.core.consumeDownChange
import androidx.ui.core.consumePositionChange
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.scrollorientationlocking.ScrollOrientationLocker
import androidx.ui.core.gesture.util.VelocityTracker
import androidx.ui.core.pointerinput.PointerInputFilter
import androidx.ui.core.positionChange
@@ -36,6 +42,9 @@
import androidx.ui.util.fastAny
import androidx.ui.util.fastForEach
+/**
+ * Defines the callbacks associated with dragging.
+ */
interface DragObserver {
/**
@@ -45,10 +54,11 @@
* is null or returns true) and the average distance the pointers have moved are not 0 on
* both the x and y axes.
*
- * @param downPosition The pointer input position of the down event.
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStop] or [onCancel].
*
- * @see onDrag
- * @see onStop
+ * @param downPosition The average position of all pointer positions when they first touched
+ * down.
*/
fun onStart(downPosition: Offset) {}
@@ -74,16 +84,22 @@
*
* This is called once all pointers have stopped interacting with this DragGestureDetector.
*
- * Only called if the last call between [onStart] and [onStop] was [onStart].
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStart].
+ *
+ * @param velocity The velocity of the drag in both orientations at the point in time when all
+ * pointers have released the relevant PointerInputFilter. In pixels per second.
*/
fun onStop(velocity: Offset) {}
/**
* Override to be notified when the drag has been cancelled.
*
- * This is called if [onStart] has ben called and then a cancellation event has occurs
- * (for example, due to the gesture detector being removed from the tree) before [onStop] is
- * called.
+ * This is called in response to a cancellation event such as the associated
+ * PointerInputFilter having been removed from the hierarchy.
+ *
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStart].
*/
fun onCancel() {}
}
@@ -115,29 +131,47 @@
* When multiple pointers are touching the detector, the drag distance is taken as the average of
* all of the pointers.
*
+ * Note: Changing the value of [orientation] will reset the gesture filter such that it will not
+ * respond to input until new pointers are detected.
+ *
* @param dragObserver The callback interface to report all events related to dragging.
* @param canStartDragging If set, Before dragging is started ([DragObserver.onStart] is called),
* canStartDragging is called to check to see if it is allowed to start.
+ * @param orientation Limits the directions under which dragging can occur to those that are
+ * within the provided orientation, locks pointers that are used to drag in
+ * the given orientation to that orientation, and ignores pointers that are
+ * locked to other orientations. If no orientation is provided, does none of
+ * the above.
*/
-// TODO(b/129784010): Consider also allowing onStart, onDrag, and onStop to be set individually (instead of all being
-// set via DragObserver).
+// TODO(b/129784010): Consider also allowing onStart, onDrag, and onStop to be set individually
+// (instead of all being set via DragObserver).
fun Modifier.rawDragGestureFilter(
dragObserver: DragObserver,
- canStartDragging: (() -> Boolean)? = null
+ canStartDragging: (() -> Boolean)? = null,
+ orientation: Orientation? = null
): Modifier = composed {
val filter = remember { RawDragGestureFilter() }
filter.dragObserver = dragObserver
filter.canStartDragging = canStartDragging
+ filter.orientation = orientation
PointerInputModifierImpl(filter)
}
internal class RawDragGestureFilter : PointerInputFilter() {
private val velocityTrackers: MutableMap<PointerId, VelocityTracker> = mutableMapOf()
private val downPositions: MutableMap<PointerId, Offset> = mutableMapOf()
+
+ internal lateinit var dragObserver: DragObserver
+ internal var canStartDragging: (() -> Boolean)? = null
+ internal var orientation: Orientation? = null
+
private var started = false
- var canStartDragging: (() -> Boolean)? = null
- lateinit var dragObserver: DragObserver
+ internal lateinit var scrollOrientationLocker: ScrollOrientationLocker
+
+ override fun onInit(customEventDispatcher: CustomEventDispatcher) {
+ scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ }
override fun onPointerInput(
changes: List<PointerInputChange>,
@@ -145,162 +179,202 @@
bounds: IntSize
): List<PointerInputChange> {
- var changesToReturn = changes
+ scrollOrientationLocker.onPointerInputSetup(changes, pass)
- if (pass == PointerEventPass.InitialDown) {
+ var changesToReturn = changes
- if (started) {
- // If we are have started we want to prevent any descendants from reacting to
- // any down change.
- changesToReturn = changesToReturn.map {
- if (it.changedToDown()) {
- it.consumeDownChange()
- } else {
- it
- }
+ if (pass == PointerEventPass.InitialDown) {
+
+ if (started) {
+ // If we are have started we want to prevent any descendants from reacting to
+ // any down change.
+ changesToReturn = changesToReturn.map {
+ if (it.changedToDown()) {
+ it.consumeDownChange()
+ } else {
+ it
+ }
+ }
+ }
+ }
+
+ if (pass == PointerEventPass.PostUp) {
+
+ val applicableChanges =
+ with(orientation) {
+ if (this != null) {
+ scrollOrientationLocker.getPointersFor(changes, this)
+ } else {
+ changes
+ }
+ }
+
+ // Handle up changes, which includes removing individual pointer VelocityTrackers
+ // and potentially calling onStop().
+ if (changesToReturn.fastAny { it.changedToUpIgnoreConsumed() }) {
+
+ var velocityTracker: VelocityTracker? = null
+
+ changesToReturn.fastForEach {
+ // This pointer is up (consumed or not), so we should stop tracking
+ // information about it. If the pointer is not locked out of our
+ // orientation, get the velocity tracker because this might be a fling.
+ if (it.changedToUp() && applicableChanges.contains(it)) {
+ velocityTracker = velocityTrackers.remove(it.id)
+ } else if (it.changedToUpIgnoreConsumed()) {
+ velocityTrackers.remove(it.id)
+ }
+ // removing stored down position for the pointer.
+ if (it.changedToUp()) {
+ downPositions.remove(it.id)
+ }
+ }
+
+ if (changesToReturn.all { it.changedToUpIgnoreConsumed() }) {
+ // All of the pointers are up, so reset and call onStop. If we have a
+ // velocityTracker at this point, that means at least one of the up events
+ // was not consumed so we should send velocity for flinging.
+ if (started) {
+ val velocity: Offset? =
+ if (velocityTracker != null) {
+ changesToReturn = changesToReturn.map {
+ it.consumeDownChange()
+ }
+ velocityTracker!!.calculateVelocity().pixelsPerSecond
+ } else {
+ null
+ }
+ started = false
+ dragObserver.onStop(velocity ?: Offset.Zero)
+ reset()
}
}
}
- if (pass == PointerEventPass.PostUp) {
-
- // Handle up changes, which includes removing individual pointer VelocityTrackers
- // and potentially calling onStop().
- if (changesToReturn.fastAny { it.changedToUpIgnoreConsumed() }) {
-
- var velocityTracker: VelocityTracker? = null
-
- changesToReturn.fastForEach {
- // This pointer is up (consumed or not), so we should stop tracking
- // information about it. Get a reference for the velocity tracker in case
- // this is the last pointer and thus we are going to fling.
- if (it.changedToUp()) {
- velocityTracker = velocityTrackers.remove(it.id)
- } else if (it.changedToUpIgnoreConsumed()) {
- velocityTrackers.remove(it.id)
- }
- // removing stored down position for the pointer.
- if (it.changedToUp()) {
- downPositions.remove(it.id)
- }
- }
-
- if (changesToReturn.all { it.changedToUpIgnoreConsumed() }) {
- // All of the pointers are up, so reset and call onStop. If we have a
- // velocityTracker at this point, that means at least one of the up events
- // was not consumed so we should send velocity for flinging.
- if (started) {
- val velocity: Offset? =
- if (velocityTracker != null) {
- changesToReturn = changesToReturn.map {
- it.consumeDownChange()
- }
- velocityTracker!!.calculateVelocity().pixelsPerSecond
- } else {
- null
- }
- started = false
- dragObserver.onStop(velocity ?: Offset.Zero)
- }
+ // For each new pointer that has been added, start tracking information about it.
+ if (changesToReturn.fastAny { it.changedToDownIgnoreConsumed() }) {
+ changesToReturn.fastForEach {
+ // If a pointer has changed to down, we should start tracking information
+ // about it.
+ if (it.changedToDownIgnoreConsumed()) {
+ velocityTrackers[it.id] = VelocityTracker()
+ .apply {
+ addPosition(
+ it.current.uptime!!,
+ it.current.position!!
+ )
+ }
+ downPositions[it.id] = it.current.position!!
}
}
+ }
+ }
- // For each new pointer that has been added, start tracking information about it.
- if (changesToReturn.fastAny { it.changedToDownIgnoreConsumed() }) {
- changesToReturn.fastForEach {
- // If a pointer has changed to down, we should start tracking information
- // about it.
- if (it.changedToDownIgnoreConsumed()) {
- velocityTrackers[it.id] = VelocityTracker()
- .apply {
- addPosition(
- it.current.uptime!!,
- it.current.position!!
- )
- }
- downPositions[it.id] = it.current.position!!
- }
+ // This if block is run for both PostUp and PostDown to allow for the detector to
+ // respond to modified changes after ancestors may have modified them. (This allows
+ // for things like dragging an ancestor scrolling container, while keeping a pointer on
+ // a descendant scrolling container, and the descendant scrolling container keeping the
+ // descendant still.)
+ if (pass == PointerEventPass.PostUp || pass == PointerEventPass.PostDown) {
+
+ var (movedChanges, otherChanges) = changesToReturn.partition {
+ it.current.down && !it.changedToDownIgnoreConsumed()
+ }
+
+ movedChanges.fastForEach {
+ // TODO(shepshapard): handle the case that the pointerTrackingData is null,
+ // either with an exception or a logged error, or something else.
+ val velocityTracker = velocityTrackers[it.id]
+
+ if (velocityTracker != null) {
+
+ // Add information to the velocity tracker only during one pass.
+ // TODO(shepshapard): VelocityTracker needs to be updated to not accept
+ // position information, but rather vector information about movement.
+ if (pass == PointerEventPass.PostUp) {
+ velocityTracker.addPosition(
+ it.current.uptime!!,
+ it.current.position!!
+ )
}
}
}
- // This if block is run for both PostUp and PostDown to allow for the detector to
- // respond to modified changes after ancestors may have modified them. (This allows
- // for things like dragging an ancestor scrolling container, while keeping a pointer on
- // a descendant scrolling container, and the descendant scrolling container keeping the
- // descendant still.)
- if (pass == PointerEventPass.PostUp || pass == PointerEventPass.PostDown) {
+ // Check to see if we are already started so we don't have to call canStartDragging again.
+ val canStart = !started && canStartDragging?.invoke() ?: true
- var (movedChanges, otherChanges) = changesToReturn.partition {
- it.current.down && !it.changedToDownIgnoreConsumed()
- }
+ // At this point, check to see if we have started, and if we have, we may
+ // be calling onDrag and updating change information on the PointerInputChanges.
+ if (started || canStart) {
+
+ var totalDx = 0f
+ var totalDy = 0f
+
+ val verticalPointers =
+ scrollOrientationLocker.getPointersFor(
+ movedChanges,
+ Orientation.Vertical
+ )
+ val horizontalPointers =
+ scrollOrientationLocker.getPointersFor(
+ movedChanges,
+ Orientation.Horizontal
+ )
movedChanges.fastForEach {
- // TODO(shepshapard): handle the case that the pointerTrackingData is null,
- // either with an exception or a logged error, or something else.
- val velocityTracker = velocityTrackers[it.id]
-
- if (velocityTracker != null) {
-
- // Add information to the velocity tracker only during one pass.
- // TODO(shepshapard): VelocityTracker needs to be updated to not accept
- // position information, but rather vector information about movement.
- if (pass == PointerEventPass.PostUp) {
- velocityTracker.addPosition(
- it.current.uptime!!,
- it.current.position!!
- )
- }
- }
- }
-
- // Check to see if we are already started so we don't have to call canStartDragging again.
- val canStart = !started && canStartDragging?.invoke() ?: true
-
- // At this point, check to see if we have started, and if we have, we may
- // be calling onDrag and updating change information on the PointerInputChanges.
- if (started || canStart) {
-
- var totalDx = 0f
- var totalDy = 0f
-
- movedChanges.fastForEach {
+ if (horizontalPointers.contains(it) && orientation !=
+ Orientation.Vertical
+ ) {
totalDx += it.positionChange().x
+ }
+ if (verticalPointers.contains(it) && orientation !=
+ Orientation.Horizontal
+ ) {
totalDy += it.positionChange().y
}
-
- if (totalDx != 0f || totalDy != 0f) {
-
- // At this point, if we have not started, check to see if we should start
- // and if we should, update our state and call onStart().
- if (!started && canStart) {
- started = true
- dragObserver.onStart(downPositions.values.averagePosition())
- downPositions.clear()
- }
-
- if (started) {
-
- val consumed = dragObserver.onDrag(
- Offset(
- totalDx / changesToReturn.size,
- totalDy / changesToReturn.size
- )
- )
-
- movedChanges = movedChanges.map {
- it.consumePositionChange(consumed.x, consumed.y)
- }
- }
- }
}
- changesToReturn = movedChanges + otherChanges
+ if (totalDx != 0f || totalDy != 0f) {
+
+ // At this point, if we have not started, check to see if we should start
+ // and if we should, update our state and call onStart().
+ if (!started) {
+ started = true
+ dragObserver.onStart(downPositions.values.averagePosition())
+ downPositions.clear()
+ }
+
+ // Only need to do this during the first pass that we care about (PostUp).
+ if (pass == PointerEventPass.PostUp) {
+ orientation?.let {
+ scrollOrientationLocker.attemptToLockPointers(
+ movedChanges,
+ it
+ )
+ }
+ }
+
+ val consumed = dragObserver.onDrag(
+ Offset(
+ totalDx / changesToReturn.size,
+ totalDy / changesToReturn.size
+ )
+ )
+
+ movedChanges = movedChanges.map {
+ it.consumePositionChange(consumed.x, consumed.y)
+ }
+ }
}
- return changesToReturn
+ changesToReturn = movedChanges + otherChanges
}
+ scrollOrientationLocker.onPointerInputTearDown(changes, pass)
+
+ return changesToReturn
+ }
+
override fun onCancel() {
downPositions.clear()
velocityTrackers.clear()
@@ -308,13 +382,24 @@
started = false
dragObserver.onCancel()
}
+ scrollOrientationLocker.onCancel()
+ reset()
+ }
+
+ override fun onCustomEvent(customEvent: CustomEvent, pass: PointerEventPass) {
+ scrollOrientationLocker.onCustomEvent(customEvent, pass)
+ }
+
+ private fun reset() {
+ downPositions.clear()
+ velocityTrackers.clear()
}
}
private fun Iterable<Offset>.averagePosition(): Offset {
var x = 0f
var y = 0f
- forEach {
+ this.forEach {
x += it.x
y += it.y
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ScrollGestureFilter.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ScrollGestureFilter.kt
new file mode 100644
index 0000000..7a7b055
--- /dev/null
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/ScrollGestureFilter.kt
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2019 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 androidx.ui.core.gesture
+
+import androidx.compose.remember
+import androidx.ui.core.Direction
+import androidx.ui.core.Modifier
+import androidx.ui.core.PointerEventPass
+import androidx.ui.core.composed
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.scrollorientationlocking.ScrollOrientationLocker
+import androidx.ui.geometry.Offset
+
+/**
+ * Defines the callbacks associated with scrolling.
+ */
+interface ScrollCallback {
+
+ /**
+ * Override to be notified when a scroll has started.
+ *
+ * This will be called as soon as the average distance of all pointers surpasses the touch slop
+ * in the relevant orientation.
+ *
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStop] or [onCancel].
+ *
+ * @param downPosition The pointer input position of the down event.
+ */
+ fun onStart(downPosition: Offset) {}
+
+ /**
+ * Override to be notified when a distance has been scrolled.
+ *
+ * When overridden, return the amount of the [scrollDistance] that has been consumed.
+ *
+ * Called immediately after [onStart] and for every subsequent pointer movement, as long as the
+ * movement was enough to constitute a scroll (the average movement on in the relevant
+ * orientation is not equal to 0).
+ *
+ * Note: This may be called multiple times in a single pass and the values should be accumulated
+ * for each call.
+ *
+ * @param scrollDistance The distance that has been scrolled. Reflects the average scroll
+ * distance of all pointers.
+ */
+ fun onScroll(scrollDistance: Float) = 0f
+
+ /**
+ * Override to be notified when a scroll has stopped.
+ *
+ * This is called once all pointers have released the associated PointerInputFilter.
+ *
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStart].
+ *
+ * @param velocity The velocity of the scroll in the relevant orientation at the point in time
+ * when all pointers have released the relevant PointerInputFilter. In pixels per second.
+ */
+ fun onStop(velocity: Float) {}
+
+ /**
+ * Override to be notified when the scroll has been cancelled.
+ *
+ * This is called in response to a cancellation event such as the associated
+ * PointerInputFilter having been removed from the hierarchy.
+ *
+ * Only called if the last called if the most recent call among [onStart], [onStop], and
+ * [onCancel] was [onStart].
+ */
+ fun onCancel() {}
+}
+
+/**
+ * Like [Modifier.dragGestureFilter], this gesture filter will detect dragging, but will only do
+ * so along the given [orientation].
+ *
+ * This gesture filter also disambiguates amongst other scrollGestureFilters such that for all
+ * pointers that this gesture filter uses to scroll in the given [orientation], other
+ * scrollGestureFilters (or other clients of [ScrollOrientationLocker]) will not use those same
+ * pointers to drag in the other [orientation]. Likewise, this scrollGestureFilter will not use
+ * pointers to drag if they are already being used to drag in a different orientation.
+ *
+ * Note: [canDrag] will only be queried in directions that exist within the given [orientation].
+ *
+ * Note: Changing the value of [orientation] will reset the gesture filter such that it will not
+ * respond to input until new pointers are detected.
+ *
+ * @param scrollCallback: The set of callbacks for scrolling.
+ * @param orientation: The orientation this gesture filter uses.
+ * @param canDrag Set to limit the types of directions under which touch slop can be exceeded.
+ * Return true if you want a drag to be started due to the touch slop being surpassed in the
+ * given [Direction]. If [canDrag] is not provided, touch slop will be able to be exceeded in all
+ * directions that are in the provided [orientation].
+ * @param startDragImmediately Set to true to have dragging begin immediately when a pointer is
+ * "down", preventing children from responding to the "down" change. Generally, this parameter
+ * should be set to true when the child of the GestureDetector is animating, such that when a finger
+ * touches it, dragging is immediately started so the animation stops and dragging can occur.
+ */
+// TODO(shepshapard): Consider breaking up ScrollCallback such that the onScroll lambda can be
+// the final parameter.
+fun Modifier.scrollGestureFilter(
+ scrollCallback: ScrollCallback,
+ orientation: Orientation,
+ canDrag: ((Direction) -> Boolean)? = null,
+ startDragImmediately: Boolean = false
+): Modifier = composed {
+ val coordinator = remember { ScrollGestureFilterCoordinator() }
+ coordinator.scrollCallback = scrollCallback
+ coordinator.orientation = orientation
+
+ // TODO(b/146427920): There is a gap here where RawPressStartGestureDetector can cause a call to
+ // DragObserver.onStart but if the pointer doesn't move and releases, (or if cancel is called)
+ // The appropriate callbacks to DragObserver will not be called.
+ rawDragGestureFilter(
+ coordinator.rawDragObserver,
+ coordinator::enabledOrStarted,
+ orientation
+ )
+ .dragSlopExceededGestureFilter(coordinator::enableDrag, canDrag, orientation)
+ .rawPressStartGestureFilter(
+ coordinator::startDrag,
+ startDragImmediately,
+ PointerEventPass.InitialDown
+ )
+}
+
+/**
+ * Coordinates the logic of rawDragGestureFilter, dragSlopExceededGestureFilter, and
+ * rawPressStartGestureFilter.
+ *
+ * Also maps the output of rawDragGestureFilter to the output of scrollGestureFilter.
+ */
+private class ScrollGestureFilterCoordinator {
+ private var started = false
+ private var enabled = false
+
+ lateinit var scrollCallback: ScrollCallback
+ lateinit var orientation: Orientation
+
+ val enabledOrStarted
+ get() = started || enabled
+
+ fun enableDrag() {
+ enabled = true
+ }
+
+ fun startDrag(downPosition: Offset) {
+ started = true
+ scrollCallback.onStart(downPosition)
+ }
+
+ val rawDragObserver: DragObserver =
+ object : DragObserver {
+ override fun onStart(downPosition: Offset) {
+ if (!started) {
+ scrollCallback.onStart(downPosition)
+ }
+ }
+
+ override fun onDrag(dragDistance: Offset): Offset {
+ return when (orientation) {
+ Orientation.Horizontal -> Offset(scrollCallback.onScroll(dragDistance.x), 0f)
+ Orientation.Vertical -> Offset(0f, scrollCallback.onScroll(dragDistance.y))
+ }
+ }
+
+ override fun onStop(velocity: Offset) {
+ started = false
+ enabled = false
+ return when (orientation) {
+ Orientation.Horizontal -> scrollCallback.onStop(velocity.x)
+ Orientation.Vertical -> scrollCallback.onStop(velocity.y)
+ }
+ }
+
+ override fun onCancel() {
+ started = false
+ enabled = false
+ scrollCallback.onCancel()
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLocker.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLocker.kt
new file mode 100644
index 0000000..9f2a102
--- /dev/null
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLocker.kt
@@ -0,0 +1,230 @@
+/*
+ * Copyright 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 androidx.ui.core.gesture.scrollorientationlocking
+
+import androidx.annotation.VisibleForTesting
+import androidx.ui.core.CustomEvent
+import androidx.ui.core.CustomEventDispatcher
+import androidx.ui.core.PointerEventPass
+import androidx.ui.core.PointerId
+import androidx.ui.core.PointerInputChange
+import androidx.ui.core.changedToDownIgnoreConsumed
+import androidx.ui.core.changedToUpIgnoreConsumed
+import androidx.ui.core.gesture.ExperimentalPointerInput
+import androidx.ui.core.pointerinput.PointerInputFilter
+import androidx.ui.util.fastForEach
+
+// TODO(shepshapard): This should be in a more generic place.
+enum class Orientation {
+ Vertical, Horizontal
+}
+
+/**
+ * Manages scroll orientation locking amongst all participating gesture filters.
+ *
+ * Does so by allowing gesture filters to do the following:
+ *
+ * 1. Request that pointers be locked to particular [Orientation]s
+ * 2. Query which pointers from a given set are allowed to be considered for a given orientation.
+ *
+ * A specific contract must also be followed in order to setup and tear down scroll orientation
+ * locking. Please see [onPointerInputSetup], [onPointerInputTearDown], [onCustomEvent], and
+ * [onCancel] to use
+ * this correctly.
+ */
+@ExperimentalPointerInput
+class ScrollOrientationLocker(private val customEventDispatcher: CustomEventDispatcher) {
+
+ private var locker: InternalScrollOrientationLocker? = null
+ private var lockerOwner = false
+
+ /**
+ * Handles the initialization of scroll orientation locking management, including internally
+ * managed distribution of shared state.
+ *
+ * For proper initialization to work, [onCustomEvent] must also be called in
+ * [PointerInputFilter.onCustomEvent].
+ *
+ * This method should simply be called toward the top of [PointerInputFilter.onPointerInput]
+ * for all [PointerEventPass]es, before [attemptToLockPointers] or [getPointersFor] are called.
+ *
+ * @see onPointerInputTearDown
+ * @see onCancel
+ * @see onCustomEvent
+ */
+ fun onPointerInputSetup(changes: List<PointerInputChange>, pass: PointerEventPass) {
+ if (pass != PointerEventPass.InitialDown) {
+ return
+ }
+
+ if (locker == null && changes.all { it.changedToDownIgnoreConsumed() }) {
+ lockerOwner = true
+ locker = InternalScrollOrientationLocker().also {
+ customEventDispatcher.dispatchCustomEvent(
+ ShareScrollOrientationLockerEvent(it)
+ )
+ }
+ } else if (lockerOwner && changes.any { it.changedToDownIgnoreConsumed() }) {
+ // TODO(shepshapard): This is always doing some extra work given that some of the
+ // child gesture filters may already have received the InternalScrollOrientationLocker.
+ // It is functionality correct, but could be optimized (though it would likely
+ // not provide that much of a performance boost in the real world.
+ customEventDispatcher.dispatchCustomEvent(
+ ShareScrollOrientationLockerEvent(locker!!)
+ )
+ }
+ }
+
+ /**
+ * Handles the tear down of internal state.
+ *
+ * This method must be called toward the bottom of [PointerInputFilter.onPointerInput]
+ * for all [PointerEventPass]es, and [attemptToLockPointers] or [getPointersFor] should not
+ * be called afterwards.
+ *
+ * @see onPointerInputSetup
+ * @see onCancel
+ * @see onCustomEvent
+ */
+ fun onPointerInputTearDown(changes: List<PointerInputChange>, pass: PointerEventPass) {
+ if (pass == PointerEventPass.PostDown && changes.all { it.changedToUpIgnoreConsumed() }) {
+ reset()
+ }
+ }
+
+ /**
+ * Handles the tear down of internal state due to a call to [PointerInputFilter.onCancel].
+ *
+ * Must be called in [PointerInputFilter.onCancel].
+ *
+ * @see onPointerInputSetup
+ * @see onPointerInputTearDown
+ * @see onCustomEvent
+ */
+ fun onCancel() {
+ reset()
+ }
+
+ /**
+ * Handles the other half of [onPointerInputSetup] and must be called in all calls to
+ * [PointerInputFilter.onCustomEvent].
+ *
+ * @see onPointerInputSetup
+ * @see onPointerInputTearDown
+ * @see onCancel
+ * @throws [IllegalStateException] if this [ScrollOrientationLocker] receives a
+ * [ShareScrollOrientationLockerEvent] via this method after having already dispatched a
+ * [ShareScrollOrientationLockerEvent] itself.
+ */
+ fun onCustomEvent(customEvent: CustomEvent, pass: PointerEventPass) {
+
+ if (pass == PointerEventPass.InitialDown &&
+ customEvent is ShareScrollOrientationLockerEvent) {
+ if (lockerOwner) {
+ throw IllegalStateException("This instance of ScrollOrientationLocker should " +
+ "never receive a ShareScrollOrientationLockerEvent because it already " +
+ "dispatched one, and thus should be the only one in it's subtree to " +
+ "dispatch one.")
+ }
+ locker = customEvent.scrollOrientationLocker
+ }
+ }
+
+ /**
+ * Locks the [PointerId]s associated with the [changes] to [orientation].
+ *
+ * This effects which [changes] are returned by [getPointersFor].
+ *
+ * Pointers that are already locked to a given orientation cannot be later locked to a different
+ * orientation.
+ *
+ * @throws [IllegalStateException] if this method is called when this
+ * [ScrollOrientationLocker] has not yet been initialized. This is likely happening because
+ * [onPointerInputSetup] is not being called with every [PointerEventPass] before this method
+ * is being called.
+ */
+ fun attemptToLockPointers(changes: List<PointerInputChange>, orientation: Orientation) {
+ if (locker == null) {
+ throw IllegalStateException("Internal state has not been set. This method should not" +
+ " be called in any place but after calls to onPointerInputSetup and before " +
+ "calls to onPointerInputTearDown or onCancel. Also, onCustomEvent must be " +
+ "called appropriately. See docs for details.")
+ }
+ locker!!.attemptToLockPointers(changes, orientation)
+ }
+
+ /**
+ * Filters the [changes] for those that are allowed to be acted upon for the [orientation].
+ *
+ * A change can be acted on if it was not already locked in the other orientation.
+ *
+ * For example, if pointer 1 was previously locked to Horizontal via [attemptToLockPointers]
+ * then calling this method with pointers 1 and 2 and the following orientation will result
+ * in the following pointers being returned:
+ *
+ * - Orientation.Horizontal -> (1, 2)
+ * - Orientation.Vertical -> (2)
+ *
+ * @throws [IllegalStateException] if this method is called when this
+ * [ScrollOrientationLocker] has not yet been initialized. This is likely happening because
+ * [onPointerInputSetup] is not being called with every [PointerEventPass] before this method
+ * is being called.
+ */
+ fun getPointersFor(
+ changes: List<PointerInputChange>,
+ orientation: Orientation
+ ): List<PointerInputChange> {
+ if (locker == null) {
+ throw IllegalStateException("Internal state has not been set. This method should not" +
+ " be called in any place but after calls to onPointerInputSetup and before " +
+ "calls to onPointerInputTearDown or onCancel. Also, onCustomEvent must be " +
+ "called appropriately. See docs for details.")
+ }
+ return locker!!.getPointersFor(changes, orientation)
+ }
+
+ private fun reset() {
+ locker = null
+ lockerOwner = false
+ }
+}
+
+@VisibleForTesting
+internal class InternalScrollOrientationLocker {
+ private val pointerLocks: MutableMap<PointerId, Orientation> = mutableMapOf()
+
+ fun attemptToLockPointers(pointerIds: List<PointerInputChange>, orientation: Orientation) {
+ pointerIds.fastForEach {
+ if (pointerLocks[it.id] == null) {
+ pointerLocks[it.id] = orientation
+ }
+ }
+ }
+
+ fun getPointersFor(
+ pointerIds: List<PointerInputChange>,
+ orientation: Orientation
+ ): List<PointerInputChange> {
+ return pointerIds
+ .filter { pointerLocks[it.id] == null || pointerLocks[it.id] == orientation }
+ }
+}
+
+@VisibleForTesting
+internal class ShareScrollOrientationLockerEvent(
+ val scrollOrientationLocker: InternalScrollOrientationLocker
+) : CustomEvent
\ No newline at end of file
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/keyinput/Key.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/keyinput/Key.kt
index fbd105a..33d40a9 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/keyinput/Key.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/keyinput/Key.kt
@@ -19,1394 +19,306 @@
import android.view.KeyEvent
/**
- * Represents keys on a keyboard.
+ * Actual implementation of [Key] for Android.
*
* @param keyCode an integer code representing the key pressed.
*/
-inline class Key(val keyCode: Int) {
- companion object {
- /** Unknown key. */
- val Unknown = Key(KeyEvent.KEYCODE_UNKNOWN)
-
- /**
- * Soft Left key.
- *
- * Usually situated below the display on phones and used as a multi-function
- * feature key for selecting a software defined function shown on the bottom left
- * of the display.
- */
- val SoftLeft = Key(KeyEvent.KEYCODE_SOFT_LEFT)
-
- /**
- * Soft Right key.
- *
- * Usually situated below the display on phones and used as a multi-function
- * feature key for selecting a software defined function shown on the bottom right
- * of the display.
- */
- val SoftRight = Key(KeyEvent.KEYCODE_SOFT_RIGHT)
-
- /**
- * Home key.
- *
- * This key is handled by the framework and is never delivered to applications.
- */
- val Home = Key(KeyEvent.KEYCODE_HOME)
-
- /** Back key. */
- val Back = Key(KeyEvent.KEYCODE_BACK)
-
- /** Help key. */
- val Help = Key(KeyEvent.KEYCODE_HELP)
-
- /**
- * Navigate to previous key.
- *
- * Goes backward by one item in an ordered collection of items.
- */
- val NavigatePrevious = Key(KeyEvent.KEYCODE_NAVIGATE_PREVIOUS)
-
- /**
- * Navigate to next key.
- *
- * Advances to the next item in an ordered collection of items.
- */
- val NavigateNext = Key(KeyEvent.KEYCODE_NAVIGATE_NEXT)
-
- /**
- * Navigate in key.
- *
- * Activates the item that currently has focus or expands to the next level of a navigation
- * hierarchy.
- */
- val NavigateIn = Key(KeyEvent.KEYCODE_NAVIGATE_IN)
-
- /**
- * Navigate out key.
- *
- * Backs out one level of a navigation hierarchy or collapses the item that currently has
- * focus.
- */
- val NavigateOut = Key(KeyEvent.KEYCODE_NAVIGATE_OUT)
-
- /** Consumed by the system for navigation up. */
- val SystemNavigationUp = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP)
-
- /** Consumed by the system for navigation down. */
- val SystemNavigationDown = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN)
-
- /** Consumed by the system for navigation left. */
- val SystemNavigationLeft = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT)
-
- /** Consumed by the system for navigation right. */
- val SystemNavigationRight = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT)
-
- /** Call key. */
- val Call = Key(KeyEvent.KEYCODE_CALL)
-
- /** End Call key. */
- val EndCall = Key(KeyEvent.KEYCODE_ENDCALL)
-
- /**
- * Directional Pad Up key.
- *
- * May also be synthesized from trackball motions.
- */
- val DPadUp = Key(KeyEvent.KEYCODE_DPAD_UP)
-
- /**
- * Directional Pad Down key.
- *
- * May also be synthesized from trackball motions.
- */
- val DPadDown = Key(KeyEvent.KEYCODE_DPAD_DOWN)
-
- /**
- * Directional Pad Left key.
- *
- * May also be synthesized from trackball motions.
- */
- val DPadLeft = Key(KeyEvent.KEYCODE_DPAD_LEFT)
-
- /**
- * Directional Pad Right key.
- *
- * May also be synthesized from trackball motions.
- */
- val DPadRight = Key(KeyEvent.KEYCODE_DPAD_RIGHT)
-
- /**
- * Directional Pad Center key.
- *
- * May also be synthesized from trackball motions.
- */
- val DPadCenter = Key(KeyEvent.KEYCODE_DPAD_CENTER)
-
- /** Directional Pad Up-Left. */
- val DPadUpLeft = Key(KeyEvent.KEYCODE_DPAD_UP_LEFT)
-
- /** Directional Pad Down-Left. */
- val DPadDownLeft = Key(KeyEvent.KEYCODE_DPAD_DOWN_LEFT)
-
- /** Directional Pad Up-Right. */
- val DPadUpRight = Key(KeyEvent.KEYCODE_DPAD_UP_RIGHT)
-
- /** Directional Pad Down-Right. */
- val DPadDownRight = Key(KeyEvent.KEYCODE_DPAD_DOWN_RIGHT)
-
- /**
- * Volume Up key.
- *
- * Adjusts the speaker volume up.
- */
- val VolumeUp = Key(KeyEvent.KEYCODE_VOLUME_UP)
-
- /**
- * Volume Down key.
- *
- * Adjusts the speaker volume down.
- */
- val VolumeDown = Key(KeyEvent.KEYCODE_VOLUME_DOWN)
-
- /** Power key. */
- val Power = Key(KeyEvent.KEYCODE_POWER)
-
- /**
- * Camera key.
- *
- * Used to launch a camera application or take pictures.
- */
- val Camera = Key(KeyEvent.KEYCODE_CAMERA)
-
- /** Clear key. */
- val Clear = Key(KeyEvent.KEYCODE_CLEAR)
-
- /** '0' key. */
- val Number0 = Key(KeyEvent.KEYCODE_0)
-
- /** '1' key. */
- val Number1 = Key(KeyEvent.KEYCODE_1)
-
- /** '2' key. */
- val Number2 = Key(KeyEvent.KEYCODE_2)
-
- /** '3' key. */
- val Number3 = Key(KeyEvent.KEYCODE_3)
-
- /** '4' key. */
- val Number4 = Key(KeyEvent.KEYCODE_4)
-
- /** '5' key. */
- val Number5 = Key(KeyEvent.KEYCODE_5)
-
- /** '6' key. */
- val Number6 = Key(KeyEvent.KEYCODE_6)
-
- /** '7' key. */
- val Number7 = Key(KeyEvent.KEYCODE_7)
-
- /** '8' key. */
- val Number8 = Key(KeyEvent.KEYCODE_8)
-
- /** '9' key. */
- val Number9 = Key(KeyEvent.KEYCODE_9)
-
- /** '11' key. */
- val Number11 = Key(KeyEvent.KEYCODE_11)
-
- /** '12' key. */
- val Number12 = Key(KeyEvent.KEYCODE_12)
-
- /** '+' key. */
- val Plus = Key(KeyEvent.KEYCODE_PLUS)
-
- /** '-'. */
- val Minus = Key(KeyEvent.KEYCODE_MINUS)
-
- /** '*' key. */
- val Multiply = Key(KeyEvent.KEYCODE_STAR)
-
- /** '=' key. */
- val Equals = Key(KeyEvent.KEYCODE_EQUALS)
-
- /** '#' key. */
- val Pound = Key(KeyEvent.KEYCODE_POUND)
-
- /** 'A' key. */
- val A = Key(KeyEvent.KEYCODE_A)
-
- /** 'B' key. */
- val B = Key(KeyEvent.KEYCODE_B)
-
- /** 'C' key. */
- val C = Key(KeyEvent.KEYCODE_C)
-
- /** 'D' key. */
- val D = Key(KeyEvent.KEYCODE_D)
-
- /** 'E' key. */
- val E = Key(KeyEvent.KEYCODE_E)
-
- /** 'F' key. */
- val F = Key(KeyEvent.KEYCODE_F)
-
- /** 'G' key. */
- val G = Key(KeyEvent.KEYCODE_G)
-
- /** 'H' key. */
- val H = Key(KeyEvent.KEYCODE_H)
-
- /** 'I' key. */
- val I = Key(KeyEvent.KEYCODE_I)
-
- /** 'J' key. */
- val J = Key(KeyEvent.KEYCODE_J)
-
- /** 'K' key. */
- val K = Key(KeyEvent.KEYCODE_K)
-
- /** 'L' key. */
- val L = Key(KeyEvent.KEYCODE_L)
-
- /** 'M' key. */
- val M = Key(KeyEvent.KEYCODE_M)
-
- /** 'N' key. */
- val N = Key(KeyEvent.KEYCODE_N)
-
- /** 'O' key. */
- val O = Key(KeyEvent.KEYCODE_O)
-
- /** 'P' key. */
- val P = Key(KeyEvent.KEYCODE_P)
-
- /** 'Q' key. */
- val Q = Key(KeyEvent.KEYCODE_Q)
-
- /** 'R' key. */
- val R = Key(KeyEvent.KEYCODE_R)
-
- /** 'S' key. */
- val S = Key(KeyEvent.KEYCODE_S)
-
- /** 'T' key. */
- val T = Key(KeyEvent.KEYCODE_T)
-
- /** 'U' key. */
- val U = Key(KeyEvent.KEYCODE_U)
-
- /** 'V' key. */
- val V = Key(KeyEvent.KEYCODE_V)
-
- /** 'W' key. */
- val W = Key(KeyEvent.KEYCODE_W)
-
- /** 'X' key. */
- val X = Key(KeyEvent.KEYCODE_X)
-
- /** 'Y' key. */
- val Y = Key(KeyEvent.KEYCODE_Y)
-
- /** 'Z' key. */
- val Z = Key(KeyEvent.KEYCODE_Z)
-
- /** ',' key. */
- val Comma = Key(KeyEvent.KEYCODE_COMMA)
-
- /** '.' key. */
- val Period = Key(KeyEvent.KEYCODE_PERIOD)
-
- /** Left Alt modifier key. */
- val AltLeft = Key(KeyEvent.KEYCODE_ALT_LEFT)
-
- /** Right Alt modifier key. */
- val AltRight = Key(KeyEvent.KEYCODE_ALT_RIGHT)
-
- /** Left Shift modifier key. */
- val ShiftLeft = Key(KeyEvent.KEYCODE_SHIFT_LEFT)
-
- /** Right Shift modifier key. */
- val ShiftRight = Key(KeyEvent.KEYCODE_SHIFT_RIGHT)
-
- /** Tab key. */
- val Tab = Key(KeyEvent.KEYCODE_TAB)
-
- /** Space key. */
- val Spacebar = Key(KeyEvent.KEYCODE_SPACE)
-
- /**
- * Symbol modifier key.
- *
- * Used to enter alternate symbols.
- */
- val Symbol = Key(KeyEvent.KEYCODE_SYM)
-
- /**
- * Browser special function key.
- *
- * Used to launch a browser application.
- */
- val Browser = Key(KeyEvent.KEYCODE_EXPLORER)
-
- /**
- * Envelope special function key.
- *
- * Used to launch a mail application.
- */
- val Envelope = Key(KeyEvent.KEYCODE_ENVELOPE)
-
- /** Enter key. */
- val Enter = Key(KeyEvent.KEYCODE_ENTER)
-
- /**
- * Backspace key.
- *
- * Deletes characters before the insertion point, unlike [Delete].
- */
- val Backspace = Key(KeyEvent.KEYCODE_DEL)
-
- /**
- * Delete key.
- *
- * Deletes characters ahead of the insertion point, unlike [Backspace].
- */
- val Delete = Key(KeyEvent.KEYCODE_FORWARD_DEL)
-
- /** Escape key. */
- val Escape = Key(KeyEvent.KEYCODE_ESCAPE)
-
- /** Left Control modifier key. */
- val CtrlLeft = Key(KeyEvent.KEYCODE_CTRL_LEFT)
-
- /** Right Control modifier key. */
- val CtrlRight = Key(KeyEvent.KEYCODE_CTRL_RIGHT)
-
- /** Caps Lock key. */
- val CapsLock = Key(KeyEvent.KEYCODE_CAPS_LOCK)
-
- /** Scroll Lock key. */
- val ScrollLock = Key(KeyEvent.KEYCODE_SCROLL_LOCK)
-
- /** Left Meta modifier key. */
- val MetaLeft = Key(KeyEvent.KEYCODE_META_LEFT)
-
- /** Right Meta modifier key. */
- val MetaRight = Key(KeyEvent.KEYCODE_META_RIGHT)
-
- /** Function modifier key. */
- val Function = Key(KeyEvent.KEYCODE_FUNCTION)
-
- /** System Request / Print Screen key. */
- val PrintScreen = Key(KeyEvent.KEYCODE_SYSRQ)
-
- /** Break / Pause key. */
- val Break = Key(KeyEvent.KEYCODE_BREAK)
-
- /**
- * Home Movement key.
- *
- * Used for scrolling or moving the cursor around to the start of a line
- * or to the top of a list.
- */
- val MoveHome = Key(KeyEvent.KEYCODE_MOVE_HOME)
-
- /**
- * End Movement key.
- *
- * Used for scrolling or moving the cursor around to the end of a line
- * or to the bottom of a list.
- */
- val MoveEnd = Key(KeyEvent.KEYCODE_MOVE_END)
-
- /**
- * Insert key.
- *
- * Toggles insert / overwrite edit mode.
- */
- val Insert = Key(KeyEvent.KEYCODE_INSERT)
-
- /** Cut key. */
- val Cut = Key(KeyEvent.KEYCODE_CUT)
-
- /** Copy key. */
- val Copy = Key(KeyEvent.KEYCODE_COPY)
-
- /** Paste key. */
- val Paste = Key(KeyEvent.KEYCODE_PASTE)
-
- /** '`' (backtick) key. */
- val Grave = Key(KeyEvent.KEYCODE_GRAVE)
-
- /** '[' key. */
- val LeftBracket = Key(KeyEvent.KEYCODE_LEFT_BRACKET)
-
- /** ']' key. */
- val RightBracket = Key(KeyEvent.KEYCODE_RIGHT_BRACKET)
-
- /** '/' key. */
- val Slash = Key(KeyEvent.KEYCODE_SLASH)
-
- /** '\' key. */
- val Backslash = Key(KeyEvent.KEYCODE_BACKSLASH)
-
- /** ';' key. */
- val Semicolon = Key(KeyEvent.KEYCODE_SEMICOLON)
-
- /** ''' (apostrophe) key. */
- val Apostrophe = Key(KeyEvent.KEYCODE_APOSTROPHE)
-
- /** '@' key. */
- val At = Key(KeyEvent.KEYCODE_AT)
-
- /**
- * Number modifier key.
- *
- * Used to enter numeric symbols.
- * This key is not Num Lock; it is more like [AltLeft].
- */
- val Number = Key(KeyEvent.KEYCODE_NUM)
-
- /**
- * Headset Hook key.
- *
- * Used to hang up calls and stop media.
- */
- val HeadsetHook = Key(KeyEvent.KEYCODE_HEADSETHOOK)
-
- /**
- * Camera Focus key.
- *
- * Used to focus the camera.
- */
- val Focus = Key(KeyEvent.KEYCODE_FOCUS)
-
- /** Menu key. */
- val Menu = Key(KeyEvent.KEYCODE_MENU)
-
- /** Notification key. */
- val Notification = Key(KeyEvent.KEYCODE_NOTIFICATION)
-
- /** Search key. */
- val Search = Key(KeyEvent.KEYCODE_SEARCH)
-
- /** Page Up key. */
- val PageUp = Key(KeyEvent.KEYCODE_PAGE_UP)
-
- /** Page Down key. */
- val PageDown = Key(KeyEvent.KEYCODE_PAGE_DOWN)
-
- /**
- * Picture Symbols modifier key.
- *
- * Used to switch symbol sets (Emoji, Kao-moji).
- */
- val PictureSymbols = Key(KeyEvent.KEYCODE_PICTSYMBOLS)
-
- /**
- * Switch Charset modifier key.
- *
- * Used to switch character sets (Kanji, Katakana).
- */
- val SwitchCharset = Key(KeyEvent.KEYCODE_SWITCH_CHARSET)
-
- /**
- * A Button key.
- *
- * On a game controller, the A button should be either the button labeled A
- * or the first button on the bottom row of controller buttons.
- */
- val ButtonA = Key(KeyEvent.KEYCODE_BUTTON_A)
-
- /**
- * B Button key.
- *
- * On a game controller, the B button should be either the button labeled B
- * or the second button on the bottom row of controller buttons.
- */
- val ButtonB = Key(KeyEvent.KEYCODE_BUTTON_B)
-
- /**
- * C Button key.
- *
- * On a game controller, the C button should be either the button labeled C
- * or the third button on the bottom row of controller buttons.
- */
- val ButtonC = Key(KeyEvent.KEYCODE_BUTTON_C)
-
- /**
- * X Button key.
- *
- * On a game controller, the X button should be either the button labeled X
- * or the first button on the upper row of controller buttons.
- */
- val ButtonX = Key(KeyEvent.KEYCODE_BUTTON_X)
-
- /**
- * Y Button key.
- *
- * On a game controller, the Y button should be either the button labeled Y
- * or the second button on the upper row of controller buttons.
- */
- val ButtonY = Key(KeyEvent.KEYCODE_BUTTON_Y)
-
- /**
- * Z Button key.
- *
- * On a game controller, the Z button should be either the button labeled Z
- * or the third button on the upper row of controller buttons.
- */
- val ButtonZ = Key(KeyEvent.KEYCODE_BUTTON_Z)
-
- /**
- * L1 Button key.
- *
- * On a game controller, the L1 button should be either the button labeled L1 (or L)
- * or the top left trigger button.
- */
- val ButtonL1 = Key(KeyEvent.KEYCODE_BUTTON_L1)
-
- /**
- * R1 Button key.
- *
- * On a game controller, the R1 button should be either the button labeled R1 (or R)
- * or the top right trigger button.
- */
- val ButtonR1 = Key(KeyEvent.KEYCODE_BUTTON_R1)
-
- /**
- * L2 Button key.
- *
- * On a game controller, the L2 button should be either the button labeled L2
- * or the bottom left trigger button.
- */
- val ButtonL2 = Key(KeyEvent.KEYCODE_BUTTON_L2)
-
- /**
- * R2 Button key.
- *
- * On a game controller, the R2 button should be either the button labeled R2
- * or the bottom right trigger button.
- */
- val ButtonR2 = Key(KeyEvent.KEYCODE_BUTTON_R2)
-
- /**
- * Left Thumb Button key.
- *
- * On a game controller, the left thumb button indicates that the left (or only)
- * joystick is pressed.
- */
- val ButtonThumbLeft = Key(KeyEvent.KEYCODE_BUTTON_THUMBL)
-
- /**
- * Right Thumb Button key.
- *
- * On a game controller, the right thumb button indicates that the right
- * joystick is pressed.
- */
- val ButtonThumbRight = Key(KeyEvent.KEYCODE_BUTTON_THUMBR)
-
- /**
- * Start Button key.
- *
- * On a game controller, the button labeled Start.
- */
- val ButtonStart = Key(KeyEvent.KEYCODE_BUTTON_START)
-
- /**
- * Select Button key.
- *
- * On a game controller, the button labeled Select.
- */
- val ButtonSelect = Key(KeyEvent.KEYCODE_BUTTON_SELECT)
-
- /**
- * Mode Button key.
- *
- * On a game controller, the button labeled Mode.
- */
- val ButtonMode = Key(KeyEvent.KEYCODE_BUTTON_MODE)
-
- /** Generic Game Pad Button #1. */
- val Button1 = Key(KeyEvent.KEYCODE_BUTTON_1)
-
- /** Generic Game Pad Button #2. */
- val Button2 = Key(KeyEvent.KEYCODE_BUTTON_2)
-
- /** Generic Game Pad Button #3. */
- val Button3 = Key(KeyEvent.KEYCODE_BUTTON_3)
-
- /** Generic Game Pad Button #4. */
- val Button4 = Key(KeyEvent.KEYCODE_BUTTON_4)
-
- /** Generic Game Pad Button #5. */
- val Button5 = Key(KeyEvent.KEYCODE_BUTTON_5)
-
- /** Generic Game Pad Button #6. */
- val Button6 = Key(KeyEvent.KEYCODE_BUTTON_6)
-
- /** Generic Game Pad Button #7. */
- val Button7 = Key(KeyEvent.KEYCODE_BUTTON_7)
-
- /** Generic Game Pad Button #8. */
- val Button8 = Key(KeyEvent.KEYCODE_BUTTON_8)
-
- /** Generic Game Pad Button #9. */
- val Button9 = Key(KeyEvent.KEYCODE_BUTTON_9)
-
- /** Generic Game Pad Button #10. */
- val Button10 = Key(KeyEvent.KEYCODE_BUTTON_10)
-
- /** Generic Game Pad Button #11. */
- val Button11 = Key(KeyEvent.KEYCODE_BUTTON_11)
-
- /** Generic Game Pad Button #12. */
- val Button12 = Key(KeyEvent.KEYCODE_BUTTON_12)
-
- /** Generic Game Pad Button #13. */
- val Button13 = Key(KeyEvent.KEYCODE_BUTTON_13)
-
- /** Generic Game Pad Button #14. */
- val Button14 = Key(KeyEvent.KEYCODE_BUTTON_14)
-
- /** Generic Game Pad Button #15. */
- val Button15 = Key(KeyEvent.KEYCODE_BUTTON_15)
-
- /** Generic Game Pad Button #16. */
- val Button16 = Key(KeyEvent.KEYCODE_BUTTON_16)
-
- /**
- * Forward key.
- *
- * Navigates forward in the history stack. Complement of [Back].
- */
- val Forward = Key(KeyEvent.KEYCODE_FORWARD)
-
- /** F1 key. */
- val F1 = Key(KeyEvent.KEYCODE_F1)
-
- /** F2 key. */
- val F2 = Key(KeyEvent.KEYCODE_F2)
-
- /** F3 key. */
- val F3 = Key(KeyEvent.KEYCODE_F3)
-
- /** F4 key. */
- val F4 = Key(KeyEvent.KEYCODE_F4)
-
- /** F5 key. */
- val F5 = Key(KeyEvent.KEYCODE_F5)
-
- /** F6 key. */
- val F6 = Key(KeyEvent.KEYCODE_F6)
-
- /** F7 key. */
- val F7 = Key(KeyEvent.KEYCODE_F7)
-
- /** F8 key. */
- val F8 = Key(KeyEvent.KEYCODE_F8)
-
- /** F9 key. */
- val F9 = Key(KeyEvent.KEYCODE_F9)
-
- /** F10 key. */
- val F10 = Key(KeyEvent.KEYCODE_F10)
-
- /** F11 key. */
- val F11 = Key(KeyEvent.KEYCODE_F11)
-
- /** F12 key. */
- val F12 = Key(KeyEvent.KEYCODE_F12)
-
- /**
- * Num Lock key.
- *
- * This is the Num Lock key; it is different from [Number].
- * This key alters the behavior of other keys on the numeric keypad.
- */
- val NumLock = Key(KeyEvent.KEYCODE_NUM_LOCK)
-
- /** Numeric keypad '0' key. */
- val NumPad0 = Key(KeyEvent.KEYCODE_NUMPAD_0)
-
- /** Numeric keypad '1' key. */
- val NumPad1 = Key(KeyEvent.KEYCODE_NUMPAD_1)
-
- /** Numeric keypad '2' key. */
- val NumPad2 = Key(KeyEvent.KEYCODE_NUMPAD_2)
-
- /** Numeric keypad '3' key. */
- val NumPad3 = Key(KeyEvent.KEYCODE_NUMPAD_3)
-
- /** Numeric keypad '4' key. */
- val NumPad4 = Key(KeyEvent.KEYCODE_NUMPAD_4)
-
- /** Numeric keypad '5' key. */
- val NumPad5 = Key(KeyEvent.KEYCODE_NUMPAD_5)
-
- /** Numeric keypad '6' key. */
- val NumPad6 = Key(KeyEvent.KEYCODE_NUMPAD_6)
-
- /** Numeric keypad '7' key. */
- val NumPad7 = Key(KeyEvent.KEYCODE_NUMPAD_7)
-
- /** Numeric keypad '8' key. */
- val NumPad8 = Key(KeyEvent.KEYCODE_NUMPAD_8)
-
- /** Numeric keypad '9' key. */
- val NumPad9 = Key(KeyEvent.KEYCODE_NUMPAD_9)
-
- /** Numeric keypad '/' key (for division). */
- val NumPadDivide = Key(KeyEvent.KEYCODE_NUMPAD_DIVIDE)
-
- /** Numeric keypad '*' key (for multiplication). */
- val NumPadMultiply = Key(KeyEvent.KEYCODE_NUMPAD_MULTIPLY)
-
- /** Numeric keypad '-' key (for subtraction). */
- val NumPadSubtract = Key(KeyEvent.KEYCODE_NUMPAD_SUBTRACT)
-
- /** Numeric keypad '+' key (for addition). */
- val NumPadAdd = Key(KeyEvent.KEYCODE_NUMPAD_ADD)
-
- /** Numeric keypad '.' key (for decimals or digit grouping). */
- val NumPadDot = Key(KeyEvent.KEYCODE_NUMPAD_DOT)
-
- /** Numeric keypad ',' key (for decimals or digit grouping). */
- val NumPadComma = Key(KeyEvent.KEYCODE_NUMPAD_COMMA)
-
- /** Numeric keypad Enter key. */
- val NumPadEnter = Key(KeyEvent.KEYCODE_NUMPAD_ENTER)
-
- /** Numeric keypad '=' key. */
- val NumPadEquals = Key(KeyEvent.KEYCODE_NUMPAD_EQUALS)
-
- /** Numeric keypad '(' key. */
- val NumPadLeftParenthesis = Key(KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN)
-
- /** Numeric keypad ')' key. */
- val NumPadRightParenthesis = Key(KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN)
-
- /** Play media key. */
- val MediaPlay = Key(KeyEvent.KEYCODE_MEDIA_PLAY)
-
- /** Pause media key. */
- val MediaPause = Key(KeyEvent.KEYCODE_MEDIA_PAUSE)
-
- /** Play/Pause media key. */
- val MediaPlayPause = Key(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)
-
- /** Stop media key. */
- val MediaStop = Key(KeyEvent.KEYCODE_MEDIA_STOP)
-
- /** Record media key. */
- val MediaRecord = Key(KeyEvent.KEYCODE_MEDIA_RECORD)
-
- /** Play Next media key. */
- val MediaNext = Key(KeyEvent.KEYCODE_MEDIA_NEXT)
-
- /** Play Previous media key. */
- val MediaPrevious = Key(KeyEvent.KEYCODE_MEDIA_PREVIOUS)
-
- /** Rewind media key. */
- val MediaRewind = Key(KeyEvent.KEYCODE_MEDIA_REWIND)
-
- /** Fast Forward media key. */
- val MediaFastForward = Key(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD)
-
- /**
- * Close media key.
- *
- * May be used to close a CD tray, for example.
- */
- val MediaClose = Key(KeyEvent.KEYCODE_MEDIA_CLOSE)
-
- /**
- * Audio Track key.
- *
- * Switches the audio tracks.
- */
- val MediaAudioTrack = Key(KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK)
-
- /**
- * Eject media key.
- *
- * May be used to eject a CD tray, for example.
- */
- val MediaEject = Key(KeyEvent.KEYCODE_MEDIA_EJECT)
-
- /**
- * Media Top Menu key.
- *
- * Goes to the top of media menu.
- */
- val MediaTopMenu = Key(KeyEvent.KEYCODE_MEDIA_TOP_MENU)
-
- /** Skip forward media key. */
- val MediaSkipForward = Key(KeyEvent.KEYCODE_MEDIA_SKIP_FORWARD)
-
- /** Skip backward media key. */
- val MediaSkipBackward = Key(KeyEvent.KEYCODE_MEDIA_SKIP_BACKWARD)
-
- /**
- * Step forward media key.
- *
- * Steps media forward, one frame at a time.
- */
- val MediaStepForward = Key(KeyEvent.KEYCODE_MEDIA_STEP_FORWARD)
- /**
- * Step backward media key.
- *
- * Steps media backward, one frame at a time.
- */
- val MediaStepBackward = Key(KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD)
-
- /**
- * Mute key.
- *
- * Mutes the microphone, unlike [VolumeMute].
- */
- val MicrophoneMute = Key(KeyEvent.KEYCODE_MUTE)
-
- /**
- * Volume Mute key.
- *
- * Mutes the speaker, unlike [MicrophoneMute].
- *
- * This key should normally be implemented as a toggle such that the first press
- * mutes the speaker and the second press restores the original volume.
- */
- val VolumeMute = Key(KeyEvent.KEYCODE_VOLUME_MUTE)
-
- /**
- * Info key.
- *
- * Common on TV remotes to show additional information related to what is
- * currently being viewed.
- */
- val Info = Key(KeyEvent.KEYCODE_INFO)
-
- /**
- * Channel up key.
- *
- * On TV remotes, increments the television channel.
- */
- val ChannelUp = Key(KeyEvent.KEYCODE_CHANNEL_UP)
-
- /**
- * Channel down key.
- *
- * On TV remotes, decrements the television channel.
- */
- val ChannelDown = Key(KeyEvent.KEYCODE_CHANNEL_DOWN)
-
- /** Zoom in key. */
- val ZoomIn = Key(KeyEvent.KEYCODE_ZOOM_IN)
-
- /** Zoom out key. */
- val ZoomOut = Key(KeyEvent.KEYCODE_ZOOM_OUT)
-
- /**
- * TV key.
- *
- * On TV remotes, switches to viewing live TV.
- */
- val Tv = Key(KeyEvent.KEYCODE_TV)
-
- /**
- * Window key.
- *
- * On TV remotes, toggles picture-in-picture mode or other windowing functions.
- * On Android Wear devices, triggers a display offset.
- */
- val Window = Key(KeyEvent.KEYCODE_WINDOW)
-
- /**
- * Guide key.
- *
- * On TV remotes, shows a programming guide.
- */
- val Guide = Key(KeyEvent.KEYCODE_GUIDE)
-
- /**
- * DVR key.
- *
- * On some TV remotes, switches to a DVR mode for recorded shows.
- */
- val Dvr = Key(KeyEvent.KEYCODE_DVR)
-
- /**
- * Bookmark key.
- *
- * On some TV remotes, bookmarks content or web pages.
- */
- val Bookmark = Key(KeyEvent.KEYCODE_BOOKMARK)
-
- /**
- * Toggle captions key.
- *
- * Switches the mode for closed-captioning text, for example during television shows.
- */
- val Captions = Key(KeyEvent.KEYCODE_CAPTIONS)
-
- /**
- * Settings key.
- *
- * Starts the system settings activity.
- */
- val Settings = Key(KeyEvent.KEYCODE_SETTINGS)
-
- /**
- * TV power key.
- *
- * On TV remotes, toggles the power on a television screen.
- */
- val TvPower = Key(KeyEvent.KEYCODE_TV_POWER)
-
- /**
- * TV input key.
- *
- * On TV remotes, switches the input on a television screen.
- */
- val TvInput = Key(KeyEvent.KEYCODE_TV_INPUT)
-
- /**
- * Set-top-box power key.
- *
- * On TV remotes, toggles the power on an external Set-top-box.
- */
- val SetTopBoxPower = Key(KeyEvent.KEYCODE_STB_POWER)
-
- /**
- * Set-top-box input key.
- *
- * On TV remotes, switches the input mode on an external Set-top-box.
- */
- val SetTopBoxInput = Key(KeyEvent.KEYCODE_STB_INPUT)
-
- /**
- * A/V Receiver power key.
- *
- * On TV remotes, toggles the power on an external A/V Receiver.
- */
- val AvReceiverPower = Key(KeyEvent.KEYCODE_AVR_POWER)
-
- /**
- * A/V Receiver input key.
- *
- * On TV remotes, switches the input mode on an external A/V Receiver.
- */
- val AvReceiverInput = Key(KeyEvent.KEYCODE_AVR_INPUT)
-
- /**
- * Red "programmable" key.
- *
- * On TV remotes, acts as a contextual/programmable key.
- */
- val ProgramRed = Key(KeyEvent.KEYCODE_PROG_RED)
-
- /**
- * Green "programmable" key.
- *
- * On TV remotes, acts as a contextual/programmable key.
- */
- val ProgramGreen = Key(KeyEvent.KEYCODE_PROG_GREEN)
-
- /**
- * Yellow "programmable" key.
- *
- * On TV remotes, acts as a contextual/programmable key.
- */
- val ProgramYellow = Key(KeyEvent.KEYCODE_PROG_YELLOW)
-
- /**
- * Blue "programmable" key.
- *
- * On TV remotes, acts as a contextual/programmable key.
- */
- val ProgramBlue = Key(KeyEvent.KEYCODE_PROG_BLUE)
-
- /**
- * App switch key.
- *
- * Should bring up the application switcher dialog.
- */
- val AppSwitch = Key(KeyEvent.KEYCODE_APP_SWITCH)
-
- /**
- * Language Switch key.
- *
- * Toggles the current input language such as switching between English and Japanese on
- * a QWERTY keyboard. On some devices, the same function may be performed by
- * pressing Shift+Space.
- */
- val LanguageSwitch = Key(KeyEvent.KEYCODE_LANGUAGE_SWITCH)
-
- /**
- * Manner Mode key.
- *
- * Toggles silent or vibrate mode on and off to make the device behave more politely
- * in certain settings such as on a crowded train. On some devices, the key may only
- * operate when long-pressed.
- */
- val MannerMode = Key(KeyEvent.KEYCODE_MANNER_MODE)
-
- /**
- * 3D Mode key.
- *
- * Toggles the display between 2D and 3D mode.
- */
- val Toggle2D3D = Key(KeyEvent.KEYCODE_3D_MODE)
-
- /**
- * Contacts special function key.
- *
- * Used to launch an address book application.
- */
- val Contacts = Key(KeyEvent.KEYCODE_CONTACTS)
-
- /**
- * Calendar special function key.
- *
- * Used to launch a calendar application.
- */
- val Calendar = Key(KeyEvent.KEYCODE_CALENDAR)
-
- /**
- * Music special function key.
- *
- * Used to launch a music player application.
- */
- val Music = Key(KeyEvent.KEYCODE_MUSIC)
-
- /**
- * Calculator special function key.
- *
- * Used to launch a calculator application.
- */
- val Calculator = Key(KeyEvent.KEYCODE_CALCULATOR)
-
- /** Japanese full-width / half-width key. */
- val ZenkakuHankaru = Key(KeyEvent.KEYCODE_ZENKAKU_HANKAKU)
-
- /** Japanese alphanumeric key. */
- val Eisu = Key(KeyEvent.KEYCODE_EISU)
-
- /** Japanese non-conversion key. */
- val Muhenkan = Key(KeyEvent.KEYCODE_MUHENKAN)
-
- /** Japanese conversion key. */
- val Henkan = Key(KeyEvent.KEYCODE_HENKAN)
-
- /** Japanese katakana / hiragana key. */
- val KatakanaHiragana = Key(KeyEvent.KEYCODE_KATAKANA_HIRAGANA)
-
- /** Japanese Yen key. */
- val Yen = Key(KeyEvent.KEYCODE_YEN)
-
- /** Japanese Ro key. */
- val Ro = Key(KeyEvent.KEYCODE_RO)
-
- /** Japanese kana key. */
- val Kana = Key(KeyEvent.KEYCODE_KANA)
-
- /**
- * Assist key.
- *
- * Launches the global assist activity. Not delivered to applications.
- */
- val Assist = Key(KeyEvent.KEYCODE_ASSIST)
-
- /**
- * Brightness Down key.
- *
- * Adjusts the screen brightness down.
- */
- val BrightnessDown = Key(KeyEvent.KEYCODE_BRIGHTNESS_DOWN)
-
- /**
- * Brightness Up key.
- *
- * Adjusts the screen brightness up.
- */
- val BrightnessUp = Key(KeyEvent.KEYCODE_BRIGHTNESS_UP)
-
- /**
- * Sleep key.
- *
- * Puts the device to sleep. Behaves somewhat like [Power] but it
- * has no effect if the device is already asleep.
- */
- val Sleep = Key(KeyEvent.KEYCODE_SLEEP)
-
- /**
- * Wakeup key.
- *
- * Wakes up the device. Behaves somewhat like [Power] but it
- * has no effect if the device is already awake.
- */
- val WakeUp = Key(KeyEvent.KEYCODE_WAKEUP)
-
- /** Put device to sleep unless a wakelock is held. */
- val SoftSleep = Key(KeyEvent.KEYCODE_SOFT_SLEEP)
-
- /**
- * Pairing key.
- *
- * Initiates peripheral pairing mode. Useful for pairing remote control
- * devices or game controllers, especially if no other input mode is
- * available.
- */
- val Pairing = Key(KeyEvent.KEYCODE_PAIRING)
-
- /**
- * Last Channel key.
- *
- * Goes to the last viewed channel.
- */
- val LastChannel = Key(KeyEvent.KEYCODE_LAST_CHANNEL)
-
- /**
- * TV data service key.
- *
- * Displays data services like weather, sports.
- */
- val TvDataService = Key(KeyEvent.KEYCODE_TV_DATA_SERVICE)
-
- /**
- * Voice Assist key.
- *
- * Launches the global voice assist activity. Not delivered to applications.
- */
- val VoiceAssist = Key(KeyEvent.KEYCODE_VOICE_ASSIST)
-
- /**
- * Radio key.
- *
- * Toggles TV service / Radio service.
- */
- val TvRadioService = Key(KeyEvent.KEYCODE_TV_RADIO_SERVICE)
-
- /**
- * Teletext key.
- *
- * Displays Teletext service.
- */
- val TvTeletext = Key(KeyEvent.KEYCODE_TV_TELETEXT)
-
- /**
- * Number entry key.
- *
- * Initiates to enter multi-digit channel number when each digit key is assigned
- * for selecting separate channel. Corresponds to Number Entry Mode (0x1D) of CEC
- * User Control Code.
- */
- val TvNumberEntry = Key(KeyEvent.KEYCODE_TV_NUMBER_ENTRY)
-
- /**
- * Analog Terrestrial key.
- *
- * Switches to analog terrestrial broadcast service.
- */
- val TvTerrestrialAnalog = Key(KeyEvent.KEYCODE_TV_TERRESTRIAL_ANALOG)
-
- /**
- * Digital Terrestrial key.
- *
- * Switches to digital terrestrial broadcast service.
- */
- val TvTerrestrialDigital = Key(KeyEvent.KEYCODE_TV_TERRESTRIAL_DIGITAL)
-
- /**
- * Satellite key.
- *
- * Switches to digital satellite broadcast service.
- */
- val TvSatellite = Key(KeyEvent.KEYCODE_TV_SATELLITE)
-
- /**
- * BS key.
- *
- * Switches to BS digital satellite broadcasting service available in Japan.
- */
- val TvSatelliteBs = Key(KeyEvent.KEYCODE_TV_SATELLITE_BS)
-
- /**
- * CS key.
- *
- * Switches to CS digital satellite broadcasting service available in Japan.
- */
- val TvSatelliteCs = Key(KeyEvent.KEYCODE_TV_SATELLITE_CS)
-
- /**
- * BS/CS key.
- *
- * Toggles between BS and CS digital satellite services.
- */
- val TvSatelliteService = Key(KeyEvent.KEYCODE_TV_SATELLITE_SERVICE)
-
- /**
- * Toggle Network key.
- *
- * Toggles selecting broadcast services.
- */
- val TvNetwork = Key(KeyEvent.KEYCODE_TV_NETWORK)
-
- /**
- * Antenna/Cable key.
- *
- * Toggles broadcast input source between antenna and cable.
- */
- val TvAntennaCable = Key(KeyEvent.KEYCODE_TV_ANTENNA_CABLE)
-
- /**
- * HDMI #1 key.
- *
- * Switches to HDMI input #1.
- */
- val TvInputHdmi1 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_1)
-
- /**
- * HDMI #2 key.
- *
- * Switches to HDMI input #2.
- */
- val TvInputHdmi2 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_2)
-
- /**
- * HDMI #3 key.
- *
- * Switches to HDMI input #3.
- */
- val TvInputHdmi3 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_3)
-
- /**
- * HDMI #4 key.
- *
- * Switches to HDMI input #4.
- */
- val TvInputHdmi4 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_4)
-
- /**
- * Composite #1 key.
- *
- * Switches to composite video input #1.
- */
- val TvInputComposite1 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_1)
-
- /**
- * Composite #2 key.
- *
- * Switches to composite video input #2.
- */
- val TvInputComposite2 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_2)
-
- /**
- * Component #1 key.
- *
- * Switches to component video input #1.
- */
- val TvInputComponent1 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1)
-
- /**
- * Component #2 key.
- *
- * Switches to component video input #2.
- */
- val TvInputComponent2 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2)
-
- /**
- * VGA #1 key.
- *
- * Switches to VGA (analog RGB) input #1.
- */
- val TvInputVga1 = Key(KeyEvent.KEYCODE_TV_INPUT_VGA_1)
-
- /**
- * Audio description key.
- *
- * Toggles audio description off / on.
- */
- val TvAudioDescription = Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION)
-
- /**
- * Audio description mixing volume up key.
- *
- * Increase the audio description volume as compared with normal audio volume.
- */
- val TvAudioDescriptionMixingVolumeUp = Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP)
-
- /**
- * Audio description mixing volume down key.
- *
- * Lessen audio description volume as compared with normal audio volume.
- */
- val TvAudioDescriptionMixingVolumeDown = Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN)
-
- /**
- * Zoom mode key.
- *
- * Changes Zoom mode (Normal, Full, Zoom, Wide-zoom, etc.)
- */
- val TvZoomMode = Key(KeyEvent.KEYCODE_TV_ZOOM_MODE)
-
- /**
- * Contents menu key.
- *
- * Goes to the title list. Corresponds to Contents Menu (0x0B) of CEC User Control Code
- */
- val TvContentsMenu = Key(KeyEvent.KEYCODE_TV_CONTENTS_MENU)
-
- /**
- * Media context menu key.
- *
- * Goes to the context menu of media contents. Corresponds to Media Context-sensitive
- * Menu (0x11) of CEC User Control Code.
- */
- val TvMediaContextMenu = Key(KeyEvent.KEYCODE_TV_MEDIA_CONTEXT_MENU)
-
- /**
- * Timer programming key.
- *
- * Goes to the timer recording menu. Corresponds to Timer Programming (0x54) of
- * CEC User Control Code.
- */
- val TvTimerProgramming = Key(KeyEvent.KEYCODE_TV_TIMER_PROGRAMMING)
-
- /**
- * Primary stem key for Wear
- *
- * Main power/reset button on watch.
- */
- val StemPrimary = Key(KeyEvent.KEYCODE_STEM_PRIMARY)
-
- /** Generic stem key 1 for Wear. */
- val Stem1 = Key(KeyEvent.KEYCODE_STEM_1)
-
- /** Generic stem key 2 for Wear. */
- val Stem2 = Key(KeyEvent.KEYCODE_STEM_2)
-
- /** Generic stem key 3 for Wear. */
- val Stem3 = Key(KeyEvent.KEYCODE_STEM_3)
-
- /** Show all apps. */
- val AllApps = Key(KeyEvent.KEYCODE_ALL_APPS)
-
- /** Refresh key. */
- val Refresh = Key(KeyEvent.KEYCODE_REFRESH)
-
- /** Thumbs up key. Apps can use this to let user up-vote content. */
- val ThumbsUp = Key(KeyEvent.KEYCODE_THUMBS_UP)
-
- /** Thumbs down key. Apps can use this to let user down-vote content. */
- val ThumbsDown = Key(KeyEvent.KEYCODE_THUMBS_DOWN)
-
- /**
- * Used to switch current [android.accounts.Account] that is
- * consuming content. May be consumed by system to set account globally.
- */
- val ProfileSwitch = Key(KeyEvent.KEYCODE_PROFILE_SWITCH)
+actual inline class Key(val keyCode: Int) {
+ actual companion object {
+ actual val Unknown = Key(KeyEvent.KEYCODE_UNKNOWN)
+ actual val SoftLeft = Key(KeyEvent.KEYCODE_SOFT_LEFT)
+ actual val SoftRight = Key(KeyEvent.KEYCODE_SOFT_RIGHT)
+ actual val Home = Key(KeyEvent.KEYCODE_HOME)
+ actual val Back = Key(KeyEvent.KEYCODE_BACK)
+ actual val Help = Key(KeyEvent.KEYCODE_HELP)
+ actual val NavigatePrevious = Key(KeyEvent.KEYCODE_NAVIGATE_PREVIOUS)
+ actual val NavigateNext = Key(KeyEvent.KEYCODE_NAVIGATE_NEXT)
+ actual val NavigateIn = Key(KeyEvent.KEYCODE_NAVIGATE_IN)
+ actual val NavigateOut = Key(KeyEvent.KEYCODE_NAVIGATE_OUT)
+ actual val SystemNavigationUp = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP)
+ actual val SystemNavigationDown = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN)
+ actual val SystemNavigationLeft = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT)
+ actual val SystemNavigationRight = Key(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT)
+ actual val Call = Key(KeyEvent.KEYCODE_CALL)
+ actual val EndCall = Key(KeyEvent.KEYCODE_ENDCALL)
+ actual val DPadUp = Key(KeyEvent.KEYCODE_DPAD_UP)
+ actual val DPadDown = Key(KeyEvent.KEYCODE_DPAD_DOWN)
+ actual val DPadLeft = Key(KeyEvent.KEYCODE_DPAD_LEFT)
+ actual val DPadRight = Key(KeyEvent.KEYCODE_DPAD_RIGHT)
+ actual val DPadCenter = Key(KeyEvent.KEYCODE_DPAD_CENTER)
+ actual val DPadUpLeft = Key(KeyEvent.KEYCODE_DPAD_UP_LEFT)
+ actual val DPadDownLeft = Key(KeyEvent.KEYCODE_DPAD_DOWN_LEFT)
+ actual val DPadUpRight = Key(KeyEvent.KEYCODE_DPAD_UP_RIGHT)
+ actual val DPadDownRight = Key(KeyEvent.KEYCODE_DPAD_DOWN_RIGHT)
+ actual val VolumeUp = Key(KeyEvent.KEYCODE_VOLUME_UP)
+ actual val VolumeDown = Key(KeyEvent.KEYCODE_VOLUME_DOWN)
+ actual val Power = Key(KeyEvent.KEYCODE_POWER)
+ actual val Camera = Key(KeyEvent.KEYCODE_CAMERA)
+ actual val Clear = Key(KeyEvent.KEYCODE_CLEAR)
+ actual val Number0 = Key(KeyEvent.KEYCODE_0)
+ actual val Number1 = Key(KeyEvent.KEYCODE_1)
+ actual val Number2 = Key(KeyEvent.KEYCODE_2)
+ actual val Number3 = Key(KeyEvent.KEYCODE_3)
+ actual val Number4 = Key(KeyEvent.KEYCODE_4)
+ actual val Number5 = Key(KeyEvent.KEYCODE_5)
+ actual val Number6 = Key(KeyEvent.KEYCODE_6)
+ actual val Number7 = Key(KeyEvent.KEYCODE_7)
+ actual val Number8 = Key(KeyEvent.KEYCODE_8)
+ actual val Number9 = Key(KeyEvent.KEYCODE_9)
+ actual val Number11 = Key(KeyEvent.KEYCODE_11)
+ actual val Number12 = Key(KeyEvent.KEYCODE_12)
+ actual val Plus = Key(KeyEvent.KEYCODE_PLUS)
+ actual val Minus = Key(KeyEvent.KEYCODE_MINUS)
+ actual val Multiply = Key(KeyEvent.KEYCODE_STAR)
+ actual val Equals = Key(KeyEvent.KEYCODE_EQUALS)
+ actual val Pound = Key(KeyEvent.KEYCODE_POUND)
+ actual val A = Key(KeyEvent.KEYCODE_A)
+ actual val B = Key(KeyEvent.KEYCODE_B)
+ actual val C = Key(KeyEvent.KEYCODE_C)
+ actual val D = Key(KeyEvent.KEYCODE_D)
+ actual val E = Key(KeyEvent.KEYCODE_E)
+ actual val F = Key(KeyEvent.KEYCODE_F)
+ actual val G = Key(KeyEvent.KEYCODE_G)
+ actual val H = Key(KeyEvent.KEYCODE_H)
+ actual val I = Key(KeyEvent.KEYCODE_I)
+ actual val J = Key(KeyEvent.KEYCODE_J)
+ actual val K = Key(KeyEvent.KEYCODE_K)
+ actual val L = Key(KeyEvent.KEYCODE_L)
+ actual val M = Key(KeyEvent.KEYCODE_M)
+ actual val N = Key(KeyEvent.KEYCODE_N)
+ actual val O = Key(KeyEvent.KEYCODE_O)
+ actual val P = Key(KeyEvent.KEYCODE_P)
+ actual val Q = Key(KeyEvent.KEYCODE_Q)
+ actual val R = Key(KeyEvent.KEYCODE_R)
+ actual val S = Key(KeyEvent.KEYCODE_S)
+ actual val T = Key(KeyEvent.KEYCODE_T)
+ actual val U = Key(KeyEvent.KEYCODE_U)
+ actual val V = Key(KeyEvent.KEYCODE_V)
+ actual val W = Key(KeyEvent.KEYCODE_W)
+ actual val X = Key(KeyEvent.KEYCODE_X)
+ actual val Y = Key(KeyEvent.KEYCODE_Y)
+ actual val Z = Key(KeyEvent.KEYCODE_Z)
+ actual val Comma = Key(KeyEvent.KEYCODE_COMMA)
+ actual val Period = Key(KeyEvent.KEYCODE_PERIOD)
+ actual val AltLeft = Key(KeyEvent.KEYCODE_ALT_LEFT)
+ actual val AltRight = Key(KeyEvent.KEYCODE_ALT_RIGHT)
+ actual val ShiftLeft = Key(KeyEvent.KEYCODE_SHIFT_LEFT)
+ actual val ShiftRight = Key(KeyEvent.KEYCODE_SHIFT_RIGHT)
+ actual val Tab = Key(KeyEvent.KEYCODE_TAB)
+ actual val Spacebar = Key(KeyEvent.KEYCODE_SPACE)
+ actual val Symbol = Key(KeyEvent.KEYCODE_SYM)
+ actual val Browser = Key(KeyEvent.KEYCODE_EXPLORER)
+ actual val Envelope = Key(KeyEvent.KEYCODE_ENVELOPE)
+ actual val Enter = Key(KeyEvent.KEYCODE_ENTER)
+ actual val Backspace = Key(KeyEvent.KEYCODE_DEL)
+ actual val Delete = Key(KeyEvent.KEYCODE_FORWARD_DEL)
+ actual val Escape = Key(KeyEvent.KEYCODE_ESCAPE)
+ actual val CtrlLeft = Key(KeyEvent.KEYCODE_CTRL_LEFT)
+ actual val CtrlRight = Key(KeyEvent.KEYCODE_CTRL_RIGHT)
+ actual val CapsLock = Key(KeyEvent.KEYCODE_CAPS_LOCK)
+ actual val ScrollLock = Key(KeyEvent.KEYCODE_SCROLL_LOCK)
+ actual val MetaLeft = Key(KeyEvent.KEYCODE_META_LEFT)
+ actual val MetaRight = Key(KeyEvent.KEYCODE_META_RIGHT)
+ actual val Function = Key(KeyEvent.KEYCODE_FUNCTION)
+ actual val PrintScreen = Key(KeyEvent.KEYCODE_SYSRQ)
+ actual val Break = Key(KeyEvent.KEYCODE_BREAK)
+ actual val MoveHome = Key(KeyEvent.KEYCODE_MOVE_HOME)
+ actual val MoveEnd = Key(KeyEvent.KEYCODE_MOVE_END)
+ actual val Insert = Key(KeyEvent.KEYCODE_INSERT)
+ actual val Cut = Key(KeyEvent.KEYCODE_CUT)
+ actual val Copy = Key(KeyEvent.KEYCODE_COPY)
+ actual val Paste = Key(KeyEvent.KEYCODE_PASTE)
+ actual val Grave = Key(KeyEvent.KEYCODE_GRAVE)
+ actual val LeftBracket = Key(KeyEvent.KEYCODE_LEFT_BRACKET)
+ actual val RightBracket = Key(KeyEvent.KEYCODE_RIGHT_BRACKET)
+ actual val Slash = Key(KeyEvent.KEYCODE_SLASH)
+ actual val Backslash = Key(KeyEvent.KEYCODE_BACKSLASH)
+ actual val Semicolon = Key(KeyEvent.KEYCODE_SEMICOLON)
+ actual val Apostrophe = Key(KeyEvent.KEYCODE_APOSTROPHE)
+ actual val At = Key(KeyEvent.KEYCODE_AT)
+ actual val Number = Key(KeyEvent.KEYCODE_NUM)
+ actual val HeadsetHook = Key(KeyEvent.KEYCODE_HEADSETHOOK)
+ actual val Focus = Key(KeyEvent.KEYCODE_FOCUS)
+ actual val Menu = Key(KeyEvent.KEYCODE_MENU)
+ actual val Notification = Key(KeyEvent.KEYCODE_NOTIFICATION)
+ actual val Search = Key(KeyEvent.KEYCODE_SEARCH)
+ actual val PageUp = Key(KeyEvent.KEYCODE_PAGE_UP)
+ actual val PageDown = Key(KeyEvent.KEYCODE_PAGE_DOWN)
+ actual val PictureSymbols = Key(KeyEvent.KEYCODE_PICTSYMBOLS)
+ actual val SwitchCharset = Key(KeyEvent.KEYCODE_SWITCH_CHARSET)
+ actual val ButtonA = Key(KeyEvent.KEYCODE_BUTTON_A)
+ actual val ButtonB = Key(KeyEvent.KEYCODE_BUTTON_B)
+ actual val ButtonC = Key(KeyEvent.KEYCODE_BUTTON_C)
+ actual val ButtonX = Key(KeyEvent.KEYCODE_BUTTON_X)
+ actual val ButtonY = Key(KeyEvent.KEYCODE_BUTTON_Y)
+ actual val ButtonZ = Key(KeyEvent.KEYCODE_BUTTON_Z)
+ actual val ButtonL1 = Key(KeyEvent.KEYCODE_BUTTON_L1)
+ actual val ButtonR1 = Key(KeyEvent.KEYCODE_BUTTON_R1)
+ actual val ButtonL2 = Key(KeyEvent.KEYCODE_BUTTON_L2)
+ actual val ButtonR2 = Key(KeyEvent.KEYCODE_BUTTON_R2)
+ actual val ButtonThumbLeft = Key(KeyEvent.KEYCODE_BUTTON_THUMBL)
+ actual val ButtonThumbRight = Key(KeyEvent.KEYCODE_BUTTON_THUMBR)
+ actual val ButtonStart = Key(KeyEvent.KEYCODE_BUTTON_START)
+ actual val ButtonSelect = Key(KeyEvent.KEYCODE_BUTTON_SELECT)
+ actual val ButtonMode = Key(KeyEvent.KEYCODE_BUTTON_MODE)
+ actual val Button1 = Key(KeyEvent.KEYCODE_BUTTON_1)
+ actual val Button2 = Key(KeyEvent.KEYCODE_BUTTON_2)
+ actual val Button3 = Key(KeyEvent.KEYCODE_BUTTON_3)
+ actual val Button4 = Key(KeyEvent.KEYCODE_BUTTON_4)
+ actual val Button5 = Key(KeyEvent.KEYCODE_BUTTON_5)
+ actual val Button6 = Key(KeyEvent.KEYCODE_BUTTON_6)
+ actual val Button7 = Key(KeyEvent.KEYCODE_BUTTON_7)
+ actual val Button8 = Key(KeyEvent.KEYCODE_BUTTON_8)
+ actual val Button9 = Key(KeyEvent.KEYCODE_BUTTON_9)
+ actual val Button10 = Key(KeyEvent.KEYCODE_BUTTON_10)
+ actual val Button11 = Key(KeyEvent.KEYCODE_BUTTON_11)
+ actual val Button12 = Key(KeyEvent.KEYCODE_BUTTON_12)
+ actual val Button13 = Key(KeyEvent.KEYCODE_BUTTON_13)
+ actual val Button14 = Key(KeyEvent.KEYCODE_BUTTON_14)
+ actual val Button15 = Key(KeyEvent.KEYCODE_BUTTON_15)
+ actual val Button16 = Key(KeyEvent.KEYCODE_BUTTON_16)
+ actual val Forward = Key(KeyEvent.KEYCODE_FORWARD)
+ actual val F1 = Key(KeyEvent.KEYCODE_F1)
+ actual val F2 = Key(KeyEvent.KEYCODE_F2)
+ actual val F3 = Key(KeyEvent.KEYCODE_F3)
+ actual val F4 = Key(KeyEvent.KEYCODE_F4)
+ actual val F5 = Key(KeyEvent.KEYCODE_F5)
+ actual val F6 = Key(KeyEvent.KEYCODE_F6)
+ actual val F7 = Key(KeyEvent.KEYCODE_F7)
+ actual val F8 = Key(KeyEvent.KEYCODE_F8)
+ actual val F9 = Key(KeyEvent.KEYCODE_F9)
+ actual val F10 = Key(KeyEvent.KEYCODE_F10)
+ actual val F11 = Key(KeyEvent.KEYCODE_F11)
+ actual val F12 = Key(KeyEvent.KEYCODE_F12)
+ actual val NumLock = Key(KeyEvent.KEYCODE_NUM_LOCK)
+ actual val NumPad0 = Key(KeyEvent.KEYCODE_NUMPAD_0)
+ actual val NumPad1 = Key(KeyEvent.KEYCODE_NUMPAD_1)
+ actual val NumPad2 = Key(KeyEvent.KEYCODE_NUMPAD_2)
+ actual val NumPad3 = Key(KeyEvent.KEYCODE_NUMPAD_3)
+ actual val NumPad4 = Key(KeyEvent.KEYCODE_NUMPAD_4)
+ actual val NumPad5 = Key(KeyEvent.KEYCODE_NUMPAD_5)
+ actual val NumPad6 = Key(KeyEvent.KEYCODE_NUMPAD_6)
+ actual val NumPad7 = Key(KeyEvent.KEYCODE_NUMPAD_7)
+ actual val NumPad8 = Key(KeyEvent.KEYCODE_NUMPAD_8)
+ actual val NumPad9 = Key(KeyEvent.KEYCODE_NUMPAD_9)
+ actual val NumPadDivide = Key(KeyEvent.KEYCODE_NUMPAD_DIVIDE)
+ actual val NumPadMultiply = Key(KeyEvent.KEYCODE_NUMPAD_MULTIPLY)
+ actual val NumPadSubtract = Key(KeyEvent.KEYCODE_NUMPAD_SUBTRACT)
+ actual val NumPadAdd = Key(KeyEvent.KEYCODE_NUMPAD_ADD)
+ actual val NumPadDot = Key(KeyEvent.KEYCODE_NUMPAD_DOT)
+ actual val NumPadComma = Key(KeyEvent.KEYCODE_NUMPAD_COMMA)
+ actual val NumPadEnter = Key(KeyEvent.KEYCODE_NUMPAD_ENTER)
+ actual val NumPadEquals = Key(KeyEvent.KEYCODE_NUMPAD_EQUALS)
+ actual val NumPadLeftParenthesis = Key(KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN)
+ actual val NumPadRightParenthesis = Key(KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN)
+ actual val MediaPlay = Key(KeyEvent.KEYCODE_MEDIA_PLAY)
+ actual val MediaPause = Key(KeyEvent.KEYCODE_MEDIA_PAUSE)
+ actual val MediaPlayPause = Key(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)
+ actual val MediaStop = Key(KeyEvent.KEYCODE_MEDIA_STOP)
+ actual val MediaRecord = Key(KeyEvent.KEYCODE_MEDIA_RECORD)
+ actual val MediaNext = Key(KeyEvent.KEYCODE_MEDIA_NEXT)
+ actual val MediaPrevious = Key(KeyEvent.KEYCODE_MEDIA_PREVIOUS)
+ actual val MediaRewind = Key(KeyEvent.KEYCODE_MEDIA_REWIND)
+ actual val MediaFastForward = Key(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD)
+ actual val MediaClose = Key(KeyEvent.KEYCODE_MEDIA_CLOSE)
+ actual val MediaAudioTrack = Key(KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK)
+ actual val MediaEject = Key(KeyEvent.KEYCODE_MEDIA_EJECT)
+ actual val MediaTopMenu = Key(KeyEvent.KEYCODE_MEDIA_TOP_MENU)
+ actual val MediaSkipForward = Key(KeyEvent.KEYCODE_MEDIA_SKIP_FORWARD)
+ actual val MediaSkipBackward = Key(KeyEvent.KEYCODE_MEDIA_SKIP_BACKWARD)
+ actual val MediaStepForward = Key(KeyEvent.KEYCODE_MEDIA_STEP_FORWARD)
+ actual val MediaStepBackward = Key(KeyEvent.KEYCODE_MEDIA_STEP_BACKWARD)
+ actual val MicrophoneMute = Key(KeyEvent.KEYCODE_MUTE)
+ actual val VolumeMute = Key(KeyEvent.KEYCODE_VOLUME_MUTE)
+ actual val Info = Key(KeyEvent.KEYCODE_INFO)
+ actual val ChannelUp = Key(KeyEvent.KEYCODE_CHANNEL_UP)
+ actual val ChannelDown = Key(KeyEvent.KEYCODE_CHANNEL_DOWN)
+ actual val ZoomIn = Key(KeyEvent.KEYCODE_ZOOM_IN)
+ actual val ZoomOut = Key(KeyEvent.KEYCODE_ZOOM_OUT)
+ actual val Tv = Key(KeyEvent.KEYCODE_TV)
+ actual val Window = Key(KeyEvent.KEYCODE_WINDOW)
+ actual val Guide = Key(KeyEvent.KEYCODE_GUIDE)
+ actual val Dvr = Key(KeyEvent.KEYCODE_DVR)
+ actual val Bookmark = Key(KeyEvent.KEYCODE_BOOKMARK)
+ actual val Captions = Key(KeyEvent.KEYCODE_CAPTIONS)
+ actual val Settings = Key(KeyEvent.KEYCODE_SETTINGS)
+ actual val TvPower = Key(KeyEvent.KEYCODE_TV_POWER)
+ actual val TvInput = Key(KeyEvent.KEYCODE_TV_INPUT)
+ actual val SetTopBoxPower = Key(KeyEvent.KEYCODE_STB_POWER)
+ actual val SetTopBoxInput = Key(KeyEvent.KEYCODE_STB_INPUT)
+ actual val AvReceiverPower = Key(KeyEvent.KEYCODE_AVR_POWER)
+ actual val AvReceiverInput = Key(KeyEvent.KEYCODE_AVR_INPUT)
+ actual val ProgramRed = Key(KeyEvent.KEYCODE_PROG_RED)
+ actual val ProgramGreen = Key(KeyEvent.KEYCODE_PROG_GREEN)
+ actual val ProgramYellow = Key(KeyEvent.KEYCODE_PROG_YELLOW)
+ actual val ProgramBlue = Key(KeyEvent.KEYCODE_PROG_BLUE)
+ actual val AppSwitch = Key(KeyEvent.KEYCODE_APP_SWITCH)
+ actual val LanguageSwitch = Key(KeyEvent.KEYCODE_LANGUAGE_SWITCH)
+ actual val MannerMode = Key(KeyEvent.KEYCODE_MANNER_MODE)
+ actual val Toggle2D3D = Key(KeyEvent.KEYCODE_3D_MODE)
+ actual val Contacts = Key(KeyEvent.KEYCODE_CONTACTS)
+ actual val Calendar = Key(KeyEvent.KEYCODE_CALENDAR)
+ actual val Music = Key(KeyEvent.KEYCODE_MUSIC)
+ actual val Calculator = Key(KeyEvent.KEYCODE_CALCULATOR)
+ actual val ZenkakuHankaru = Key(KeyEvent.KEYCODE_ZENKAKU_HANKAKU)
+ actual val Eisu = Key(KeyEvent.KEYCODE_EISU)
+ actual val Muhenkan = Key(KeyEvent.KEYCODE_MUHENKAN)
+ actual val Henkan = Key(KeyEvent.KEYCODE_HENKAN)
+ actual val KatakanaHiragana = Key(KeyEvent.KEYCODE_KATAKANA_HIRAGANA)
+ actual val Yen = Key(KeyEvent.KEYCODE_YEN)
+ actual val Ro = Key(KeyEvent.KEYCODE_RO)
+ actual val Kana = Key(KeyEvent.KEYCODE_KANA)
+ actual val Assist = Key(KeyEvent.KEYCODE_ASSIST)
+ actual val BrightnessDown = Key(KeyEvent.KEYCODE_BRIGHTNESS_DOWN)
+ actual val BrightnessUp = Key(KeyEvent.KEYCODE_BRIGHTNESS_UP)
+ actual val Sleep = Key(KeyEvent.KEYCODE_SLEEP)
+ actual val WakeUp = Key(KeyEvent.KEYCODE_WAKEUP)
+ actual val SoftSleep = Key(KeyEvent.KEYCODE_SOFT_SLEEP)
+ actual val Pairing = Key(KeyEvent.KEYCODE_PAIRING)
+ actual val LastChannel = Key(KeyEvent.KEYCODE_LAST_CHANNEL)
+ actual val TvDataService = Key(KeyEvent.KEYCODE_TV_DATA_SERVICE)
+ actual val VoiceAssist = Key(KeyEvent.KEYCODE_VOICE_ASSIST)
+ actual val TvRadioService = Key(KeyEvent.KEYCODE_TV_RADIO_SERVICE)
+ actual val TvTeletext = Key(KeyEvent.KEYCODE_TV_TELETEXT)
+ actual val TvNumberEntry = Key(KeyEvent.KEYCODE_TV_NUMBER_ENTRY)
+ actual val TvTerrestrialAnalog = Key(KeyEvent.KEYCODE_TV_TERRESTRIAL_ANALOG)
+ actual val TvTerrestrialDigital = Key(KeyEvent.KEYCODE_TV_TERRESTRIAL_DIGITAL)
+ actual val TvSatellite = Key(KeyEvent.KEYCODE_TV_SATELLITE)
+ actual val TvSatelliteBs = Key(KeyEvent.KEYCODE_TV_SATELLITE_BS)
+ actual val TvSatelliteCs = Key(KeyEvent.KEYCODE_TV_SATELLITE_CS)
+ actual val TvSatelliteService = Key(KeyEvent.KEYCODE_TV_SATELLITE_SERVICE)
+ actual val TvNetwork = Key(KeyEvent.KEYCODE_TV_NETWORK)
+ actual val TvAntennaCable = Key(KeyEvent.KEYCODE_TV_ANTENNA_CABLE)
+ actual val TvInputHdmi1 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_1)
+ actual val TvInputHdmi2 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_2)
+ actual val TvInputHdmi3 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_3)
+ actual val TvInputHdmi4 = Key(KeyEvent.KEYCODE_TV_INPUT_HDMI_4)
+ actual val TvInputComposite1 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_1)
+ actual val TvInputComposite2 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPOSITE_2)
+ actual val TvInputComponent1 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPONENT_1)
+ actual val TvInputComponent2 = Key(KeyEvent.KEYCODE_TV_INPUT_COMPONENT_2)
+ actual val TvInputVga1 = Key(KeyEvent.KEYCODE_TV_INPUT_VGA_1)
+ actual val TvAudioDescription = Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION)
+ actual val TvAudioDescriptionMixingVolumeUp =
+ Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP)
+ actual val TvAudioDescriptionMixingVolumeDown =
+ Key(KeyEvent.KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN)
+ actual val TvZoomMode = Key(KeyEvent.KEYCODE_TV_ZOOM_MODE)
+ actual val TvContentsMenu = Key(KeyEvent.KEYCODE_TV_CONTENTS_MENU)
+ actual val TvMediaContextMenu = Key(KeyEvent.KEYCODE_TV_MEDIA_CONTEXT_MENU)
+ actual val TvTimerProgramming = Key(KeyEvent.KEYCODE_TV_TIMER_PROGRAMMING)
+ actual val StemPrimary = Key(KeyEvent.KEYCODE_STEM_PRIMARY)
+ actual val Stem1 = Key(KeyEvent.KEYCODE_STEM_1)
+ actual val Stem2 = Key(KeyEvent.KEYCODE_STEM_2)
+ actual val Stem3 = Key(KeyEvent.KEYCODE_STEM_3)
+ actual val AllApps = Key(KeyEvent.KEYCODE_ALL_APPS)
+ actual val Refresh = Key(KeyEvent.KEYCODE_REFRESH)
+ actual val ThumbsUp = Key(KeyEvent.KEYCODE_THUMBS_UP)
+ actual val ThumbsDown = Key(KeyEvent.KEYCODE_THUMBS_DOWN)
+ actual val ProfileSwitch = Key(KeyEvent.KEYCODE_PROFILE_SWITCH)
}
- override fun toString(): String {
+ actual override fun toString(): String {
return "Key code: $keyCode"
}
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/Selection.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/Selection.kt
index 683b75c..860b854 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/Selection.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/Selection.kt
@@ -18,7 +18,7 @@
import androidx.compose.Immutable
import androidx.ui.text.TextRange
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
/**
* Information about the current Selection.
@@ -53,7 +53,7 @@
/**
* Text direction of the character in selection edge.
*/
- val direction: TextDirection,
+ val direction: ResolvedTextDirection,
/**
* Character offset for the selection edge. This offset is within individual child text
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionHandles.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionHandles.kt
index 1bc3d9a..d61fd6a 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionHandles.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionHandles.kt
@@ -27,7 +27,7 @@
import androidx.ui.graphics.Path
import androidx.ui.graphics.drawscope.DrawScope
import androidx.ui.text.InternalTextApi
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Density
import androidx.ui.unit.Dp
import androidx.ui.unit.dp
@@ -108,7 +108,7 @@
height: Dp,
onCanvas: DrawScope.() -> Unit
) {
- Layout(emptyContent(), modifier.drawBehind(onCanvas)) { _, _, _ ->
+ Layout(emptyContent(), modifier.drawBehind(onCanvas)) { _, _ ->
// take width and height space of the screen and allow draw modifier to draw inside of it
layout(width.toIntPx(), height.toIntPx()) {
// this layout has no children, only draw modifier.
@@ -124,7 +124,7 @@
fun SelectionHandle(
modifier: Modifier,
isStartHandle: Boolean,
- directions: Pair<TextDirection, TextDirection>,
+ directions: Pair<ResolvedTextDirection, ResolvedTextDirection>,
handlesCrossed: Boolean
) {
SelectionHandleLayout(
@@ -137,7 +137,7 @@
*/
internal fun isLeft(
isStartHandle: Boolean,
- directions: Pair<TextDirection, TextDirection>,
+ directions: Pair<ResolvedTextDirection, ResolvedTextDirection>,
handlesCrossed: Boolean
): Boolean {
if (isStartHandle) {
@@ -157,7 +157,10 @@
* the right. However, in Rtl context or when handles are crossed, the start handle should point to
* the right, and the end handle should point to left.
*/
-internal fun isHandleLtrDirection(direction: TextDirection, areHandlesCrossed: Boolean): Boolean {
- return direction == TextDirection.Ltr && !areHandlesCrossed ||
- direction == TextDirection.Rtl && areHandlesCrossed
+internal fun isHandleLtrDirection(
+ direction: ResolvedTextDirection,
+ areHandlesCrossed: Boolean
+): Boolean {
+ return direction == ResolvedTextDirection.Ltr && !areHandlesCrossed ||
+ direction == ResolvedTextDirection.Rtl && areHandlesCrossed
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionLayout.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionLayout.kt
index 69b9aad..57d42b2 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionLayout.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionLayout.kt
@@ -28,7 +28,7 @@
import androidx.ui.core.hasFixedWidth
import androidx.ui.geometry.Offset
import androidx.ui.text.InternalTextApi
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Dp
import androidx.ui.unit.IntOffset
import androidx.ui.unit.IntSize
@@ -44,7 +44,7 @@
startHandlePosition: Offset?,
endHandlePosition: Offset?,
isStartHandle: Boolean,
- directions: Pair<TextDirection, TextDirection>,
+ directions: Pair<ResolvedTextDirection, ResolvedTextDirection>,
handlesCrossed: Boolean,
handle: @Composable () -> Unit
) {
@@ -74,7 +74,7 @@
@InternalTextApi
@Composable
fun SelectionLayout(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(modifier = modifier, children = children) { measurables, constraints, _ ->
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
val placeables = measurables.map { measurable ->
measurable.measure(constraints)
}
@@ -105,7 +105,7 @@
height: Dp? = null,
children: @Composable () -> Unit
) {
- Layout(children, modifier) { measurables, incomingConstraints, _ ->
+ Layout(children, modifier) { measurables, incomingConstraints ->
val containerConstraints = Constraints()
.copy(
width?.toIntPx() ?: 0,
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionManager.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionManager.kt
index e0fb3dd..c2588b0 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionManager.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/selection/SelectionManager.kt
@@ -17,10 +17,10 @@
package androidx.ui.core.selection
import androidx.compose.State
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.setValue
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.LayoutCoordinates
import androidx.ui.core.clipboard.ClipboardManager
import androidx.ui.core.gesture.DragObserver
@@ -109,7 +109,10 @@
* It is a [State] so reading it during the composition will cause recomposition every time
* the position has been changed.
*/
- var startHandlePosition by mutableStateOf<Offset?>(null, areEquivalent = StructurallyEqual)
+ var startHandlePosition by mutableStateOf<Offset?>(
+ null,
+ policy = structuralEqualityPolicy()
+ )
private set
/**
@@ -118,7 +121,10 @@
* It is a [State] so reading it during the composition will cause recomposition every time
* the position has been changed.
*/
- var endHandlePosition by mutableStateOf<Offset?>(null, areEquivalent = StructurallyEqual)
+ var endHandlePosition by mutableStateOf<Offset?>(
+ null,
+ policy = structuralEqualityPolicy()
+ )
private set
init {
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
index dc47d1d..2069190 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
@@ -40,6 +40,15 @@
return config
}
+ override fun detach() {
+ super.detach()
+ layoutNode.owner?.onSemanticsChange()
+ }
+
+ override fun onModifierChanged() {
+ layoutNode.owner?.onSemanticsChange()
+ }
+
override fun toString(): String {
return "${super.toString()} localConfig: ${modifier.semanticsConfiguration}"
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/input/TextInputServiceAndroid.kt b/ui/ui-core/src/androidMain/kotlin/androidx/ui/input/TextInputServiceAndroid.kt
index 760e565..8ce0ef6b 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/input/TextInputServiceAndroid.kt
+++ b/ui/ui-core/src/androidMain/kotlin/androidx/ui/input/TextInputServiceAndroid.kt
@@ -19,6 +19,7 @@
import android.content.Context
import android.text.InputType
import android.view.View
+import android.view.ViewTreeObserver
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
import android.view.inputmethod.InputMethodManager
@@ -45,11 +46,31 @@
private var imeAction = ImeAction.Unspecified
private var ic: RecordingInputConnection? = null
+ private var focusedRect: android.graphics.Rect? = null
+
/**
* The editable buffer used for BaseInputConnection.
*/
private lateinit var imm: InputMethodManager
+ private val layoutListener = ViewTreeObserver.OnGlobalLayoutListener {
+ // focusedRect is null if there is not ongoing text input session. So safe to request
+ // latest focused rectangle whenever global layout has changed.
+ focusedRect?.let { view.requestRectangleOnScreen(it) }
+ }
+
+ init {
+ view.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
+ override fun onViewDetachedFromWindow(v: View?) {
+ v?.rootView?.viewTreeObserver?.removeOnGlobalLayoutListener(layoutListener)
+ }
+
+ override fun onViewAttachedToWindow(v: View?) {
+ v?.rootView?.viewTreeObserver?.addOnGlobalLayoutListener(layoutListener)
+ }
+ })
+ }
+
/**
* Creates new input connection.
*/
@@ -104,6 +125,7 @@
editorHasFocus = false
onEditCommand = {}
onImeActionPerformed = {}
+ focusedRect = null
imm.restartInput(view)
editorHasFocus = false
@@ -123,11 +145,22 @@
}
override fun notifyFocusedRect(rect: Rect) {
- view.requestRectangleOnScreen(android.graphics.Rect(
+ focusedRect = android.graphics.Rect(
rect.left.roundToInt(),
rect.top.roundToInt(),
rect.right.roundToInt(),
- rect.bottom.roundToInt()))
+ rect.bottom.roundToInt()
+ )
+
+ // Requesting rectangle too early after obtaining focus may bring view into wrong place
+ // probably due to transient IME inset change. We don't know the correct timing of calling
+ // requestRectangleOnScreen API, so try to call this API only after the IME is ready to
+ // use, i.e. InputConnection has created.
+ // Even if we miss all the timing of requesting rectangle during initial text field focus,
+ // focused rectangle will be requested when software keyboard has shown.
+ if (ic == null) {
+ view.requestRectangleOnScreen(focusedRect)
+ }
}
/**
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Ambients.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Ambients.kt
similarity index 72%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Ambients.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Ambients.kt
index bc7fc60..bc0dd22 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/Ambients.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Ambients.kt
@@ -17,11 +17,7 @@
package androidx.ui.core
import androidx.animation.AnimationClockObservable
-import androidx.animation.rootAnimationClockFactory
-import androidx.compose.Composable
-import androidx.compose.Providers
import androidx.compose.ambientOf
-import androidx.compose.remember
import androidx.compose.staticAmbientOf
import androidx.ui.autofill.Autofill
import androidx.ui.autofill.AutofillTree
@@ -30,7 +26,6 @@
import androidx.ui.core.texttoolbar.TextToolbar
import androidx.ui.input.TextInputService
import androidx.ui.platform.UriHandler
-import androidx.ui.savedinstancestate.UiSavedStateRegistryAmbient
import androidx.ui.text.font.Font
import androidx.ui.unit.Density
import kotlin.coroutines.CoroutineContext
@@ -100,32 +95,4 @@
/**
* The ambient to provide functionality related to URL, e.g. open URI.
*/
-val UriHandlerAmbient = staticAmbientOf<UriHandler>()
-
-@Composable
-@OptIn(androidx.animation.InternalAnimationApi::class)
-internal fun ProvideCommonAmbients(
- owner: Owner,
- uriHandler: UriHandler,
- coroutineContext: CoroutineContext,
- content: @Composable () -> Unit
-) {
- val rootAnimationClock = remember { rootAnimationClockFactory() }
-
- Providers(
- AnimationClockAmbient provides rootAnimationClock,
- AutofillAmbient provides owner.autofill,
- AutofillTreeAmbient provides owner.autofillTree,
- ClipboardManagerAmbient provides owner.clipboardManager,
- @Suppress("DEPRECATION")
- CoroutineContextAmbient provides coroutineContext,
- DensityAmbient provides owner.density,
- FontLoaderAmbient provides owner.fontLoader,
- HapticFeedBackAmbient provides owner.hapticFeedBack,
- TextInputServiceAmbient provides owner.textInputService,
- TextToolbarAmbient provides owner.textToolbar,
- UiSavedStateRegistryAmbient provides owner.savedStateRegistry,
- UriHandlerAmbient provides uriHandler,
- children = content
- )
-}
+val UriHandlerAmbient = staticAmbientOf<UriHandler>()
\ No newline at end of file
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/InternalCoreApi.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/InternalCoreApi.kt
new file mode 100644
index 0000000..fe138b6
--- /dev/null
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/InternalCoreApi.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright 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 androidx.ui.core
+
+@RequiresOptIn(message = "This API is internal to library.")
+@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
+ AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
+annotation class InternalCoreApi
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/clipboard/ClipboardManager.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/clipboard/ClipboardManager.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/clipboard/ClipboardManager.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/clipboard/ClipboardManager.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedback.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedback.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedback.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedback.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedbackType.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedbackType.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedbackType.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/hapticfeedback/HapticFeedbackType.kt
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/keyinput/Key.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/keyinput/Key.kt
new file mode 100644
index 0000000..cf4d711
--- /dev/null
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/keyinput/Key.kt
@@ -0,0 +1,1408 @@
+/*
+ * Copyright 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 androidx.ui.core.keyinput
+
+/**
+ * Represents keys on a keyboard.
+ *
+ * @param keyCode an integer code representing the key pressed.
+ */
+expect inline class Key(val keyCode: Int) {
+ companion object {
+ /** Unknown key. */
+ val Unknown: Key
+
+ /**
+ * Soft Left key.
+ *
+ * Usually situated below the display on phones and used as a multi-function
+ * feature key for selecting a software defined function shown on the bottom left
+ * of the display.
+ */
+ val SoftLeft: Key
+
+ /**
+ * Soft Right key.
+ *
+ * Usually situated below the display on phones and used as a multi-function
+ * feature key for selecting a software defined function shown on the bottom right
+ * of the display.
+ */
+ val SoftRight: Key
+
+ /**
+ * Home key.
+ *
+ * This key is handled by the framework and is never delivered to applications.
+ */
+ val Home: Key
+
+ /** Back key. */
+ val Back: Key
+
+ /** Help key. */
+ val Help: Key
+
+ /**
+ * Navigate to previous key.
+ *
+ * Goes backward by one item in an ordered collection of items.
+ */
+ val NavigatePrevious: Key
+
+ /**
+ * Navigate to next key.
+ *
+ * Advances to the next item in an ordered collection of items.
+ */
+ val NavigateNext: Key
+
+ /**
+ * Navigate in key.
+ *
+ * Activates the item that currently has focus or expands to the next level of a navigation
+ * hierarchy.
+ */
+ val NavigateIn: Key
+
+ /**
+ * Navigate out key.
+ *
+ * Backs out one level of a navigation hierarchy or collapses the item that currently has
+ * focus.
+ */
+ val NavigateOut: Key
+
+ /** Consumed by the system for navigation up. */
+ val SystemNavigationUp: Key
+
+ /** Consumed by the system for navigation down. */
+ val SystemNavigationDown: Key
+
+ /** Consumed by the system for navigation left. */
+ val SystemNavigationLeft: Key
+
+ /** Consumed by the system for navigation right. */
+ val SystemNavigationRight: Key
+
+ /** Call key. */
+ val Call: Key
+
+ /** End Call key. */
+ val EndCall: Key
+
+ /**
+ * Directional Pad Up key.
+ *
+ * May also be synthesized from trackball motions.
+ */
+ val DPadUp: Key
+
+ /**
+ * Directional Pad Down key.
+ *
+ * May also be synthesized from trackball motions.
+ */
+ val DPadDown: Key
+
+ /**
+ * Directional Pad Left key.
+ *
+ * May also be synthesized from trackball motions.
+ */
+ val DPadLeft: Key
+
+ /**
+ * Directional Pad Right key.
+ *
+ * May also be synthesized from trackball motions.
+ */
+ val DPadRight: Key
+
+ /**
+ * Directional Pad Center key.
+ *
+ * May also be synthesized from trackball motions.
+ */
+ val DPadCenter: Key
+
+ /** Directional Pad Up-Left. */
+ val DPadUpLeft: Key
+
+ /** Directional Pad Down-Left. */
+ val DPadDownLeft: Key
+
+ /** Directional Pad Up-Right. */
+ val DPadUpRight: Key
+
+ /** Directional Pad Down-Right. */
+ val DPadDownRight: Key
+
+ /**
+ * Volume Up key.
+ *
+ * Adjusts the speaker volume up.
+ */
+ val VolumeUp: Key
+
+ /**
+ * Volume Down key.
+ *
+ * Adjusts the speaker volume down.
+ */
+ val VolumeDown: Key
+
+ /** Power key. */
+ val Power: Key
+
+ /**
+ * Camera key.
+ *
+ * Used to launch a camera application or take pictures.
+ */
+ val Camera: Key
+
+ /** Clear key. */
+ val Clear: Key
+
+ /** '0' key. */
+ val Number0: Key
+
+ /** '1' key. */
+ val Number1: Key
+
+ /** '2' key. */
+ val Number2: Key
+
+ /** '3' key. */
+ val Number3: Key
+
+ /** '4' key. */
+ val Number4: Key
+
+ /** '5' key. */
+ val Number5: Key
+
+ /** '6' key. */
+ val Number6: Key
+
+ /** '7' key. */
+ val Number7: Key
+
+ /** '8' key. */
+ val Number8: Key
+
+ /** '9' key. */
+ val Number9: Key
+
+ /** '11' key. */
+ val Number11: Key
+
+ /** '12' key. */
+ val Number12: Key
+
+ /** '+' key. */
+ val Plus: Key
+
+ /** '-'. */
+ val Minus: Key
+
+ /** '*' key. */
+ val Multiply: Key
+
+ /** '=' key. */
+ val Equals: Key
+
+ /** '#' key. */
+ val Pound: Key
+
+ /** 'A' key. */
+ val A: Key
+
+ /** 'B' key. */
+ val B: Key
+
+ /** 'C' key. */
+ val C: Key
+
+ /** 'D' key. */
+ val D: Key
+
+ /** 'E' key. */
+ val E: Key
+
+ /** 'F' key. */
+ val F: Key
+
+ /** 'G' key. */
+ val G: Key
+
+ /** 'H' key. */
+ val H: Key
+
+ /** 'I' key. */
+ val I: Key
+
+ /** 'J' key. */
+ val J: Key
+
+ /** 'K' key. */
+ val K: Key
+
+ /** 'L' key. */
+ val L: Key
+
+ /** 'M' key. */
+ val M: Key
+
+ /** 'N' key. */
+ val N: Key
+
+ /** 'O' key. */
+ val O: Key
+
+ /** 'P' key. */
+ val P: Key
+
+ /** 'Q' key. */
+ val Q: Key
+
+ /** 'R' key. */
+ val R: Key
+
+ /** 'S' key. */
+ val S: Key
+
+ /** 'T' key. */
+ val T: Key
+
+ /** 'U' key. */
+ val U: Key
+
+ /** 'V' key. */
+ val V: Key
+
+ /** 'W' key. */
+ val W: Key
+
+ /** 'X' key. */
+ val X: Key
+
+ /** 'Y' key. */
+ val Y: Key
+
+ /** 'Z' key. */
+ val Z: Key
+
+ /** ',' key. */
+ val Comma: Key
+
+ /** '.' key. */
+ val Period: Key
+
+ /** Left Alt modifier key. */
+ val AltLeft: Key
+
+ /** Right Alt modifier key. */
+ val AltRight: Key
+
+ /** Left Shift modifier key. */
+ val ShiftLeft: Key
+
+ /** Right Shift modifier key. */
+ val ShiftRight: Key
+
+ /** Tab key. */
+ val Tab: Key
+
+ /** Space key. */
+ val Spacebar: Key
+
+ /**
+ * Symbol modifier key.
+ *
+ * Used to enter alternate symbols.
+ */
+ val Symbol: Key
+
+ /**
+ * Browser special function key.
+ *
+ * Used to launch a browser application.
+ */
+ val Browser: Key
+
+ /**
+ * Envelope special function key.
+ *
+ * Used to launch a mail application.
+ */
+ val Envelope: Key
+
+ /** Enter key. */
+ val Enter: Key
+
+ /**
+ * Backspace key.
+ *
+ * Deletes characters before the insertion point, unlike [Delete].
+ */
+ val Backspace: Key
+
+ /**
+ * Delete key.
+ *
+ * Deletes characters ahead of the insertion point, unlike [Backspace].
+ */
+ val Delete: Key
+
+ /** Escape key. */
+ val Escape: Key
+
+ /** Left Control modifier key. */
+ val CtrlLeft: Key
+
+ /** Right Control modifier key. */
+ val CtrlRight: Key
+
+ /** Caps Lock key. */
+ val CapsLock: Key
+
+ /** Scroll Lock key. */
+ val ScrollLock: Key
+
+ /** Left Meta modifier key. */
+ val MetaLeft: Key
+
+ /** Right Meta modifier key. */
+ val MetaRight: Key
+
+ /** Function modifier key. */
+ val Function: Key
+
+ /** System Request / Print Screen key. */
+ val PrintScreen: Key
+
+ /** Break / Pause key. */
+ val Break: Key
+
+ /**
+ * Home Movement key.
+ *
+ * Used for scrolling or moving the cursor around to the start of a line
+ * or to the top of a list.
+ */
+ val MoveHome: Key
+
+ /**
+ * End Movement key.
+ *
+ * Used for scrolling or moving the cursor around to the end of a line
+ * or to the bottom of a list.
+ */
+ val MoveEnd: Key
+
+ /**
+ * Insert key.
+ *
+ * Toggles insert / overwrite edit mode.
+ */
+ val Insert: Key
+
+ /** Cut key. */
+ val Cut: Key
+
+ /** Copy key. */
+ val Copy: Key
+
+ /** Paste key. */
+ val Paste: Key
+
+ /** '`' (backtick) key. */
+ val Grave: Key
+
+ /** '[' key. */
+ val LeftBracket: Key
+
+ /** ']' key. */
+ val RightBracket: Key
+
+ /** '/' key. */
+ val Slash: Key
+
+ /** '\' key. */
+ val Backslash: Key
+
+ /** ';' key. */
+ val Semicolon: Key
+
+ /** ''' (apostrophe) key. */
+ val Apostrophe: Key
+
+ /** '@' key. */
+ val At: Key
+
+ /**
+ * Number modifier key.
+ *
+ * Used to enter numeric symbols.
+ * This key is not Num Lock; it is more like [AltLeft].
+ */
+ val Number: Key
+
+ /**
+ * Headset Hook key.
+ *
+ * Used to hang up calls and stop media.
+ */
+ val HeadsetHook: Key
+
+ /**
+ * Camera Focus key.
+ *
+ * Used to focus the camera.
+ */
+ val Focus: Key
+
+ /** Menu key. */
+ val Menu: Key
+
+ /** Notification key. */
+ val Notification: Key
+
+ /** Search key. */
+ val Search: Key
+
+ /** Page Up key. */
+ val PageUp: Key
+
+ /** Page Down key. */
+ val PageDown: Key
+
+ /**
+ * Picture Symbols modifier key.
+ *
+ * Used to switch symbol sets (Emoji, Kao-moji).
+ */
+ val PictureSymbols: Key
+
+ /**
+ * Switch Charset modifier key.
+ *
+ * Used to switch character sets (Kanji, Katakana).
+ */
+ val SwitchCharset: Key
+
+ /**
+ * A Button key.
+ *
+ * On a game controller, the A button should be either the button labeled A
+ * or the first button on the bottom row of controller buttons.
+ */
+ val ButtonA: Key
+
+ /**
+ * B Button key.
+ *
+ * On a game controller, the B button should be either the button labeled B
+ * or the second button on the bottom row of controller buttons.
+ */
+ val ButtonB: Key
+
+ /**
+ * C Button key.
+ *
+ * On a game controller, the C button should be either the button labeled C
+ * or the third button on the bottom row of controller buttons.
+ */
+ val ButtonC: Key
+
+ /**
+ * X Button key.
+ *
+ * On a game controller, the X button should be either the button labeled X
+ * or the first button on the upper row of controller buttons.
+ */
+ val ButtonX: Key
+
+ /**
+ * Y Button key.
+ *
+ * On a game controller, the Y button should be either the button labeled Y
+ * or the second button on the upper row of controller buttons.
+ */
+ val ButtonY: Key
+
+ /**
+ * Z Button key.
+ *
+ * On a game controller, the Z button should be either the button labeled Z
+ * or the third button on the upper row of controller buttons.
+ */
+ val ButtonZ: Key
+
+ /**
+ * L1 Button key.
+ *
+ * On a game controller, the L1 button should be either the button labeled L1 (or L)
+ * or the top left trigger button.
+ */
+ val ButtonL1: Key
+
+ /**
+ * R1 Button key.
+ *
+ * On a game controller, the R1 button should be either the button labeled R1 (or R)
+ * or the top right trigger button.
+ */
+ val ButtonR1: Key
+
+ /**
+ * L2 Button key.
+ *
+ * On a game controller, the L2 button should be either the button labeled L2
+ * or the bottom left trigger button.
+ */
+ val ButtonL2: Key
+
+ /**
+ * R2 Button key.
+ *
+ * On a game controller, the R2 button should be either the button labeled R2
+ * or the bottom right trigger button.
+ */
+ val ButtonR2: Key
+
+ /**
+ * Left Thumb Button key.
+ *
+ * On a game controller, the left thumb button indicates that the left (or only)
+ * joystick is pressed.
+ */
+ val ButtonThumbLeft: Key
+
+ /**
+ * Right Thumb Button key.
+ *
+ * On a game controller, the right thumb button indicates that the right
+ * joystick is pressed.
+ */
+ val ButtonThumbRight: Key
+
+ /**
+ * Start Button key.
+ *
+ * On a game controller, the button labeled Start.
+ */
+ val ButtonStart: Key
+
+ /**
+ * Select Button key.
+ *
+ * On a game controller, the button labeled Select.
+ */
+ val ButtonSelect: Key
+
+ /**
+ * Mode Button key.
+ *
+ * On a game controller, the button labeled Mode.
+ */
+ val ButtonMode: Key
+
+ /** Generic Game Pad Button #1. */
+ val Button1: Key
+
+ /** Generic Game Pad Button #2. */
+ val Button2: Key
+
+ /** Generic Game Pad Button #3. */
+ val Button3: Key
+
+ /** Generic Game Pad Button #4. */
+ val Button4: Key
+
+ /** Generic Game Pad Button #5. */
+ val Button5: Key
+
+ /** Generic Game Pad Button #6. */
+ val Button6: Key
+
+ /** Generic Game Pad Button #7. */
+ val Button7: Key
+
+ /** Generic Game Pad Button #8. */
+ val Button8: Key
+
+ /** Generic Game Pad Button #9. */
+ val Button9: Key
+
+ /** Generic Game Pad Button #10. */
+ val Button10: Key
+
+ /** Generic Game Pad Button #11. */
+ val Button11: Key
+
+ /** Generic Game Pad Button #12. */
+ val Button12: Key
+
+ /** Generic Game Pad Button #13. */
+ val Button13: Key
+
+ /** Generic Game Pad Button #14. */
+ val Button14: Key
+
+ /** Generic Game Pad Button #15. */
+ val Button15: Key
+
+ /** Generic Game Pad Button #16. */
+ val Button16: Key
+
+ /**
+ * Forward key.
+ *
+ * Navigates forward in the history stack. Complement of [Back].
+ */
+ val Forward: Key
+
+ /** F1 key. */
+ val F1: Key
+
+ /** F2 key. */
+ val F2: Key
+
+ /** F3 key. */
+ val F3: Key
+
+ /** F4 key. */
+ val F4: Key
+
+ /** F5 key. */
+ val F5: Key
+
+ /** F6 key. */
+ val F6: Key
+
+ /** F7 key. */
+ val F7: Key
+
+ /** F8 key. */
+ val F8: Key
+
+ /** F9 key. */
+ val F9: Key
+
+ /** F10 key. */
+ val F10: Key
+
+ /** F11 key. */
+ val F11: Key
+
+ /** F12 key. */
+ val F12: Key
+
+ /**
+ * Num Lock key.
+ *
+ * This is the Num Lock key; it is different from [Number].
+ * This key alters the behavior of other keys on the numeric keypad.
+ */
+ val NumLock: Key
+
+ /** Numeric keypad '0' key. */
+ val NumPad0: Key
+
+ /** Numeric keypad '1' key. */
+ val NumPad1: Key
+
+ /** Numeric keypad '2' key. */
+ val NumPad2: Key
+
+ /** Numeric keypad '3' key. */
+ val NumPad3: Key
+
+ /** Numeric keypad '4' key. */
+ val NumPad4: Key
+
+ /** Numeric keypad '5' key. */
+ val NumPad5: Key
+
+ /** Numeric keypad '6' key. */
+ val NumPad6: Key
+
+ /** Numeric keypad '7' key. */
+ val NumPad7: Key
+
+ /** Numeric keypad '8' key. */
+ val NumPad8: Key
+
+ /** Numeric keypad '9' key. */
+ val NumPad9: Key
+
+ /** Numeric keypad '/' key (for division). */
+ val NumPadDivide: Key
+
+ /** Numeric keypad '*' key (for multiplication). */
+ val NumPadMultiply: Key
+
+ /** Numeric keypad '-' key (for subtraction). */
+ val NumPadSubtract: Key
+
+ /** Numeric keypad '+' key (for addition). */
+ val NumPadAdd: Key
+
+ /** Numeric keypad '.' key (for decimals or digit grouping). */
+ val NumPadDot: Key
+
+ /** Numeric keypad ',' key (for decimals or digit grouping). */
+ val NumPadComma: Key
+
+ /** Numeric keypad Enter key. */
+ val NumPadEnter: Key
+
+ /** Numeric keypad '=' key. */
+ val NumPadEquals: Key
+
+ /** Numeric keypad '(' key. */
+ val NumPadLeftParenthesis: Key
+
+ /** Numeric keypad ')' key. */
+ val NumPadRightParenthesis: Key
+
+ /** Play media key. */
+ val MediaPlay: Key
+
+ /** Pause media key. */
+ val MediaPause: Key
+
+ /** Play/Pause media key. */
+ val MediaPlayPause: Key
+
+ /** Stop media key. */
+ val MediaStop: Key
+
+ /** Record media key. */
+ val MediaRecord: Key
+
+ /** Play Next media key. */
+ val MediaNext: Key
+
+ /** Play Previous media key. */
+ val MediaPrevious: Key
+
+ /** Rewind media key. */
+ val MediaRewind: Key
+
+ /** Fast Forward media key. */
+ val MediaFastForward: Key
+
+ /**
+ * Close media key.
+ *
+ * May be used to close a CD tray, for example.
+ */
+ val MediaClose: Key
+
+ /**
+ * Audio Track key.
+ *
+ * Switches the audio tracks.
+ */
+ val MediaAudioTrack: Key
+
+ /**
+ * Eject media key.
+ *
+ * May be used to eject a CD tray, for example.
+ */
+ val MediaEject: Key
+
+ /**
+ * Media Top Menu key.
+ *
+ * Goes to the top of media menu.
+ */
+ val MediaTopMenu: Key
+
+ /** Skip forward media key. */
+ val MediaSkipForward: Key
+
+ /** Skip backward media key. */
+ val MediaSkipBackward: Key
+
+ /**
+ * Step forward media key.
+ *
+ * Steps media forward, one frame at a time.
+ */
+ val MediaStepForward: Key
+ /**
+ * Step backward media key.
+ *
+ * Steps media backward, one frame at a time.
+ */
+ val MediaStepBackward: Key
+
+ /**
+ * Mute key.
+ *
+ * Mutes the microphone, unlike [VolumeMute].
+ */
+ val MicrophoneMute: Key
+
+ /**
+ * Volume Mute key.
+ *
+ * Mutes the speaker, unlike [MicrophoneMute].
+ *
+ * This key should normally be implemented as a toggle such that the first press
+ * mutes the speaker and the second press restores the original volume.
+ */
+ val VolumeMute: Key
+
+ /**
+ * Info key.
+ *
+ * Common on TV remotes to show additional information related to what is
+ * currently being viewed.
+ */
+ val Info: Key
+
+ /**
+ * Channel up key.
+ *
+ * On TV remotes, increments the television channel.
+ */
+ val ChannelUp: Key
+
+ /**
+ * Channel down key.
+ *
+ * On TV remotes, decrements the television channel.
+ */
+ val ChannelDown: Key
+
+ /** Zoom in key. */
+ val ZoomIn: Key
+
+ /** Zoom out key. */
+ val ZoomOut: Key
+
+ /**
+ * TV key.
+ *
+ * On TV remotes, switches to viewing live TV.
+ */
+ val Tv: Key
+
+ /**
+ * Window key.
+ *
+ * On TV remotes, toggles picture-in-picture mode or other windowing functions.
+ * On Android Wear devices, triggers a display offset.
+ */
+ val Window: Key
+
+ /**
+ * Guide key.
+ *
+ * On TV remotes, shows a programming guide.
+ */
+ val Guide: Key
+
+ /**
+ * DVR key.
+ *
+ * On some TV remotes, switches to a DVR mode for recorded shows.
+ */
+ val Dvr: Key
+
+ /**
+ * Bookmark key.
+ *
+ * On some TV remotes, bookmarks content or web pages.
+ */
+ val Bookmark: Key
+
+ /**
+ * Toggle captions key.
+ *
+ * Switches the mode for closed-captioning text, for example during television shows.
+ */
+ val Captions: Key
+
+ /**
+ * Settings key.
+ *
+ * Starts the system settings activity.
+ */
+ val Settings: Key
+
+ /**
+ * TV power key.
+ *
+ * On TV remotes, toggles the power on a television screen.
+ */
+ val TvPower: Key
+
+ /**
+ * TV input key.
+ *
+ * On TV remotes, switches the input on a television screen.
+ */
+ val TvInput: Key
+
+ /**
+ * Set-top-box power key.
+ *
+ * On TV remotes, toggles the power on an external Set-top-box.
+ */
+ val SetTopBoxPower: Key
+
+ /**
+ * Set-top-box input key.
+ *
+ * On TV remotes, switches the input mode on an external Set-top-box.
+ */
+ val SetTopBoxInput: Key
+
+ /**
+ * A/V Receiver power key.
+ *
+ * On TV remotes, toggles the power on an external A/V Receiver.
+ */
+ val AvReceiverPower: Key
+
+ /**
+ * A/V Receiver input key.
+ *
+ * On TV remotes, switches the input mode on an external A/V Receiver.
+ */
+ val AvReceiverInput: Key
+
+ /**
+ * Red "programmable" key.
+ *
+ * On TV remotes, acts as a contextual/programmable key.
+ */
+ val ProgramRed: Key
+
+ /**
+ * Green "programmable" key.
+ *
+ * On TV remotes, acts as a contextual/programmable key.
+ */
+ val ProgramGreen: Key
+
+ /**
+ * Yellow "programmable" key.
+ *
+ * On TV remotes, acts as a contextual/programmable key.
+ */
+ val ProgramYellow: Key
+
+ /**
+ * Blue "programmable" key.
+ *
+ * On TV remotes, acts as a contextual/programmable key.
+ */
+ val ProgramBlue: Key
+
+ /**
+ * App switch key.
+ *
+ * Should bring up the application switcher dialog.
+ */
+ val AppSwitch: Key
+
+ /**
+ * Language Switch key.
+ *
+ * Toggles the current input language such as switching between English and Japanese on
+ * a QWERTY keyboard. On some devices, the same function may be performed by
+ * pressing Shift+Space.
+ */
+ val LanguageSwitch: Key
+
+ /**
+ * Manner Mode key.
+ *
+ * Toggles silent or vibrate mode on and off to make the device behave more politely
+ * in certain settings such as on a crowded train. On some devices, the key may only
+ * operate when long-pressed.
+ */
+ val MannerMode: Key
+
+ /**
+ * 3D Mode key.
+ *
+ * Toggles the display between 2D and 3D mode.
+ */
+ val Toggle2D3D: Key
+
+ /**
+ * Contacts special function key.
+ *
+ * Used to launch an address book application.
+ */
+ val Contacts: Key
+
+ /**
+ * Calendar special function key.
+ *
+ * Used to launch a calendar application.
+ */
+ val Calendar: Key
+
+ /**
+ * Music special function key.
+ *
+ * Used to launch a music player application.
+ */
+ val Music: Key
+
+ /**
+ * Calculator special function key.
+ *
+ * Used to launch a calculator application.
+ */
+ val Calculator: Key
+
+ /** Japanese full-width / half-width key. */
+ val ZenkakuHankaru: Key
+
+ /** Japanese alphanumeric key. */
+ val Eisu: Key
+
+ /** Japanese non-conversion key. */
+ val Muhenkan: Key
+
+ /** Japanese conversion key. */
+ val Henkan: Key
+
+ /** Japanese katakana / hiragana key. */
+ val KatakanaHiragana: Key
+
+ /** Japanese Yen key. */
+ val Yen: Key
+
+ /** Japanese Ro key. */
+ val Ro: Key
+
+ /** Japanese kana key. */
+ val Kana: Key
+
+ /**
+ * Assist key.
+ *
+ * Launches the global assist activity. Not delivered to applications.
+ */
+ val Assist: Key
+
+ /**
+ * Brightness Down key.
+ *
+ * Adjusts the screen brightness down.
+ */
+ val BrightnessDown: Key
+
+ /**
+ * Brightness Up key.
+ *
+ * Adjusts the screen brightness up.
+ */
+ val BrightnessUp: Key
+
+ /**
+ * Sleep key.
+ *
+ * Puts the device to sleep. Behaves somewhat like [Power] but it
+ * has no effect if the device is already asleep.
+ */
+ val Sleep: Key
+
+ /**
+ * Wakeup key.
+ *
+ * Wakes up the device. Behaves somewhat like [Power] but it
+ * has no effect if the device is already awake.
+ */
+ val WakeUp: Key
+
+ /** Put device to sleep unless a wakelock is held. */
+ val SoftSleep: Key
+
+ /**
+ * Pairing key.
+ *
+ * Initiates peripheral pairing mode. Useful for pairing remote control
+ * devices or game controllers, especially if no other input mode is
+ * available.
+ */
+ val Pairing: Key
+
+ /**
+ * Last Channel key.
+ *
+ * Goes to the last viewed channel.
+ */
+ val LastChannel: Key
+
+ /**
+ * TV data service key.
+ *
+ * Displays data services like weather, sports.
+ */
+ val TvDataService: Key
+
+ /**
+ * Voice Assist key.
+ *
+ * Launches the global voice assist activity. Not delivered to applications.
+ */
+ val VoiceAssist: Key
+
+ /**
+ * Radio key.
+ *
+ * Toggles TV service / Radio service.
+ */
+ val TvRadioService: Key
+
+ /**
+ * Teletext key.
+ *
+ * Displays Teletext service.
+ */
+ val TvTeletext: Key
+
+ /**
+ * Number entry key.
+ *
+ * Initiates to enter multi-digit channel number when each digit key is assigned
+ * for selecting separate channel. Corresponds to Number Entry Mode (0x1D) of CEC
+ * User Control Code.
+ */
+ val TvNumberEntry: Key
+
+ /**
+ * Analog Terrestrial key.
+ *
+ * Switches to analog terrestrial broadcast service.
+ */
+ val TvTerrestrialAnalog: Key
+
+ /**
+ * Digital Terrestrial key.
+ *
+ * Switches to digital terrestrial broadcast service.
+ */
+ val TvTerrestrialDigital: Key
+
+ /**
+ * Satellite key.
+ *
+ * Switches to digital satellite broadcast service.
+ */
+ val TvSatellite: Key
+
+ /**
+ * BS key.
+ *
+ * Switches to BS digital satellite broadcasting service available in Japan.
+ */
+ val TvSatelliteBs: Key
+
+ /**
+ * CS key.
+ *
+ * Switches to CS digital satellite broadcasting service available in Japan.
+ */
+ val TvSatelliteCs: Key
+
+ /**
+ * BS/CS key.
+ *
+ * Toggles between BS and CS digital satellite services.
+ */
+ val TvSatelliteService: Key
+
+ /**
+ * Toggle Network key.
+ *
+ * Toggles selecting broadcast services.
+ */
+ val TvNetwork: Key
+
+ /**
+ * Antenna/Cable key.
+ *
+ * Toggles broadcast input source between antenna and cable.
+ */
+ val TvAntennaCable: Key
+
+ /**
+ * HDMI #1 key.
+ *
+ * Switches to HDMI input #1.
+ */
+ val TvInputHdmi1: Key
+
+ /**
+ * HDMI #2 key.
+ *
+ * Switches to HDMI input #2.
+ */
+ val TvInputHdmi2: Key
+
+ /**
+ * HDMI #3 key.
+ *
+ * Switches to HDMI input #3.
+ */
+ val TvInputHdmi3: Key
+
+ /**
+ * HDMI #4 key.
+ *
+ * Switches to HDMI input #4.
+ */
+ val TvInputHdmi4: Key
+
+ /**
+ * Composite #1 key.
+ *
+ * Switches to composite video input #1.
+ */
+ val TvInputComposite1: Key
+
+ /**
+ * Composite #2 key.
+ *
+ * Switches to composite video input #2.
+ */
+ val TvInputComposite2: Key
+
+ /**
+ * Component #1 key.
+ *
+ * Switches to component video input #1.
+ */
+ val TvInputComponent1: Key
+
+ /**
+ * Component #2 key.
+ *
+ * Switches to component video input #2.
+ */
+ val TvInputComponent2: Key
+
+ /**
+ * VGA #1 key.
+ *
+ * Switches to VGA (analog RGB) input #1.
+ */
+ val TvInputVga1: Key
+
+ /**
+ * Audio description key.
+ *
+ * Toggles audio description off / on.
+ */
+ val TvAudioDescription: Key
+
+ /**
+ * Audio description mixing volume up key.
+ *
+ * Increase the audio description volume as compared with normal audio volume.
+ */
+ val TvAudioDescriptionMixingVolumeUp: Key
+
+ /**
+ * Audio description mixing volume down key.
+ *
+ * Lessen audio description volume as compared with normal audio volume.
+ */
+ val TvAudioDescriptionMixingVolumeDown: Key
+
+ /**
+ * Zoom mode key.
+ *
+ * Changes Zoom mode (Normal, Full, Zoom, Wide-zoom, etc.)
+ */
+ val TvZoomMode: Key
+
+ /**
+ * Contents menu key.
+ *
+ * Goes to the title list. Corresponds to Contents Menu (0x0B) of CEC User Control Code
+ */
+ val TvContentsMenu: Key
+
+ /**
+ * Media context menu key.
+ *
+ * Goes to the context menu of media contents. Corresponds to Media Context-sensitive
+ * Menu (0x11) of CEC User Control Code.
+ */
+ val TvMediaContextMenu: Key
+
+ /**
+ * Timer programming key.
+ *
+ * Goes to the timer recording menu. Corresponds to Timer Programming (0x54) of
+ * CEC User Control Code.
+ */
+ val TvTimerProgramming: Key
+
+ /**
+ * Primary stem key for Wear
+ *
+ * Main power/reset button on watch.
+ */
+ val StemPrimary: Key
+
+ /** Generic stem key 1 for Wear. */
+ val Stem1: Key
+
+ /** Generic stem key 2 for Wear. */
+ val Stem2: Key
+
+ /** Generic stem key 3 for Wear. */
+ val Stem3: Key
+
+ /** Show all apps. */
+ val AllApps: Key
+
+ /** Refresh key. */
+ val Refresh: Key
+
+ /** Thumbs up key. Apps can use this to let user up-vote content. */
+ val ThumbsUp: Key
+
+ /** Thumbs down key. Apps can use this to let user down-vote content. */
+ val ThumbsDown: Key
+
+ /**
+ * Used to switch current [android.accounts.Account] that is
+ * consuming content. May be consumed by system to set account globally.
+ */
+ val ProfileSwitch: Key
+ }
+
+ override fun toString(): String
+}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/texttoolbar/TextToolbar.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/texttoolbar/TextToolbar.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/texttoolbar/TextToolbar.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/texttoolbar/TextToolbar.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/core/texttoolbar/TextToolbarStatus.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/texttoolbar/TextToolbarStatus.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/core/texttoolbar/TextToolbarStatus.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/core/texttoolbar/TextToolbarStatus.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/DrawCache.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/DrawCache.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/DrawCache.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/DrawCache.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/Vector.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/Vector.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/Vector.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/Vector.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt
similarity index 98%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt
index cf07a79..a6a65f1 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAsset.kt
@@ -141,9 +141,7 @@
override fun equals(other: Any?): Boolean {
if (this === other) return true
- if (javaClass != other?.javaClass) return false
-
- other as VectorGroup
+ if (other == null || other !is VectorGroup) return false
if (name != other.name) return false
if (rotation != other.rotation) return false
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt
similarity index 95%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt
index a65f7ca..12831ef 100644
--- a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorAssetBuilder.kt
@@ -20,7 +20,17 @@
import androidx.ui.graphics.StrokeCap
import androidx.ui.graphics.StrokeJoin
import androidx.ui.unit.Dp
-import java.util.Stack
+
+private inline class Stack<T>(private val backing: ArrayList<T> = ArrayList<T>()) {
+ val size: Int get() = backing.size
+
+ fun push(value: T) = backing.add(value)
+ fun pop(): T = backing.removeAt(size - 1)
+ fun peek(): T = backing[size - 1]
+ fun isEmpty() = backing.isEmpty()
+ fun isNotEmpty() = !isEmpty()
+ fun clear() = backing.clear()
+}
/**
* Builder used to construct a Vector graphic tree.
@@ -69,7 +79,7 @@
get() = nodes.peek()
init {
- nodes.add(root)
+ nodes.push(root)
}
/**
@@ -111,7 +121,7 @@
clipPathData
)
currentGroup.addNode(group)
- nodes.add(group)
+ nodes.push(group)
return this
}
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorCompose.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorCompose.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorCompose.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorCompose.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
diff --git a/ui/ui-core/src/androidMain/kotlin/androidx/ui/platform/UriHandler.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/platform/UriHandler.kt
similarity index 100%
rename from ui/ui-core/src/androidMain/kotlin/androidx/ui/platform/UriHandler.kt
rename to ui/ui-core/src/commonMain/kotlin/androidx/ui/platform/UriHandler.kt
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/autofill/AndroidAutofillTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/autofill/AndroidAutofillTest.kt
index 8da03e3..5baa9ce 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/autofill/AndroidAutofillTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/autofill/AndroidAutofillTest.kt
@@ -17,14 +17,15 @@
package androidx.ui.autofill
import android.app.Activity
-import androidx.ui.geometry.Rect
+import android.graphics.Rect as AndroidRect
import android.view.View
import android.view.autofill.AutofillManager
import androidx.test.filters.SmallTest
import androidx.ui.ComposeUiRobolectricTestRunner
+import androidx.ui.core.toComposeRect
+import androidx.ui.geometry.Rect
import com.google.common.truth.Truth.assertThat
import org.junit.Before
-import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
@@ -69,7 +70,6 @@
assertThat(view.importantForAutofill).isEqualTo(View.IMPORTANT_FOR_AUTOFILL_YES)
}
- @Ignore("b/159210000")
@Test
fun requestAutofillForNode_calls_notifyViewEntered() {
// Arrange.
@@ -121,8 +121,8 @@
val viewExitedStats = mutableListOf<NotifyViewExited>()
@Implementation
- fun notifyViewEntered(view: View, virtualId: Int, rect: Rect) {
- viewEnteredStats += NotifyViewEntered(view, virtualId, rect)
+ fun notifyViewEntered(view: View, virtualId: Int, rect: AndroidRect) {
+ viewEnteredStats += NotifyViewEntered(view, virtualId, rect.toComposeRect())
}
@Implementation
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/ComposedModifierTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/ComposedModifierTest.kt
index a724024..d719f08 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/ComposedModifierTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/ComposedModifierTest.kt
@@ -30,6 +30,7 @@
import androidx.compose.withRunningRecomposer
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.withContext
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotEquals
import org.junit.Assert.assertNotNull
@@ -52,13 +53,13 @@
* Confirm that a [composed] modifier correctly constructs separate instances when materialized
*/
@Test
- fun materializeComposedModifier() = runBlocking {
+ fun materializeComposedModifier() = runBlocking(TestFrameClock()) {
// Note: assumes single-threaded composition
var counter = 0
val sourceMod = Modifier.testTag("static", 0)
.composed { testTag("dynamic", ++counter) }
- withRunningRecomposer(TestFrameClock()) { recomposer ->
+ withRunningRecomposer { recomposer ->
lateinit var firstMaterialized: Modifier
lateinit var secondMaterialized: Modifier
compose(recomposer) {
@@ -117,27 +118,29 @@
}
val frameClock = TestFrameClock()
- withRunningRecomposer(frameClock) { recomposer ->
- lateinit var materialized: Modifier
- compose(recomposer) {
- materialized = currentComposer.materialize(sourceMod)
+ withContext(frameClock) {
+ withRunningRecomposer { recomposer ->
+ lateinit var materialized: Modifier
+ compose(recomposer) {
+ materialized = currentComposer.materialize(sourceMod)
+ }
+
+ assertEquals(
+ "initial composition value",
+ 0,
+ materialized.getTestTag("changing", Int.MIN_VALUE)
+ )
+
+ value = 5
+ invalidator()
+ frameClock.frame(0L)
+
+ assertEquals(
+ "recomposed composition value",
+ 5,
+ materialized.getTestTag("changing", Int.MIN_VALUE)
+ )
}
-
- assertEquals(
- "initial composition value",
- 0,
- materialized.getTestTag("changing", Int.MIN_VALUE)
- )
-
- value = 5
- invalidator()
- frameClock.frame(0L)
-
- assertEquals(
- "recomposed composition value",
- 5,
- materialized.getTestTag("changing", Int.MIN_VALUE)
- )
}
}
@@ -152,24 +155,26 @@
val frameClock = TestFrameClock()
- withRunningRecomposer(frameClock) { recomposer ->
- val results = mutableListOf<Any?>()
- val notFound = Any()
- compose(recomposer) {
- results.add(
- currentComposer.materialize(sourceMod).getTestTag("remembered", notFound)
- )
+ withContext(frameClock) {
+ withRunningRecomposer { recomposer ->
+ val results = mutableListOf<Any?>()
+ val notFound = Any()
+ compose(recomposer) {
+ results.add(
+ currentComposer.materialize(sourceMod).getTestTag("remembered", notFound)
+ )
+ }
+
+ assertTrue("one item added for initial composition", results.size == 1)
+ assertNotNull("remembered object not null", results[0])
+
+ invalidator()
+ frameClock.frame(0)
+
+ assertEquals("two items added after recomposition", 2, results.size)
+ assertTrue("no null items", results.none { it === notFound })
+ assertEquals("remembered references are equal", results[0], results[1])
}
-
- assertTrue("one item added for initial composition", results.size == 1)
- assertNotNull("remembered object not null", results[0])
-
- invalidator()
- frameClock.frame(0)
-
- assertEquals("two items added after recomposition", 2, results.size)
- assertTrue("no null items", results.none { it === notFound })
- assertEquals("remembered references are equal", results[0], results[1])
}
}
@@ -183,17 +188,19 @@
val frameClock = TestFrameClock()
- withRunningRecomposer(frameClock) { recomposer ->
- lateinit var materialized: Modifier
- compose(recomposer) {
- materialized = currentComposer.materialize(mod)
- }
+ withContext(frameClock) {
+ withRunningRecomposer { recomposer ->
+ lateinit var materialized: Modifier
+ compose(recomposer) {
+ materialized = currentComposer.materialize(mod)
+ }
- assertEquals(
- "fully unwrapped composed modifier value",
- 10,
- materialized.getTestTag("nested", 0)
- )
+ assertEquals(
+ "fully unwrapped composed modifier value",
+ 10,
+ materialized.getTestTag("nested", 0)
+ )
+ }
}
}
}
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/LayoutNodeTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/LayoutNodeTest.kt
index 7603287..03464d8 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/LayoutNodeTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/LayoutNodeTest.kt
@@ -31,6 +31,7 @@
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
+import org.junit.Assert.assertSame
import org.junit.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
@@ -656,6 +657,45 @@
assertFalse(layoutNode.coordinates.isAttached)
}
+ // The LayoutNodeWrapper should be reused when it has been replaced with the same type
+ @Test
+ fun layoutNodeWrapperSameWithReplacementModifier() {
+ val layoutNode = LayoutNode()
+ val drawModifier = Modifier.drawBehind { }
+
+ layoutNode.modifier = drawModifier
+ val oldLayoutNodeWrapper = layoutNode.outerLayoutNodeWrapper
+ assertFalse(oldLayoutNodeWrapper.isAttached)
+
+ layoutNode.attach(mockOwner())
+ assertTrue(oldLayoutNodeWrapper.isAttached)
+
+ layoutNode.modifier = Modifier.drawBehind { }
+ val newLayoutNodeWrapper = layoutNode.outerLayoutNodeWrapper
+ assertSame(newLayoutNodeWrapper, oldLayoutNodeWrapper)
+ }
+
+ // The LayoutNodeWrapper should be reused when it has been replaced with the same type,
+ // even with multiple LayoutNodeWrappers for one modifier.
+ @Test
+ fun layoutNodeWrapperSameWithReplacementMultiModifier() {
+ class TestModifier : DrawModifier, DrawLayerModifier {
+ override fun ContentDrawScope.draw() {
+ drawContent()
+ }
+ }
+ val layoutNode = LayoutNode()
+
+ layoutNode.modifier = TestModifier()
+ val oldLayoutNodeWrapper = layoutNode.outerLayoutNodeWrapper
+ val oldLayoutNodeWrapper2 = oldLayoutNodeWrapper.wrapped
+ layoutNode.modifier = TestModifier()
+ val newLayoutNodeWrapper = layoutNode.outerLayoutNodeWrapper
+ val newLayoutNodeWrapper2 = newLayoutNodeWrapper.wrapped
+ assertSame(newLayoutNodeWrapper, oldLayoutNodeWrapper)
+ assertSame(newLayoutNodeWrapper2, oldLayoutNodeWrapper2)
+ }
+
// The LayoutNodeWrapper should be detached when it has been replaced.
@Test
fun layoutNodeWrapperAttachedWhenLayoutNodeAttached() {
@@ -669,7 +709,7 @@
layoutNode.attach(mockOwner())
assertTrue(oldLayoutNodeWrapper.isAttached)
- layoutNode.modifier = Modifier.drawBehind { }
+ layoutNode.modifier = Modifier.drawLayer()
val newLayoutNodeWrapper = layoutNode.outerLayoutNodeWrapper
assertTrue(newLayoutNodeWrapper.isAttached)
assertFalse(oldLayoutNodeWrapper.isAttached)
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilterTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilterTest.kt
index cd4a7fc..1de3982 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilterTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/DragSlopExceededGestureFilterTest.kt
@@ -14,11 +14,18 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalPointerInput::class)
+@file:Suppress("PrivatePropertyName")
+
package androidx.ui.core.gesture
import androidx.ui.core.Direction
import androidx.ui.core.PointerEventPass
import androidx.ui.core.consumeDownChange
+import androidx.ui.core.gesture.scrollorientationlocking.InternalScrollOrientationLocker
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.scrollorientationlocking.ScrollOrientationLocker
+import androidx.ui.core.gesture.scrollorientationlocking.ShareScrollOrientationLockerEvent
import androidx.ui.testutils.consume
import androidx.ui.testutils.down
import androidx.ui.testutils.invokeOverAllPasses
@@ -29,6 +36,7 @@
import androidx.ui.unit.Duration
import androidx.ui.unit.milliseconds
import com.google.common.truth.Truth.assertThat
+import com.nhaarman.mockitokotlin2.mock
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -66,8 +74,9 @@
canDragDirections.clear()
filter =
DragSlopExceededGestureFilter(TestTouchSlop.toFloat())
- filter.canDrag = canDrag
+ filter.setDraggableData(null, canDrag)
filter.onDragSlopExceeded = onDragSlopExceeded
+ filter.scrollOrientationLocker = ScrollOrientationLocker(mock())
}
// Verify the circumstances under which canDrag should not be called.
@@ -881,6 +890,219 @@
assertThat(onDragSlopExceededCallCount).isEqualTo(2)
}
+ // Orientation tests
+
+ // Tests that verify correct behavior when orientation is set.
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementVertical_canDragNotCalled() {
+ filter.setDraggableData(Orientation.Horizontal, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move1 = down.moveBy(Duration(milliseconds = 10), 0f, 1f)
+ filter::onPointerInput.invokeOverAllPasses(move1)
+ val move2 = down.moveBy(Duration(milliseconds = 10), 0f, -1f)
+ filter::onPointerInput.invokeOverAllPasses(move2)
+
+ assertThat(canDragDirections).isEmpty()
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsHorizontal_canDragNotCalled() {
+ filter.setDraggableData(Orientation.Vertical, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move1 = down.moveBy(Duration(milliseconds = 10), 1f, 0f)
+ filter::onPointerInput.invokeOverAllPasses(move1)
+ val move2 = down.moveBy(Duration(milliseconds = 10), -1f, 0f)
+ filter::onPointerInput.invokeOverAllPasses(move2)
+
+ assertThat(canDragDirections).isEmpty()
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementHorizontal_canDragCalled() {
+ filter.setDraggableData(Orientation.Horizontal, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move1 = down.moveBy(Duration(milliseconds = 10), 1f, 0f)
+ filter::onPointerInput.invokeOverAllPasses(move1)
+ val move2 = down.moveBy(Duration(milliseconds = 10), -1f, 0f)
+ filter::onPointerInput.invokeOverAllPasses(move2)
+
+ // 2 for each because canDrag is currently checked on both postUp and postDown
+ assertThat(canDragDirections.filter { it == Direction.LEFT }).hasSize(2)
+ assertThat(canDragDirections.filter { it == Direction.RIGHT }).hasSize(2)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsVertical_canDragCalled() {
+ filter.setDraggableData(Orientation.Vertical, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move1 = down.moveBy(Duration(milliseconds = 10), 0f, 1f)
+ filter::onPointerInput.invokeOverAllPasses(move1)
+ val move2 = down.moveBy(Duration(milliseconds = 10), 0f, -1f)
+ filter::onPointerInput.invokeOverAllPasses(move2)
+
+ // 2 for each because canDrag is currently checked on both postUp and postDown
+ assertThat(canDragDirections.filter { it == Direction.UP }).hasSize(2)
+ assertThat(canDragDirections.filter { it == Direction.DOWN }).hasSize(2)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMoveLeftPassedSlop_onTouchSlopExceededCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Horizontal, -1, 0, 1)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMoveUpPassedSlop_onTouchSlopExceededNotCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Horizontal, 0, -1, 0)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMoveRightPassedSlop_onTouchSlopExceededCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Horizontal, 1, 0, 1)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMoveDownPassedSlop_onTouchSlopExceededNotCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Horizontal, 0, 1, 0)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMoveLeftPassedSlop_onTouchSlopExceededNotCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Vertical, -1, 0, 0)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMoveUpPassedSlop_onTouchSlopExceededCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Vertical, 0, -1, 1)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMoveRightPassedSlop_onTouchSlopExceededNotCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Vertical, 1, 0, 0)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMoveDownPassedSlop_onTouchSlopExceededCalled() {
+ onPointerInput_filterHasOrientationMovePassedSlop(Orientation.Vertical, 0, 1, 1)
+ }
+
+ private fun onPointerInput_filterHasOrientationMovePassedSlop(
+ filterOrientation: Orientation,
+ horizontalDirection: Int,
+ verticalDirection: Int,
+ expectecdOnDragSlopExceededCallCount: Int
+ ) {
+ val beyondSlop = TestTouchSlop + TinyNum
+
+ filter.setDraggableData(filterOrientation, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move = down.moveBy(
+ Duration(milliseconds = 100),
+ horizontalDirection * beyondSlop,
+ verticalDirection * beyondSlop
+ )
+ filter::onPointerInput.invokeOverAllPasses(move)
+
+ assertThat(onDragSlopExceededCallCount).isEqualTo(expectecdOnDragSlopExceededCallCount)
+ }
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerVerticalMovesLeftPastSlop_callBackNotCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Horizontal, Orientation.Vertical, -1, 0, 0
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerVerticalMovesRightPastSlop_callBackNotCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Horizontal, Orientation.Vertical, 1, 0, 0
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerHorizontalMovesLeftPastSlop_callBackCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Horizontal, Orientation.Horizontal, -1, 0, 1
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerHorizontallMovesRightPastSlop_callBackCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Horizontal, Orientation.Horizontal, 1, 0, 1
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerHorizontalMovesUpPastSlop_callBackNotCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Vertical, Orientation.Horizontal, 0, -1, 0
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerHorizontalMovesDownPastSlop_callBackNotCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Vertical, Orientation.Horizontal, 0, 1, 0
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerVerticalMovesUpPastSlop_callBackCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Vertical, Orientation.Vertical, 0, -1, 1
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerVerticalMovesDownPastSlop_callBackCalled() {
+ onPointerInput_pointerIsLockedMovesPassedSlop(
+ Orientation.Vertical, Orientation.Vertical, 0, 1, 1
+ )
+ }
+
+ private fun onPointerInput_pointerIsLockedMovesPassedSlop(
+ filterOrientation: Orientation,
+ lockedOrientation: Orientation,
+ horizontalDirection: Int,
+ verticalDirection: Int,
+ expectedOnDragSlopExceededCallCount: Int
+ ) {
+ val beyondSlop = TestTouchSlop + TinyNum
+
+ filter.onInit(mock())
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ filter.setDraggableData(filterOrientation, canDrag)
+
+ val down = down(0)
+ filter::onPointerInput.invokeOverAllPasses(down)
+ val move = down.moveBy(
+ Duration(milliseconds = 100),
+ horizontalDirection * beyondSlop,
+ verticalDirection * beyondSlop
+ )
+ scrollOrientationLocker.attemptToLockPointers(listOf(move), lockedOrientation)
+
+ filter::onPointerInput.invokeOverAllPasses(move)
+
+ assertThat(onDragSlopExceededCallCount).isEqualTo(expectedOnDragSlopExceededCallCount)
+ }
+
// Verification that cancellation behavior is correct.
@Test
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/RawDragGestureFilterTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/RawDragGestureFilterTest.kt
index df409af..29dcf18 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/RawDragGestureFilterTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/RawDragGestureFilterTest.kt
@@ -16,9 +16,13 @@
package androidx.ui.core.gesture
+import androidx.ui.core.CustomEventDispatcher
import androidx.ui.core.PointerEventPass
import androidx.ui.core.anyPositionChangeConsumed
import androidx.ui.core.consumePositionChange
+import androidx.ui.core.gesture.scrollorientationlocking.InternalScrollOrientationLocker
+import androidx.ui.core.gesture.scrollorientationlocking.Orientation
+import androidx.ui.core.gesture.scrollorientationlocking.ShareScrollOrientationLockerEvent
import androidx.ui.geometry.Offset
import androidx.ui.testutils.consume
import androidx.ui.testutils.down
@@ -31,6 +35,11 @@
import androidx.ui.unit.IntSize
import androidx.ui.unit.milliseconds
import com.google.common.truth.Truth.assertThat
+import com.nhaarman.mockitokotlin2.argumentCaptor
+import com.nhaarman.mockitokotlin2.mock
+import com.nhaarman.mockitokotlin2.reset
+import com.nhaarman.mockitokotlin2.verify
+import com.nhaarman.mockitokotlin2.verifyNoMoreInteractions
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -48,6 +57,7 @@
private lateinit var filter: RawDragGestureFilter
private lateinit var dragObserver: MockDragObserver
private lateinit var log: MutableList<LogItem>
+ private lateinit var customEventDispatcher: CustomEventDispatcher
private var dragStartBlocked = true
@Before
@@ -57,6 +67,8 @@
filter = RawDragGestureFilter()
filter.canStartDragging = { !dragStartBlocked }
filter.dragObserver = dragObserver
+ customEventDispatcher = mock()
+ filter.onInit(customEventDispatcher)
}
// Verify the circumstances under which onStart/OnDrag should not be called.
@@ -371,11 +383,14 @@
) {
log.clear()
- var change = down(0, 0.milliseconds)
+ var time = 0.milliseconds
+
+ var change = down(0, time)
filter::onPointerInput.invokeOverAllPasses(change)
dragStartBlocked = false
repeat(11) {
+ time += 10.milliseconds
change = change.moveBy(
10.milliseconds,
incrementPerMilliX,
@@ -384,7 +399,8 @@
filter::onPointerInput.invokeOverAllPasses(change)
}
- change = change.up(20.milliseconds)
+ time += 10.milliseconds
+ change = change.up(time)
filter::onPointerInput.invokeOverAllPasses(change)
val loggedStops = log.filter { it.methodName == "onStop" }
@@ -575,6 +591,440 @@
.isEqualTo(Offset(3f, 4f))
}
+ @Test
+ fun onPointerInput_hasOrientationDownEvent_customEventDispatchedOnceDuringInitialDown() {
+
+ // Arrange
+
+ filter.orientation = Orientation.Vertical
+
+ val down = down(0)
+
+ // Act / Verify 1
+
+ filter::onPointerInput.invokeOverPasses(down, PointerEventPass.InitialDown)
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ assertThat(allValues).hasSize(1)
+ assertThat(allValues.first().scrollOrientationLocker).isNotNull()
+ }
+
+ reset(customEventDispatcher)
+
+ // Act / Verify 1
+ filter::onPointerInput.invokeOverPasses(
+ down,
+ PointerEventPass.PreUp,
+ PointerEventPass.PreDown,
+ PointerEventPass.PostUp,
+ PointerEventPass.PostDown
+ )
+ verifyNoMoreInteractions(customEventDispatcher)
+ }
+
+ @Test
+ fun onPointerInput_hasOrientationDownUpDown_customEventDispatchedTwiceWithDifferentLocker() {
+ filter.orientation = Orientation.Vertical
+
+ val downA = down(0)
+ val upA = downA.up(1.milliseconds)
+ val downB = down(1, 2.milliseconds)
+
+ filter::onPointerInput.invokeOverAllPasses(downA)
+
+ val locker1 = argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+
+ assertThat(allValues).hasSize(1)
+ allValues.first().scrollOrientationLocker
+ }
+
+ filter::onPointerInput.invokeOverAllPasses(upA)
+ reset(customEventDispatcher)
+ filter::onPointerInput.invokeOverAllPasses(downB)
+
+ val locker2 = argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+
+ assertThat(allValues).hasSize(1)
+ allValues.first().scrollOrientationLocker
+ }
+
+ assertThat(locker1).isNotEqualTo(locker2)
+
+ verifyNoMoreInteractions(customEventDispatcher)
+ }
+
+ // The below tests verify correct behavior in relation to scroll orientation locking.
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerLockedToVertical_noStart() {
+ onPointerInput_differentOrientations(
+ Orientation.Vertical,
+ Orientation.Horizontal
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerLockedToHorizontal_noStart() {
+ onPointerInput_differentOrientations(
+ Orientation.Horizontal,
+ Orientation.Vertical
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterHorizontalPointerLockedToHorizontal_start() {
+ onPointerInput_differentOrientations(
+ Orientation.Horizontal,
+ Orientation.Horizontal
+ )
+ }
+
+ @Test
+ fun onPointerInput_filterVerticalPointerLockedToVertical_start() {
+ onPointerInput_differentOrientations(
+ Orientation.Vertical,
+ Orientation.Vertical
+ )
+ }
+
+ private fun onPointerInput_differentOrientations(
+ filterOrientation: Orientation,
+ lockedOrientation: Orientation
+ ) {
+
+ // Arrange
+
+ filter.orientation = filterOrientation
+ dragStartBlocked = false
+
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ val down = down(0)
+ val move = down.moveBy(1.milliseconds, 3f, 5f)
+
+ filter::onPointerInput.invokeOverAllPasses(down)
+
+ scrollOrientationLocker.attemptToLockPointers(listOf(move), lockedOrientation)
+
+ // Act
+ filter::onPointerInput.invokeOverAllPasses(move)
+
+ // Assert
+ if (filterOrientation == lockedOrientation) {
+ assertThat(log.filter { it.methodName == "onStart" }).hasSize(1)
+ // onDrag get's called twice because it is called during PostUp and PostDown and nothing
+ // consumed the drag distance.
+ assertThat(log.filter { it.methodName == "onDrag" }).hasSize(2)
+ } else {
+ assertThat(log.filter { it.methodName == "onStart" }).isEmpty()
+ assertThat(log.filter { it.methodName == "onDrag" }).isEmpty()
+ }
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementIsHorizontal_locksHorizontal() {
+ onPointerInput_mayLockPointers(false, Orientation.Horizontal, 1f, 0f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsVertical_locksVertical() {
+ onPointerInput_mayLockPointers(false, Orientation.Vertical, 0f, 1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementIsBoth_locksHorizontal() {
+ onPointerInput_mayLockPointers(false, Orientation.Horizontal, -1f, -1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsBoth_locksVertical() {
+ onPointerInput_mayLockPointers(false, Orientation.Vertical, -1f, -1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementIsHorizontalBlocked_locksHorizontal() {
+ onPointerInput_mayLockPointers(true, Orientation.Horizontal, 1f, 0f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsVerticalBlocked_locksVertical() {
+ onPointerInput_mayLockPointers(true, Orientation.Vertical, 0f, 1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementIsBothBlocked_locksHorizontal() {
+ onPointerInput_mayLockPointers(true, Orientation.Horizontal, -1f, -1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsBothBlocked_locksVertical() {
+ onPointerInput_mayLockPointers(true, Orientation.Vertical, -1f, -1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsHorizontalMovementIsVertical_locksNone() {
+ onPointerInput_mayLockPointers(false, Orientation.Horizontal, 0f, -1f)
+ }
+
+ @Test
+ fun onPointerInput_filterIsVerticalMovementIsHorizontal_locksNone() {
+ onPointerInput_mayLockPointers(false, Orientation.Vertical, -1f, 0f)
+ }
+
+ private fun onPointerInput_mayLockPointers(
+ blocked: Boolean,
+ filterOrientation: Orientation,
+ dx: Float,
+ dy: Float
+ ) {
+
+ // Arrange
+
+ val otherOrientation =
+ when (filterOrientation) {
+ Orientation.Vertical -> Orientation.Horizontal
+ Orientation.Horizontal -> Orientation.Vertical
+ }
+
+ filter.orientation = filterOrientation
+
+ dragStartBlocked = blocked
+
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ val down = down(0)
+ val move = down.moveBy(1.milliseconds, dx, dy)
+
+ filter::onPointerInput.invokeOverAllPasses(down)
+
+ // Act
+ filter::onPointerInput.invokeOverAllPasses(move)
+
+ // Assert
+ if (!blocked && (filterOrientation == Orientation.Horizontal && dx != 0f ||
+ filterOrientation == Orientation.Vertical && dy != 0f)
+ ) {
+ assertThat(scrollOrientationLocker.getPointersFor(listOf(move), otherOrientation))
+ .hasSize(0)
+ } else {
+ assertThat(scrollOrientationLocker.getPointersFor(listOf(move), otherOrientation))
+ .hasSize(1)
+ }
+ }
+
+ @Test
+ fun onPointerInput_Hori3Pointers1LockedVert2Average0__onStartAndOnDragNotCalled() {
+
+ // Arrange
+
+ filter.orientation = Orientation.Horizontal
+
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ val pointers = arrayOf(down(0), down(1), down(2))
+ filter::onPointerInput.invokeOverAllPasses(*pointers)
+
+ dragStartBlocked = false
+
+ // This pointer is going to be locked to vertical.
+ pointers[0] =
+ pointers[0].moveBy(
+ 100.milliseconds,
+ 100f,
+ 0f
+ )
+ scrollOrientationLocker.attemptToLockPointers(listOf(pointers[0]), Orientation.Vertical)
+
+ // These pointers average to no movement.
+ pointers[1] =
+ pointers[1].moveBy(
+ 100.milliseconds,
+ 1f,
+ 0f
+ )
+ pointers[2] =
+ pointers[2].moveBy(
+ 100.milliseconds,
+ -1f,
+ 0f
+ )
+
+ // Act
+ filter::onPointerInput.invokeOverAllPasses(*pointers)
+
+ // Assert
+ assertThat(log.filter { it.methodName == "onStart" }).isEmpty()
+ assertThat(log.filter { it.methodName == "onDrag" }).isEmpty()
+ }
+
+ @Test
+ fun onPointerInput_2Pointers1LockedInWrongOrientationOtherGoesUpThenItGoesUp_isCorrect() {
+
+ // Arrange
+
+ // Basic set up
+ filter.orientation = Orientation.Horizontal
+ dragStartBlocked = false
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ // One finger down
+ var time = 0.milliseconds
+ var pointer1 = down(0, time)
+ filter::onPointerInput.invokeOverAllPasses(pointer1)
+
+ // 2nd finger comes into play
+ time = 10.milliseconds
+ pointer1.moveTo(time)
+ var pointer2 = down(1, time)
+
+ // Lock the 2nd pointer to vertical
+ scrollOrientationLocker.attemptToLockPointers(listOf(pointer2), Orientation.Vertical)
+
+ // Dispatch 2nd finger down.
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+
+ // Both pointers move a bunch.
+ repeat(11) {
+ time = 10.milliseconds
+ pointer1 = pointer1.moveBy(
+ 10.milliseconds,
+ 1f,
+ 0f
+ )
+ pointer2 = pointer2.moveBy(
+ 10.milliseconds,
+ 1f,
+ 0f
+ )
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+ }
+
+ // Act 1
+
+ // Only Pointer 1 goes up
+ time = 10.milliseconds
+ pointer1 = pointer1.up(time)
+ pointer2 = pointer2.moveTo(time)
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+
+ // Assert 1
+
+ // One pointer is still down, and even though it is locked in the other orientation, we
+ // still shouldn't stop yet.
+ assertThat(log.filter { it.methodName == "onStop" }).hasSize(0)
+
+ // Act 2
+
+ // 2nd is up
+ time = 10.milliseconds
+ pointer2 = pointer2.up(time)
+ filter::onPointerInput.invokeOverAllPasses(pointer2)
+
+ // This finger lifting should contribute no flinging since it was locked to a different
+ // orientation.
+ val loggedStops = log.filter { it.methodName == "onStop" }
+ assertThat(loggedStops).hasSize(1)
+ val velocity = loggedStops[0].pxPosition!!
+ assertThat(velocity.x).isEqualTo(0)
+ assertThat(velocity.y).isEqualTo(0)
+ }
+
+ @Test
+ fun onPointerInput_2Pointers1LockedInWrongOrientationItGoesUpThenOtherGoesUp_isCorrect() {
+
+ // Arrange
+
+ // Basic set up
+ filter.orientation = Orientation.Horizontal
+ dragStartBlocked = false
+ val scrollOrientationLocker = InternalScrollOrientationLocker()
+ filter::onCustomEvent.invokeOverAllPasses(
+ ShareScrollOrientationLockerEvent(scrollOrientationLocker)
+ )
+
+ var time = 0.milliseconds
+
+ // One finger down
+ var pointer1 = down(0, time)
+ filter::onPointerInput.invokeOverAllPasses(pointer1)
+
+ // 2nd finger comes into play
+ time += 10.milliseconds
+ pointer1.moveTo(time)
+ var pointer2 = down(1, time)
+
+ // Lock the 2nd pointer to vertical
+ scrollOrientationLocker.attemptToLockPointers(listOf(pointer2), Orientation.Vertical)
+
+ // Dispatch 2nd finger down.
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+
+ // Both pointers move a bunch.
+ repeat(11) {
+ time += 10.milliseconds
+ pointer1 = pointer1.moveBy(
+ 10.milliseconds,
+ 1f,
+ 0f
+ )
+ pointer2 = pointer2.moveBy(
+ 10.milliseconds,
+ 1f,
+ 0f
+ )
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+ }
+
+ // Act 1
+
+ // Only Pointer 2 goes up
+ time += 10.milliseconds
+ pointer1 = pointer1.moveBy(
+ 10.milliseconds,
+ 1f,
+ 0f
+ )
+ pointer2 = pointer2.up(time)
+ filter::onPointerInput.invokeOverAllPasses(pointer1, pointer2)
+
+ // Assert 1
+
+ // One pointer is still down, and even though it is locked in the other orientation, we
+ // still shouldn't stop yet.
+ assertThat(log.filter { it.methodName == "onStop" }).hasSize(0)
+
+ // Act 2
+
+ // 2nd is up
+ time += 10.milliseconds
+ pointer1 = pointer1.up(time)
+ filter::onPointerInput.invokeOverAllPasses(pointer1)
+
+ // This finger lifting should contribute no flinging since it was locked to a different
+ // orientation.
+ val loggedStops = log.filter { it.methodName == "onStop" }
+ assertThat(loggedStops).hasSize(1)
+ val velocity = loggedStops[0].pxPosition!!
+ assertThat(velocity.x).isWithin(.01f).of(100f)
+ assertThat(velocity.y).isWithin(.01f).of(0f)
+ }
+
// Tests that verify when onCancel should not be called.
@Test
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerSetupTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerSetupTest.kt
new file mode 100644
index 0000000..816dda2
--- /dev/null
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerSetupTest.kt
@@ -0,0 +1,491 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(ExperimentalPointerInput::class)
+
+package androidx.ui.core.gesture.scrollorientationlocking
+
+import androidx.ui.core.CustomEvent
+import androidx.ui.core.CustomEventDispatcher
+import androidx.ui.core.PointerEventPass
+import androidx.ui.core.PointerInputChange
+import androidx.ui.core.gesture.ExperimentalPointerInput
+import androidx.ui.testutils.down
+import androidx.ui.testutils.moveTo
+import androidx.ui.testutils.up
+import androidx.ui.unit.milliseconds
+import com.google.common.truth.Truth.assertThat
+import com.nhaarman.mockitokotlin2.any
+import com.nhaarman.mockitokotlin2.argumentCaptor
+import com.nhaarman.mockitokotlin2.mock
+import com.nhaarman.mockitokotlin2.never
+import com.nhaarman.mockitokotlin2.reset
+import com.nhaarman.mockitokotlin2.verify
+import com.nhaarman.mockitokotlin2.verifyNoMoreInteractions
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@RunWith(JUnit4::class)
+class ScrollOrientationLockerSetupTest {
+
+ // Scenarios where dispatch does not happen.
+
+ // Valid CustomEvent, Down event, up event, all passes.
+ @Test
+ fun onPointerInput_validCustomEventThenDown_doesNotDispatchEvent() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ scrollOrientationLocker.onCustomEventAllPasses(
+ ShareScrollOrientationLockerEvent(
+ InternalScrollOrientationLocker()
+ )
+ )
+
+ val down = down(0, 0.milliseconds)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down))
+
+ verify(customEventDispatcher, never()).dispatchCustomEvent(any())
+ }
+
+ // CustomEvent, Down then move, all passes.
+ @Test
+ fun onPointerInput_downThenMove_doesNotDispatchEvent() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val down = down(0, x = 0f, y = 0f)
+ val moveA = down.moveTo(1.milliseconds, 1f, 0f)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down))
+
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA))
+
+ // Assert
+ verify(customEventDispatcher, never()).dispatchCustomEvent(any())
+ }
+
+ // CustomEvent, Down then up, all passes.
+ @Test
+ fun onPointerInput_downThenUp_doesNotDispatchEvent() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val down = down(0, x = 0f, y = 0f)
+ val up = down.up(1.milliseconds)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down))
+
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(up))
+
+ // Assert
+ verify(customEventDispatcher, never()).dispatchCustomEvent(any())
+ }
+
+ // CustomEvent, Down then up, all passes.
+ @Test
+ fun onPointerInput_downThenCancel_doesNotDispatchEvent() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val down = down(0, x = 0f, y = 0f)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down))
+
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onCancel()
+
+ // Assert
+ verify(customEventDispatcher, never()).dispatchCustomEvent(any())
+ }
+
+ // Scenarios where dispatch does happen.
+
+ // Down event, all passes.
+ @Test
+ fun onPointerInput_downAllPasses_dispatchesNewInternalScrollOrientationLockerOnce() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down(0)))
+
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ verifyNoMoreInteractions(customEventDispatcher)
+ }
+
+ // Down event, InitialTunnel only.
+ @Test
+ fun onPointerInput_downInitialTunnel_dispatchesNewInternalScrollOrientationLockerOnce() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInput(listOf(down(0)), PointerEventPass.InitialDown)
+
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ verifyNoMoreInteractions(customEventDispatcher)
+ }
+
+ // Valid CustomEvent, Down event, up event, all passes.
+ @Test
+ fun onPointerInput_invalidCustomEventThenDown_dispatchesEvent() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ scrollOrientationLocker.onCustomEventAllPasses(
+ object : CustomEvent {}
+ )
+
+ val down = down(0, 0.milliseconds)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down))
+
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ }
+
+ // Down event, followed by down event, all passes.
+ @Test
+ fun onPointerInput_downDown_dispatchesExistingScrollOrientationLockerOnce() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, x = 0f, y = 0f)
+
+ val moveA = downA.moveTo(1.milliseconds, 0f, 0f)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ var expected: InternalScrollOrientationLocker
+ argumentCaptor<ShareScrollOrientationLockerEvent>().apply {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ expected = this.firstValue.scrollOrientationLocker
+ }
+
+ reset(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA, downB))
+ var actual: InternalScrollOrientationLocker
+ argumentCaptor<ShareScrollOrientationLockerEvent>().apply {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ actual = this.firstValue.scrollOrientationLocker
+ }
+
+ assertThat(actual).isEqualTo(expected)
+ }
+
+ // Down event, followed by down event, InitialTunnel only.
+ @Test
+ fun onPointerInput_downDownInitialTunnel_dispatchesExistingScrollOrientationLockerOnce() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, x = 0f, y = 0f)
+
+ val moveA = downA.moveTo(1.milliseconds, 0f, 0f)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ var expected: InternalScrollOrientationLocker
+ argumentCaptor<ShareScrollOrientationLockerEvent>().apply {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ expected = this.firstValue.scrollOrientationLocker
+ }
+
+ reset(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInput(
+ listOf(moveA, downB),
+ PointerEventPass.InitialDown
+ )
+ var actual: InternalScrollOrientationLocker
+ argumentCaptor<ShareScrollOrientationLockerEvent>().apply {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ actual = this.firstValue.scrollOrientationLocker
+ }
+
+ assertThat(actual).isEqualTo(expected)
+ }
+
+ // Down then up then down, all passes.
+ @Test
+ fun onPointerInput_downThenUpThenDown_dispatchesEventDuringSecondDown() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0)
+ val upA = downA.up(1.milliseconds)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(upA))
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downB))
+
+ // Assert
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ }
+
+ // Down then up then down, all passes: first internalLocker != last internalLocker
+ @Test
+ fun onPointerInput_downThenUpThenDown_firstInternalLockerNotEqualsFinalInternalLocker() {
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, x = 0f, y = 0f)
+ val upA = downA.up(1.milliseconds)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ val expected =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(upA))
+
+ reset(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downB))
+ val actual =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+
+ assertThat(actual).isNotEqualTo(expected)
+ }
+
+ // Down then cancel then down, all passes.
+ @Test
+ fun onPointerInput_downThenCancelThenDown_dispatchesEventDuringSecondDown() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ scrollOrientationLocker.onCancel()
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downB))
+
+ // Assert
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ }
+
+ // Down then up then down, all passes: first internalLocker != last internalLocker
+ @Test
+ fun onPointerInput_downCancelThenDown_firstInternalLockerNotEqualsFinalInternalLocker() {
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, x = 0f, y = 0f)
+ val downB = down(1)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ val expected =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+
+ scrollOrientationLocker.onCancel()
+ reset(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downB))
+ val actual =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().apply {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+
+ assertThat(actual).isNotEqualTo(expected)
+ }
+
+ // Valid CustomEvent, Down then up then down, all passes.
+ @Test
+ fun onPointerInput_validCustomEventDownUpDown_dispatchesEvent() {
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ scrollOrientationLocker.onCustomEventAllPasses(
+ ShareScrollOrientationLockerEvent(
+ InternalScrollOrientationLocker()
+ )
+ )
+
+ val downA = down(0, 0.milliseconds)
+ val upA = downA.up(1.milliseconds)
+ val downB = down(1, 2.milliseconds)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(upA))
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downB))
+
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ }
+
+ // CustomEvent, Down then move then down, all passes.
+ @Test
+ fun onPointerInput_downThenMoveThenDown_doesDispatchesEvent() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, 0.milliseconds, x = 0f, y = 0f)
+
+ val moveA1 = downA.moveTo(1.milliseconds, 1f, 0f)
+
+ val moveA2 = moveA1.moveTo(2.milliseconds, 1f, 0f)
+ val downB = down(0, 2.milliseconds, x = 0f, y = 0f)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA1))
+
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA2, downB))
+
+ // Assert
+ verify(customEventDispatcher).dispatchCustomEvent(any())
+ }
+
+ // CustomEvent, Down then move then down, all passes.
+ @Test
+ fun onPointerInput_downThenMoveThenDown_firstInternalLockerMatchesSecondInternalLocker() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ val downA = down(0, 0.milliseconds, x = 0f, y = 0f)
+
+ val moveA1 = downA.moveTo(1.milliseconds, 1f, 0f)
+
+ val moveA2 = moveA1.moveTo(2.milliseconds, 1f, 0f)
+ val downB = down(0, 2.milliseconds, x = 0f, y = 0f)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(downA))
+ val expected =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA1))
+
+ reset(customEventDispatcher)
+
+ // Act
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(moveA2, downB))
+ val actual =
+ argumentCaptor<ShareScrollOrientationLockerEvent>().run {
+ verify(customEventDispatcher).dispatchCustomEvent(capture())
+ this.firstValue.scrollOrientationLocker
+ }
+
+ // Assert
+ assertThat(actual).isEqualTo(expected)
+ }
+
+ // Verification of situations when exceptions should be thrown.
+
+ @Test(expected = IllegalStateException::class)
+ fun attemptToLockPointers_notInitialized_illegalStateExceptionThrown() {
+ val customEventDispatcher = mock<CustomEventDispatcher>()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ scrollOrientationLocker.attemptToLockPointers(listOf(down(0)), Orientation.Vertical)
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun getPointersFor_notInitialized_illegalStateExceptionThrown() {
+ val customEventDispatcher = mock<CustomEventDispatcher>()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ scrollOrientationLocker.getPointersFor(listOf(down(0)), Orientation.Vertical)
+ }
+
+ @Test(expected = IllegalStateException::class)
+ fun onCustomEvent_isLockerOWner_illegalStateExceptionThrown() {
+ val customEventDispatcher = mock<CustomEventDispatcher>()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+
+ scrollOrientationLocker.onPointerInputAllPasses(listOf(down(0)))
+
+ scrollOrientationLocker.onCustomEventAllPasses(
+ ShareScrollOrientationLockerEvent(
+ InternalScrollOrientationLocker()
+ )
+ )
+ }
+}
+
+private fun ScrollOrientationLocker.onPointerInputAllPasses(
+ changes: List<PointerInputChange>
+) {
+ PointerEventPass.values().forEach {
+ onPointerInputSetup(changes, it)
+ onPointerInputTearDown(changes, it)
+ }
+}
+
+private fun ScrollOrientationLocker.onPointerInput(
+ changes: List<PointerInputChange>,
+ pass: PointerEventPass
+) {
+ onPointerInputSetup(changes, pass)
+ onPointerInputTearDown(changes, pass)
+}
+
+private fun ScrollOrientationLocker.onCustomEventAllPasses(
+ event: CustomEvent
+) {
+ PointerEventPass.values().forEach {
+ onCustomEvent(event, it)
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerTest.kt
new file mode 100644
index 0000000..8e304c9
--- /dev/null
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/gesture/scrollorientationlocking/ScrollOrientationLockerTest.kt
@@ -0,0 +1,249 @@
+/*
+ * Copyright 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.
+ */
+
+@file:OptIn(ExperimentalPointerInput::class)
+
+package androidx.ui.core.gesture.scrollorientationlocking
+
+import androidx.ui.core.CustomEventDispatcher
+import androidx.ui.core.PointerEventPass
+import androidx.ui.core.PointerInputChange
+import androidx.ui.core.gesture.ExperimentalPointerInput
+import androidx.ui.testutils.down
+import androidx.ui.unit.milliseconds
+import com.google.common.truth.Truth
+import com.nhaarman.mockitokotlin2.mock
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+val c1 = down(1, 0.milliseconds, x = 1f, y = 1f)
+val c2 = down(2, 0.milliseconds, x = 2f, y = 2f)
+
+class LockingConfig(
+ val changes: List<PointerInputChange>,
+ val orientation: Orientation
+)
+
+@RunWith(Parameterized::class)
+class ScrollOrientationLockerTest(
+ private val lockingConfigs: List<LockingConfig>,
+ private val inputChanges: List<PointerInputChange>,
+ private val inputOrientation: Orientation,
+ private val expectedOutput: List<PointerInputChange>
+) {
+ companion object {
+ @JvmStatic
+ @Parameterized.Parameters(
+ name = "lockedConfigs = {0}, " +
+ "inputChanges = {1}, " +
+ "inputOrientation = {2}, " +
+ "expectedOutput = {3}"
+ )
+ fun parameters(): List<Array<Any?>> {
+
+ val configs = mutableListOf<Array<Any?>>()
+
+ val allPointerCombinations = listOf(
+ listOf(),
+ listOf(c1),
+ listOf(c2),
+ listOf(c1, c2)
+ )
+
+ val pointerCombinationsWith2 =
+ listOf(
+ listOf(c2),
+ listOf(c1, c2)
+ )
+
+ // If the requested orientation and the locked orientation is the same, whatever is
+ // requested is returned.
+ allPointerCombinations.forEach { locked ->
+ allPointerCombinations.forEach { input ->
+ Orientation.values().forEach { orientation ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(locked, orientation)
+ ),
+ input,
+ orientation,
+ input
+ )
+ )
+ }
+ }
+ }
+
+ // If pointer 1 is locked in orientation A, all requests with sets that include
+ // pointer 2 and in orientation B will result in the set that just includes pointer 2.
+ pointerCombinationsWith2.forEach { input ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Horizontal)
+ ),
+ input,
+ Orientation.Vertical,
+ listOf(c2)
+ )
+ )
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Vertical)
+ ),
+ input,
+ Orientation.Horizontal,
+ listOf(c2)
+ )
+ )
+ }
+
+ // If pointer 1 is locked in orientation A, and pointer 2 is locked in orientation B,
+ // all requests with sets that include pointer 2 and with orientation B will result in
+ // the set that just includes Pointer 2.
+ pointerCombinationsWith2.forEach { input ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Horizontal),
+ LockingConfig(listOf(c2), Orientation.Vertical)
+ ),
+ input,
+ Orientation.Vertical,
+ listOf(c2)
+ )
+ )
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Vertical),
+ LockingConfig(listOf(c2), Orientation.Horizontal)
+ ),
+ input,
+ Orientation.Horizontal,
+ listOf(c2)
+ )
+ )
+ }
+
+ // If all of the changes are locked to one orientation, no matter what is requested
+ // in the other, no changes will be returned.
+ allPointerCombinations.forEach { input ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1, c2), Orientation.Horizontal)
+ ),
+ input,
+ Orientation.Vertical,
+ listOf<PointerInputChange>()
+ )
+ )
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1, c2), Orientation.Vertical)
+ ),
+ input,
+ Orientation.Horizontal,
+ listOf<PointerInputChange>()
+ )
+ )
+ }
+
+ // If pointer 1 is locked in orientation A, and then is attempted to be locked in
+ // orientation B, all requests with sets that include pointer 2 and in orientation B
+ // will result in the set that just includes pointer 2.
+ pointerCombinationsWith2.forEach { input ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Horizontal),
+ LockingConfig(listOf(c1), Orientation.Vertical)
+ ),
+ input,
+ Orientation.Vertical,
+ listOf(c2)
+ )
+ )
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1), Orientation.Vertical),
+ LockingConfig(listOf(c1), Orientation.Horizontal)
+ ),
+ input,
+ Orientation.Horizontal,
+ listOf(c2)
+ )
+ )
+ }
+
+ // If all of the changes are locked to orientation A, and then are attempted to be
+ // locked in brientation B , no matter what is requested in orientation B, no changes
+ // will be returned.
+ allPointerCombinations.forEach { input ->
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1, c2), Orientation.Horizontal),
+ LockingConfig(listOf(c1, c2), Orientation.Vertical)
+ ),
+ input,
+ Orientation.Vertical,
+ listOf<PointerInputChange>()
+ )
+ )
+ configs.add(
+ arrayOf(
+ listOf(
+ LockingConfig(listOf(c1, c2), Orientation.Vertical),
+ LockingConfig(listOf(c1, c2), Orientation.Horizontal)
+
+ ),
+ input,
+ Orientation.Horizontal,
+ listOf<PointerInputChange>()
+ )
+ )
+ }
+
+ return configs
+ }
+ }
+
+ @Test
+ fun test() {
+
+ // Arrange
+
+ val customEventDispatcher: CustomEventDispatcher = mock()
+ val scrollOrientationLocker = ScrollOrientationLocker(customEventDispatcher)
+ scrollOrientationLocker.onPointerInputSetup(inputChanges, PointerEventPass.InitialDown)
+ lockingConfigs.forEach {
+ scrollOrientationLocker.attemptToLockPointers(it.changes, it.orientation)
+ }
+
+ // Act
+ val actual = scrollOrientationLocker.getPointersFor(inputChanges, inputOrientation)
+
+ // Assert
+ Truth.assertThat(expectedOutput).isEqualTo(actual)
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerDragTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerDragTest.kt
index a019b63..7b54831 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerDragTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerDragTest.kt
@@ -16,12 +16,9 @@
package androidx.ui.core.selection
-import androidx.compose.frames.commit
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
import androidx.test.filters.SmallTest
import androidx.ui.core.LayoutCoordinates
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.geometry.Offset
import com.google.common.truth.Truth.assertThat
import com.nhaarman.mockitokotlin2.any
@@ -31,7 +28,6 @@
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
-import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -55,24 +51,24 @@
private val endLayoutCoordinates = mock<LayoutCoordinates>()
private val fakeInitialSelection: Selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
)
)
private val fakeResultSelection: Selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
)
@@ -83,8 +79,6 @@
@Before
fun setup() {
- if (!inFrame) open(false) // we open a Frame so state reads are allowed
-
selectionRegistrar.subscribe(selectable)
whenever(
@@ -117,11 +111,6 @@
selectionManager.hapticFeedBack = mock()
}
- @After
- fun after() {
- commit() // we close the Frame
- }
-
@Test
fun handleDragObserver_onStart_startHandle_enable_draggingHandle_get_startHandle_info() {
selectionManager.handleDragObserver(isStartHandle = true).onStart(Offset.Zero)
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerLongPressDragTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerLongPressDragTest.kt
index a3bd118..0cc31cb 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerLongPressDragTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerLongPressDragTest.kt
@@ -16,12 +16,9 @@
package androidx.ui.core.selection
-import androidx.compose.frames.commit
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
import androidx.test.filters.SmallTest
import androidx.ui.core.LayoutCoordinates
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.geometry.Offset
import com.google.common.truth.Truth.assertThat
import com.nhaarman.mockitokotlin2.any
@@ -32,7 +29,6 @@
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
-import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -50,12 +46,12 @@
private val fakeInitialSelection: Selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
)
@@ -63,12 +59,12 @@
private val fakeResultSelection: Selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
)
@@ -80,7 +76,6 @@
@Before
fun setup() {
- if (!inFrame) open(false) // we open a Frame so state reads are allowed
val containerLayoutCoordinates = mock<LayoutCoordinates> {
on { isAttached } doReturn true
}
@@ -103,11 +98,6 @@
selectionManager.hapticFeedBack = mock()
}
- @After
- fun after() {
- commit() // we close the Frame
- }
-
@Test
fun longPressDragObserver_onLongPress_calls_getSelection_change_selection() {
val position = Offset(100f, 100f)
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerTest.kt
index 10d0605..0fa11b2 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionManagerTest.kt
@@ -16,9 +16,6 @@
package androidx.ui.core.selection
-import androidx.compose.frames.commit
-import androidx.compose.frames.inFrame
-import androidx.compose.frames.open
import androidx.test.filters.SmallTest
import androidx.ui.core.LayoutCoordinates
import androidx.ui.core.clipboard.ClipboardManager
@@ -28,7 +25,7 @@
import androidx.ui.geometry.Rect
import androidx.ui.text.AnnotatedString
import androidx.ui.text.length
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.text.subSequence
import androidx.ui.geometry.Offset
import com.google.common.truth.Truth.assertThat
@@ -40,7 +37,6 @@
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
-import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -67,12 +63,12 @@
private val fakeSelection =
Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
)
@@ -84,7 +80,6 @@
@Before
fun setup() {
- if (!inFrame) open(false) // we open a Frame so state reads are allowed
selectionRegistrar.subscribe(selectable)
selectionManager.containerLayoutCoordinates = containerLayoutCoordinates
selectionManager.hapticFeedBack = hapticFeedback
@@ -92,11 +87,6 @@
selectionManager.textToolbar = textToolbar
}
- @After
- fun after() {
- commit() // we close the Frame
- }
-
@Test
fun mergeSelections_sorting() {
whenever((containerLayoutCoordinates.childToLocal(any(), any())))
@@ -207,11 +197,11 @@
whenever(selectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -232,11 +222,11 @@
whenever(selectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -265,11 +255,11 @@
whenever(endSelectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = startSelectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = endSelectable
),
@@ -303,11 +293,11 @@
whenever(endSelectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = startSelectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = endSelectable
),
@@ -342,11 +332,11 @@
whenever(selectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -372,11 +362,11 @@
whenever(selectable.getText()).thenReturn(annotatedString)
selectionManager.selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -397,12 +387,12 @@
val fakeSelection =
Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 0,
selectable = startSelectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = 5,
selectable = endSelectable
)
diff --git a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionTest.kt b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionTest.kt
index 87b54aa..00f0ac4 100644
--- a/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionTest.kt
+++ b/ui/ui-core/src/test/kotlin/androidx/ui/core/selection/SelectionTest.kt
@@ -18,7 +18,7 @@
import androidx.test.filters.SmallTest
import androidx.ui.text.TextRange
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import com.google.common.truth.Truth.assertThat
import com.nhaarman.mockitokotlin2.mock
import org.junit.Test
@@ -30,7 +30,7 @@
class SelectionTest {
@Test
fun anchorInfo_constructor() {
- val direction = TextDirection.Ltr
+ val direction = ResolvedTextDirection.Ltr
val offset = 0
val selectable: Selectable = mock()
@@ -51,12 +51,12 @@
val endOffset = 6
val selectable: Selectable = mock()
val startAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
)
val endAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
)
@@ -79,12 +79,12 @@
val endOffset1 = 20
val selectable1: Selectable = mock()
val startAnchor1 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset1,
selectable = selectable1
)
val endAnchor1 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset1,
selectable = selectable1
)
@@ -97,12 +97,12 @@
val endOffset2 = 30
val selectable2: Selectable = mock()
val startAnchor2 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset2,
selectable = selectable2
)
val endAnchor2 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset2,
selectable = selectable2
)
@@ -127,12 +127,12 @@
val endOffset1 = 9
val selectable1: Selectable = mock()
val startAnchor1 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset1,
selectable = selectable1
)
val endAnchor1 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset1,
selectable = selectable1
)
@@ -145,12 +145,12 @@
val endOffset2 = 0
val selectable2: Selectable = mock()
val startAnchor2 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset2,
selectable = selectable2
)
val endAnchor2 = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset2,
selectable = selectable2
)
@@ -174,12 +174,12 @@
val startOffset = 0
val endOffset = 6
val startAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = mock()
)
val endAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = mock()
)
@@ -199,12 +199,12 @@
val startOffset = 6
val endOffset = 0
val startAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = mock()
)
val endAnchor = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = mock()
)
diff --git a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Matrix.kt b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Matrix.kt
index 05917ff..cb4e62ad 100644
--- a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Matrix.kt
+++ b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Matrix.kt
@@ -18,4 +18,10 @@
class Matrix() {
fun isIdentity() = true
+
+ fun reset() {
+ }
+
+ fun setTranslate(dx: Float, dy: Float) {
+ }
}
\ No newline at end of file
diff --git a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Path.kt b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Path.kt
index 42216bb..9a22979 100644
--- a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Path.kt
+++ b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/graphics/Path.kt
@@ -53,4 +53,10 @@
}
fun isConvex(): Boolean = skijaPath.isConvex
-}
\ No newline at end of file
+ fun addPath(src: Path, dx: Float, dy: Float) {
+ skijaPath.addPath(src.skijaPath, dx, dy)
+ }
+
+ fun transform(matrix: Matrix) {
+ }
+}
diff --git a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/os/Handler.kt b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/os/Handler.kt
index 25a05ac..a9d9b12 100644
--- a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/os/Handler.kt
+++ b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/os/Handler.kt
@@ -19,6 +19,7 @@
import javax.swing.SwingUtilities
public class Handler() {
+ constructor(looper: Looper) : this()
constructor(looper: Looper, callback: Handler.Callback) : this()
constructor(looper: Looper, callback: Callback, async: Boolean) : this()
diff --git a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/View.kt b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/View.kt
index 1b530d4..3e16a50 100644
--- a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/View.kt
+++ b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/View.kt
@@ -79,8 +79,6 @@
open fun onLayout (changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {}
- open fun onAttachedToWindow() {}
-
open fun dispatchDraw(canvas: Canvas) {}
open fun dispatchTouchEvent(event: MotionEvent): Boolean = true
@@ -90,6 +88,11 @@
outLocation[1] = 0
}
+ open fun getRootView(): View {
+ if (parent != null && parent is View) return (parent as View).getRootView()
+ return this
+ }
+
fun setMeasuredDimension(measuredWidth: Int, measuredHeight: Int) {}
private val tags = mutableMapOf<Int, Any?>()
@@ -100,8 +103,16 @@
tags[key] = obj
}
+ private val attachListeners = mutableListOf<View.OnAttachStateChangeListener>()
+
+ open fun addOnAttachStateChangeListener(listener: View.OnAttachStateChangeListener) {
+ attachListeners.add(listener)
+ }
+
var parent: ViewParent? = null
+ var viewTreeObserver: ViewTreeObserver? = null
+
class MeasureSpec {
companion object {
@JvmStatic
@@ -148,6 +159,10 @@
var mRecreateDisplayList: Boolean = false
+ var isAttachedToWindow = false
+
+ var isLayoutRequested = false
+
fun layout(left: Int, top: Int, right: Int, bottom: Int) {
this.left = left
this.top = top
@@ -181,4 +196,11 @@
bottom += offset
}
}
+
+ open fun onAttachedToWindow() {
+ isAttachedToWindow = true
+ attachListeners.forEach {
+ it.onViewAttachedToWindow(this)
+ }
+ }
}
diff --git a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/ViewGroup.kt b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/ViewGroup.kt
index 585f962..7d30c7d 100644
--- a/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/ViewGroup.kt
+++ b/ui/ui-desktop/android-emu/src/desktopMain/kotlin/android/view/ViewGroup.kt
@@ -26,7 +26,8 @@
abstract class ViewGroup(context: Context) : View(context), ViewParent {
var clipChildren: Boolean = true
var children = mutableListOf<View>()
- val childCount = children.count()
+ val childCount: Int
+ get() = children.count()
fun getChildAt(i: Int) = children[i]
@@ -48,6 +49,13 @@
children.add(child)
}
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ children.forEach {
+ it.onAttachedToWindow()
+ }
+ }
+
override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
fun drawChild(canvas: Canvas, view: View, drawingTime: Long): Boolean {
diff --git a/ui/ui-desktop/build.gradle b/ui/ui-desktop/build.gradle
index 3203a00..70108d1 100644
--- a/ui/ui-desktop/build.gradle
+++ b/ui/ui-desktop/build.gradle
@@ -51,7 +51,7 @@
repositories {
// To allow using local Skija build.
- mavenLocal()
+ // mavenLocal()
}
configurations {
@@ -84,14 +84,10 @@
ui_components "org.jogamp.gluegen:gluegen-rt-natives-macosx-universal:2.4.0-rc-20200306"
compose_compiler_jar project(":compose:compose-compiler")
-}
-dependencies {
kotlinPlugin project(path: ":compose:compose-compiler")
}
-def joglDir = "${project.rootDir}/ui-desktop/libs"
-def androidxDir = "${project.rootDir}/ui-desktop/libs"
def composeClassDir = project.rootDir.absolutePath + "/ui-desktop/compose-libs/"
kotlin {
@@ -100,9 +96,8 @@
sourceSets {
commonMain.dependencies {
api(KOTLIN_STDLIB_COMMON)
- implementation project(":compose:compose-runtime")
+ api project(":compose:compose-runtime")
}
-
jvmMain {
resources.srcDirs += new File(SupportConfigKt.getExternalProjectPath(project), "noto-fonts/other/")
@@ -117,24 +112,21 @@
api project(":ui:ui-desktop:android-emu")
- api files("$joglDir/gluegen-rt.jar")
- api files("$joglDir/jogl-all.jar")
-
- api fileTree(project.rootDir.absolutePath + "/ui-desktop/compose-libs")
+ api fileTree(composeClassDir)
implementation(KOTLIN_COROUTINES_SWING)
- implementation files("$androidxDir/core-common-2.1.0.jar")
implementation "androidx.lifecycle:lifecycle-common:2.3.0-alpha01"
implementation "androidx.lifecycle:lifecycle-runtime:2.3.0-alpha01"
- implementation files("$joglDir/gluegen-rt-natives-macosx-universal.jar")
- implementation files("$joglDir/jogl-all-natives-macosx-universal.jar")
-
// TODO: this is a bit ugly. We introduce dependency here, but in fact
// manually copy it later, as run task will have .aar in the classpath.
implementation "androidx.core:core:1.0.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.3.0-alpha01"
}
+
+ jvmTest.dependencies {
+ implementation(JUNIT)
+ }
}
}
@@ -201,7 +193,6 @@
fis.close()
}
-
// Find in dependencies first (BFS) task's output ending with `name`.
String findInDeps(Task root, Closure<Boolean> matcher) {
// Do BFS by deps.
@@ -242,7 +233,60 @@
fs.close()
}
-task extractJars {
+project.tasks.register("extractJars").configure {
+ inputs.files(project.provider {
+ def result = []
+ uiComponents.each { component ->
+ def depProject = project(":ui:" + component)
+ def task = depProject.tasks.named("assemble").get()
+ def srcJar = findInDeps(task, { absolutePath ->
+ absolutePath.endsWith("classes.jar") && absolutePath.contains(component)
+ })
+ result.add(file(srcJar))
+ }
+ configurations.ui_components.getIncoming().artifactView(
+ { config ->
+ config.attributes({container ->
+ // ... container.attribute(Attribute.of("artifactType", String.class), "android-classes")
+ })
+ })
+ .getArtifacts().getArtifactFiles().each { component ->
+ result.add(component)
+ }
+ def runtimeProject = project(":compose:compose-runtime")
+ def runtimeJar = findInDeps(runtimeProject.tasks.named("assemble").get(), {
+ absolutePath ->
+ Pattern.matches(".*/compose-runtime-desktop.*.jar", absolutePath)
+ })
+ if (runtimeJar == null)
+ throw new Error("cannot find compose-runtime.jar")
+ result.add(file(runtimeJar))
+
+ return result
+ })
+
+ outputs.files(project.provider {
+ def result = [fileTree(dir: composeClassDir, include: [])]
+ uiComponents.each { component ->
+ def depProject = project(":ui:" + component)
+ def task = depProject.tasks.named("assemble").get()
+ def srcJar = findInDeps(task, { absolutePath ->
+ absolutePath.endsWith("classes.jar") && absolutePath.contains(component)
+ })
+ result.add(file(composeClassDir + component + ".jar"))
+ }
+ configurations.ui_components.getIncoming().artifactView(
+ { config ->
+ config.attributes({container ->
+ // ... container.attribute(Attribute.of("artifactType", String.class), "android-classes")
+ })
+ })
+ .getArtifacts().getArtifactFiles().each { component ->
+ result.add(file(composeClassDir + component.name))
+ }
+ return result
+ })
+
doLast {
// Find all JAR files matching components.
file(composeClassDir).mkdir()
@@ -259,24 +303,6 @@
makeLinkOrCopy(srcJar, destJar)
}
}
- // Compose compiler plugin build does ugly renaming tricks, so find the proper jar.
- def compilerProject = project(":compose:compose-compiler")
- def compilerJar = findInDeps(compilerProject.tasks.named("embeddedPlugin").get(), {
- absolutePath ->
- println(absolutePath)
- Pattern.matches(".*/jarjar/compose-compiler.jar", absolutePath)
- })
- if (compilerJar == null)
- throw new Error("cannot find compose-compiler.jar")
- makeLinkOrCopy(compilerJar, composeClassDir + "compose-compiler.jar")
- def runtimeProject = project(":compose:compose-runtime")
- def runtimeJar = findInDeps(runtimeProject.tasks.named("assemble").get(), {
- absolutePath ->
- Pattern.matches(".*/compose-runtime-desktop.*.jar", absolutePath)
- })
- if (runtimeJar == null)
- throw new Error("cannot find compose-runtime.jar")
- makeLinkOrCopy(runtimeJar, composeClassDir + "compose-runtime.jar")
configurations.ui_components.getIncoming().artifactView(
{ config ->
@@ -305,13 +331,25 @@
useIR = true
}
}
-
-task desktopJar(type: Jar) {
+project.tasks.register("jar", Jar).configure {
baseName = "ui-desktop"
from { kotlin.jvm().compilations["main"].output.allOutputs }
- destinationDir file(composeClassDir)
+}
+
+project.tasks.register("test", JavaExec).configure {
+ dependsOn(":ui:ui-desktop:jar")
+ main = 'androidx.ui.desktop.RunnerKt'
+ def compilation = kotlin.jvm().compilations["test"]
+ classpath =
+ compilation.output.allOutputs +
+ compilation.runtimeDependencyFiles +
+ fileTree(composeClassDir)
}
clean.doFirst {
delete composeClassDir
+}
+
+rootProject.tasks.getByName("buildOnServer").configure {
+ dependsOn(":ui:ui-desktop:jar")
}
\ No newline at end of file
diff --git a/ui/ui-desktop/samples/build.gradle b/ui/ui-desktop/samples/build.gradle
index 675bf8d..becec20 100644
--- a/ui/ui-desktop/samples/build.gradle
+++ b/ui/ui-desktop/samples/build.gradle
@@ -35,7 +35,7 @@
jvmMain {
resources.srcDirs += "src/jvmMain/res"
}
-
+
jvmMain.dependencies {
implementation project(":ui:ui-desktop")
implementation fileTree(sdkDir)
@@ -50,7 +50,7 @@
}
task run1(type: JavaExec) {
- dependsOn(":ui:ui-desktop:desktopJar")
+ dependsOn(":ui:ui-desktop:jar")
main = 'androidx.ui.desktop.examples.example1.MainKt'
def compilation = kotlin.jvm().compilations["main"]
classpath =
@@ -60,7 +60,7 @@
}
task run2(type: JavaExec) {
- dependsOn(":ui:ui-desktop:desktopJar")
+ dependsOn(":ui:ui-desktop:jar")
main = 'androidx.ui.desktop.examples.example2.MainKt'
def compilation = kotlin.jvm().compilations["main"]
classpath =
diff --git a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
index 64b13cd..7d2298a 100644
--- a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
+++ b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
@@ -20,7 +20,6 @@
import androidx.ui.foundation.Canvas
import androidx.ui.geometry.Offset
import androidx.ui.graphics.Color
-import androidx.ui.graphics.drawscope.Stroke
import androidx.ui.graphics.drawscope.inset
import androidx.ui.graphics.drawscope.rotate
import androidx.ui.graphics.drawscope.withTransform
@@ -37,9 +36,9 @@
drawRect(Color.Magenta)
inset(10.0f) {
drawLine(
- p1 = Offset.Zero,
- p2 = Offset(size.width, size.height),
- stroke = Stroke(width = 5.0f),
+ start = Offset.Zero,
+ end = Offset(size.width, size.height),
+ strokeWidth = 5.0f,
color = Color.Red
)
}
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraph.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraph.kt
index 2e142d4..6851dbd 100644
--- a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraph.kt
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraph.kt
@@ -18,12 +18,14 @@
import androidx.ui.geometry.Rect
import androidx.ui.graphics.Canvas
import androidx.ui.graphics.Path
+import androidx.ui.graphics.AndroidPath
import androidx.ui.text.Paragraph
import androidx.ui.text.ParagraphConstraints
import androidx.ui.text.ParagraphIntrinsics
import androidx.ui.text.TextRange
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.geometry.Offset
+import org.jetbrains.skija.Paragraph as SkParagraph
internal class DesktopParagraph(
intrinsics: ParagraphIntrinsics,
@@ -53,16 +55,10 @@
get() = paragraphIntrinsics.maxIntrinsicWidth
override val firstBaseline: Float
- get() {
- println("Paragraph.firstBaseline")
- return 0.0f
- }
+ get() = para.getLineMetrics().first().baseline.toFloat()
override val lastBaseline: Float
- get() {
- println("Paragraph.lastBaseline")
- return 0.0f
- }
+ get() = para.getLineMetrics().last().baseline.toFloat()
override val didExceedMaxLines: Boolean
// TODO: support text ellipsize.
@@ -77,8 +73,17 @@
}
override fun getPathForRange(start: Int, end: Int): Path {
- println("Paragraph.getPathForRange $start $end")
- return Path()
+ val boxes = para.getRectsForRange(
+ start,
+ end,
+ SkParagraph.RectHeightStyle.MAX,
+ SkParagraph.RectWidthStyle.MAX
+ )
+ val path = Path() as AndroidPath
+ for (b in boxes) {
+ path.internalPath.skijaPath.addRect(b.rect)
+ }
+ return path
}
override fun getCursorRect(offset: Int): Rect {
@@ -146,13 +151,14 @@
return 0.0f
}
- override fun getParagraphDirection(offset: Int): TextDirection = TextDirection.Ltr
+ override fun getParagraphDirection(offset: Int): ResolvedTextDirection =
+ ResolvedTextDirection.Ltr
- override fun getBidiRunDirection(offset: Int): TextDirection = TextDirection.Ltr
+ override fun getBidiRunDirection(offset: Int): ResolvedTextDirection =
+ ResolvedTextDirection.Ltr
override fun getOffsetForPosition(position: Offset): Int {
- println("getOffsetForPosition $position")
- return 0
+ return para.getGlyphPositionAtCoordinate(position.x, position.y).position
}
override fun getBoundingBox(offset: Int): Rect {
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraphIntrinsics.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraphIntrinsics.kt
index 0116193..2354d0d 100644
--- a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraphIntrinsics.kt
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopParagraphIntrinsics.kt
@@ -36,8 +36,8 @@
val text: String,
style: TextStyle,
spanStyles: List<SpanStyleRange>,
- placeholders: List<AnnotatedString.Range<Placeholder>>,
- density: Density,
+ @Suppress("UNUSED_PARAMETER") placeholders: List<AnnotatedString.Range<Placeholder>>,
+ @Suppress("UNUSED_PARAMETER") density: Density,
resourceLoader: Font.ResourceLoader
) : ParagraphIntrinsics {
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelection.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelection.kt
new file mode 100644
index 0000000..f6dd21f
--- /dev/null
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelection.kt
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2019 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 androidx.ui.desktop
+
+import androidx.ui.core.Modifier
+import androidx.ui.core.Layout
+import androidx.ui.core.gesture.DragObserver
+import androidx.compose.Composable
+import androidx.ui.core.onPositioned
+import androidx.ui.geometry.Offset
+import kotlin.math.max
+import androidx.compose.remember
+import androidx.compose.state
+import androidx.ui.core.selection.Selection
+import androidx.ui.core.selection.SelectionRegistrarAmbient
+import androidx.compose.Providers
+import androidx.ui.core.pointerinput.PointerInputModifier
+import androidx.ui.core.pointerinput.PointerInputFilter
+import androidx.ui.core.composed
+import androidx.ui.core.gesture.rawDragGestureFilter
+import androidx.ui.core.gesture.rawPressStartGestureFilter
+
+@Composable
+private fun Wrap(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
+ Layout(modifier = modifier, children = children) { measurables, constraints ->
+ val placeables = measurables.map { measurable ->
+ measurable.measure(constraints)
+ }
+
+ val width = placeables.fold(0) { maxWidth, placeable ->
+ max(maxWidth, (placeable.width))
+ }
+
+ val height = placeables.fold(0) { minWidth, placeable ->
+ max(minWidth, (placeable.height))
+ }
+
+ layout(width, height) {
+ placeables.forEach { placeable ->
+ placeable.placeAbsolute(0, 0)
+ }
+ }
+ }
+}
+
+@Composable
+internal fun DesktopSelectionContainer(children: @Composable () -> Unit) {
+ val selection = state<Selection?> { null }
+ DesktopSelectionContainer(
+ selection = selection.value,
+ onSelectionChange = { selection.value = it },
+ children = children
+ )
+}
+
+private class PointerInputModifierImpl(override val pointerInputFilter: PointerInputFilter) :
+ PointerInputModifier
+
+private fun Modifier.selectionFilter(observer: DragObserver): Modifier = composed {
+ val glue = remember { DragGlue(observer) }
+ rawDragGestureFilter(glue, glue::started)
+ .rawPressStartGestureFilter(glue::startDrag, true)
+}
+
+private class DragGlue(val observer: DragObserver) : DragObserver by observer {
+ var started = false
+
+ fun startDrag(downPosition: Offset) {
+ started = true
+ observer.onStart(downPosition)
+ }
+
+ override fun onStop(velocity: Offset) {
+ started = false
+ observer.onStop(velocity)
+ }
+
+ override fun onCancel() {
+ started = false
+ observer.onCancel()
+ }
+}
+
+@Composable
+fun DesktopSelectionContainer(
+ selection: Selection?,
+ onSelectionChange: (Selection?) -> Unit,
+ children: @Composable () -> Unit
+) {
+ val registrarImpl = remember { DesktopSelectionRegistrar() }
+ val manager = remember { DesktopSelectionManager(registrarImpl) }
+
+ manager.onSelectionChange = onSelectionChange
+ manager.selection = selection
+
+ val gestureModifiers =
+ Modifier.selectionFilter(manager.observer)
+
+ val modifier = remember {
+ gestureModifiers.onPositioned {
+ manager.containerLayoutCoordinates = it
+ }
+ }
+
+ Providers(SelectionRegistrarAmbient provides registrarImpl) {
+ Wrap(modifier) {
+ children()
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionManager.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionManager.kt
new file mode 100644
index 0000000..9682623
--- /dev/null
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionManager.kt
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2019 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 androidx.ui.desktop
+
+import androidx.compose.getValue
+import androidx.compose.setValue
+import androidx.ui.core.LayoutCoordinates
+import androidx.ui.core.clipboard.ClipboardManager
+import androidx.ui.core.gesture.DragObserver
+import androidx.ui.geometry.Offset
+import androidx.ui.core.selection.Selection
+import androidx.ui.core.selection.Selectable
+
+internal class DesktopSelectionManager(private val selectionRegistrar: DesktopSelectionRegistrar) {
+ private var dragBeginPosition = Offset.Zero
+
+ private var dragTotalDistance = Offset.Zero
+
+ var containerLayoutCoordinates: LayoutCoordinates? = null
+
+ var clipboardManager: ClipboardManager? = null
+ var onSelectionChange: (Selection?) -> Unit = {}
+ var selection: Selection? = null
+
+ val observer = Observer()
+
+ inner class Observer : DragObserver {
+ override fun onStart(downPosition: Offset) {
+ mergeSelections(
+ startPosition = Offset(-1f, -1f),
+ endPosition = Offset(-1f, -1f),
+ previousSelection = selection
+ )
+ if (selection != null) onSelectionChange(null)
+ dragBeginPosition = downPosition
+ dragTotalDistance = Offset.Zero
+ }
+
+ override fun onDrag(dragDistance: Offset): Offset {
+ dragTotalDistance += dragDistance
+ val newSelection = mergeSelections(
+ startPosition = dragBeginPosition,
+ endPosition = dragBeginPosition + dragTotalDistance,
+ previousSelection = selection
+ )
+
+ if (newSelection != selection) onSelectionChange(newSelection)
+ return dragDistance
+ }
+ }
+
+ internal fun mergeSelections(
+ startPosition: Offset,
+ endPosition: Offset,
+ longPress: Boolean = false,
+ previousSelection: Selection? = null,
+ isStartHandle: Boolean = true
+ ): Selection? {
+
+ val newSelection = selectionRegistrar.sort(requireContainerCoordinates())
+ .fold(null) { mergedSelection: Selection?,
+ handler: Selectable ->
+ merge(
+ mergedSelection,
+ handler.getSelection(
+ startPosition = startPosition,
+ endPosition = endPosition,
+ containerLayoutCoordinates = requireContainerCoordinates(),
+ longPress = longPress,
+ previousSelection = previousSelection,
+ isStartHandle = isStartHandle
+ )
+ )
+ }
+ return newSelection
+ }
+
+ internal fun requireContainerCoordinates(): LayoutCoordinates {
+ val coordinates = containerLayoutCoordinates
+ require(coordinates != null)
+ require(coordinates.isAttached)
+ return coordinates
+ }
+}
+
+private fun merge(lhs: Selection?, rhs: Selection?): Selection? {
+ return lhs?.merge(rhs) ?: rhs
+}
\ No newline at end of file
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionRegistrar.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionRegistrar.kt
new file mode 100644
index 0000000..7c3e79e
--- /dev/null
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/DesktopSelectionRegistrar.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2019 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 androidx.ui.desktop
+
+import androidx.ui.core.LayoutCoordinates
+import androidx.ui.geometry.Offset
+import androidx.ui.core.selection.SelectionRegistrar
+import androidx.ui.core.selection.Selectable
+
+// based on androidx.ui.core.selection.SelectionRegistrarImpl
+internal class DesktopSelectionRegistrar : SelectionRegistrar {
+ internal var sorted: Boolean = false
+
+ private val _selectables = mutableListOf<Selectable>()
+ internal val selectables: List<Selectable>
+ get() = _selectables
+
+ internal var onPositionChangeCallback: (() -> Unit)? = null
+
+ override fun subscribe(selectable: Selectable): Selectable {
+ _selectables.add(selectable)
+ sorted = false
+ return selectable
+ }
+
+ override fun unsubscribe(selectable: Selectable) {
+ _selectables.remove(selectable)
+ }
+
+ fun sort(containerLayoutCoordinates: LayoutCoordinates): List<Selectable> {
+ if (!sorted) {
+ _selectables.sortWith(Comparator { a: Selectable, b: Selectable ->
+ val layoutCoordinatesA = a.getLayoutCoordinates()
+ val layoutCoordinatesB = b.getLayoutCoordinates()
+
+ val positionA =
+ if (layoutCoordinatesA != null) containerLayoutCoordinates.childToLocal(
+ layoutCoordinatesA,
+ Offset.Zero
+ )
+ else Offset.Zero
+ val positionB =
+ if (layoutCoordinatesB != null) containerLayoutCoordinates.childToLocal(
+ layoutCoordinatesB,
+ Offset.Zero
+ )
+ else Offset.Zero
+
+ if (positionA.y == positionB.y) compareValues(positionA.x, positionB.x)
+ else compareValues(positionA.y, positionB.y)
+ })
+ sorted = true
+ }
+ return selectables
+ }
+
+ override fun onPositionChange() {
+ sorted = false
+ onPositionChangeCallback?.invoke()
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/Wrapper.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/Wrapper.kt
index 9a79cff..b7d7430 100644
--- a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/Wrapper.kt
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/desktop/Wrapper.kt
@@ -63,18 +63,18 @@
ViewTreeViewModelStoreOwner.set(viewGroup, ViewModelStoreOwner {
throw IllegalStateException("ViewModels creation is not supported")
})
- viewGroup.setContent(Recomposer.current(), @Composable {
+ viewGroup.setContent(Recomposer.current(), null, @Composable {
Providers(
TextInputServiceAmbient provides TextInputService(
platformInputService),
- FontLoaderAmbient provides FontLoader(),
- children = content
- )
+ FontLoaderAmbient provides FontLoader()
+ ) {
+ DesktopSelectionContainer(children = content)
+ }
})
- val view = viewGroup.getChildAt(0)
- view.onAttachedToWindow()
+ viewGroup.onAttachedToWindow()
- this.renderer = Renderer(view, clocks, fps, platformInputService)
+ this.renderer = Renderer(viewGroup.getChildAt(0), clocks, fps, platformInputService)
this.setFps(fps)
}
}
diff --git a/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/Runner.kt b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/Runner.kt
new file mode 100644
index 0000000..02f8d34
--- /dev/null
+++ b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/Runner.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 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 androidx.ui.desktop
+
+import org.junit.runner.JUnitCore
+import org.junit.internal.TextListener
+
+fun main() {
+ val junit = JUnitCore()
+ junit.addListener(TextListener(System.out))
+ junit.run(WrapperTest::class.java)
+ System.exit(0)
+}
\ No newline at end of file
diff --git a/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/WrapperTest.kt b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/WrapperTest.kt
new file mode 100644
index 0000000..a89a873
--- /dev/null
+++ b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/WrapperTest.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright 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 androidx.ui.desktop
+
+import androidx.ui.foundation.Text
+
+import java.awt.event.WindowEvent
+import javax.swing.WindowConstants
+
+import org.junit.Test
+
+class WrapperTest {
+ @Test
+ fun wrapWindow() {
+ val frame = SkiaWindow(width = 640, height = 480)
+
+ frame.title = "Test"
+ frame.setLocation(400, 400)
+ frame.defaultCloseOperation = WindowConstants.DISPOSE_ON_CLOSE
+
+ frame.setContent {
+ Text("Simple")
+ }
+ frame.setVisible(true)
+
+ frame.dispatchEvent(WindowEvent(frame, WindowEvent.WINDOW_CLOSING))
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-foundation/api/0.1.0-dev02.txt b/ui/ui-foundation/api/0.1.0-dev02.txt
index 354be5c..1abb8f0 100644
--- a/ui/ui-foundation/api/0.1.0-dev02.txt
+++ b/ui/ui-foundation/api/0.1.0-dev02.txt
@@ -36,6 +36,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.foundation.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.DropDownAlignment[] values();
enum_constant public static final androidx.ui.foundation.DropDownAlignment Left;
enum_constant public static final androidx.ui.foundation.DropDownAlignment Right;
}
@@ -93,7 +95,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -143,11 +145,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -193,6 +195,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Checked;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Unchecked;
@@ -209,7 +213,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev04.txt b/ui/ui-foundation/api/0.1.0-dev04.txt
index 8620582..c540c99 100644
--- a/ui/ui-foundation/api/0.1.0-dev04.txt
+++ b/ui/ui-foundation/api/0.1.0-dev04.txt
@@ -98,7 +98,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -153,7 +153,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -207,11 +207,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -250,6 +250,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -266,7 +268,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev06.txt b/ui/ui-foundation/api/0.1.0-dev06.txt
index bbe332f..76240b2 100644
--- a/ui/ui-foundation/api/0.1.0-dev06.txt
+++ b/ui/ui-foundation/api/0.1.0-dev06.txt
@@ -133,7 +133,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -183,7 +183,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -223,11 +223,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -281,6 +281,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -297,7 +299,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev07.txt b/ui/ui-foundation/api/0.1.0-dev07.txt
index 34c55de..97f2278 100644
--- a/ui/ui-foundation/api/0.1.0-dev07.txt
+++ b/ui/ui-foundation/api/0.1.0-dev07.txt
@@ -135,7 +135,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -185,7 +185,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -225,11 +225,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -283,6 +283,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -299,7 +301,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev08.txt b/ui/ui-foundation/api/0.1.0-dev08.txt
index 8af31a0..c3c458d 100644
--- a/ui/ui-foundation/api/0.1.0-dev08.txt
+++ b/ui/ui-foundation/api/0.1.0-dev08.txt
@@ -148,7 +148,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -211,7 +211,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -251,11 +251,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -292,6 +292,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -308,7 +310,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev09.txt b/ui/ui-foundation/api/0.1.0-dev09.txt
index 44f493b..d4559e0 100644
--- a/ui/ui-foundation/api/0.1.0-dev09.txt
+++ b/ui/ui-foundation/api/0.1.0-dev09.txt
@@ -142,7 +142,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -213,7 +213,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -253,11 +253,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -294,6 +294,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -310,7 +312,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev10.txt b/ui/ui-foundation/api/0.1.0-dev10.txt
index 9a02460..5dd2a72 100644
--- a/ui/ui-foundation/api/0.1.0-dev10.txt
+++ b/ui/ui-foundation/api/0.1.0-dev10.txt
@@ -115,11 +115,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -162,7 +162,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -233,7 +233,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -273,11 +273,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -314,6 +314,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -330,7 +332,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev11.txt b/ui/ui-foundation/api/0.1.0-dev11.txt
index d945be8..df1c862 100644
--- a/ui/ui-foundation/api/0.1.0-dev11.txt
+++ b/ui/ui-foundation/api/0.1.0-dev11.txt
@@ -96,11 +96,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -130,7 +130,7 @@
property public final error.NonExistentClass! isAnimating;
property public final error.NonExistentClass! maxPosition;
property public final error.NonExistentClass! value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -152,7 +152,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -167,7 +167,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -225,7 +225,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -265,11 +265,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -306,6 +306,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -324,7 +326,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev12.txt b/ui/ui-foundation/api/0.1.0-dev12.txt
index 28571b6..e13a37f 100644
--- a/ui/ui-foundation/api/0.1.0-dev12.txt
+++ b/ui/ui-foundation/api/0.1.0-dev12.txt
@@ -106,11 +106,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -141,7 +141,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -163,7 +163,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -178,7 +178,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -236,7 +236,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -276,11 +276,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -317,6 +317,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -335,7 +337,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev14.txt b/ui/ui-foundation/api/0.1.0-dev14.txt
index 37de57e..157e183 100644
--- a/ui/ui-foundation/api/0.1.0-dev14.txt
+++ b/ui/ui-foundation/api/0.1.0-dev14.txt
@@ -100,11 +100,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -135,7 +135,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -157,7 +157,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -177,7 +177,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -235,7 +235,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -275,11 +275,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -346,6 +346,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -364,7 +366,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/0.1.0-dev15.txt b/ui/ui-foundation/api/0.1.0-dev15.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/0.1.0-dev15.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/current.txt b/ui/ui-foundation/api/current.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/current.txt
+++ b/ui/ui-foundation/api/current.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev02.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev02.txt
index 354be5c..1abb8f0 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev02.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev02.txt
@@ -36,6 +36,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.foundation.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.DropDownAlignment[] values();
enum_constant public static final androidx.ui.foundation.DropDownAlignment Left;
enum_constant public static final androidx.ui.foundation.DropDownAlignment Right;
}
@@ -93,7 +95,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -143,11 +145,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -193,6 +195,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Checked;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Unchecked;
@@ -209,7 +213,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev04.txt
index 8620582..c540c99 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev04.txt
@@ -98,7 +98,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -153,7 +153,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -207,11 +207,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -250,6 +250,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -266,7 +268,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev06.txt
index bbe332f..76240b2 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev06.txt
@@ -133,7 +133,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -183,7 +183,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -223,11 +223,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -281,6 +281,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -297,7 +299,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev07.txt
index 34c55de..97f2278 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev07.txt
@@ -135,7 +135,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -185,7 +185,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -225,11 +225,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -283,6 +283,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -299,7 +301,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev08.txt
index 8af31a0..c3c458d 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev08.txt
@@ -148,7 +148,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -211,7 +211,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -251,11 +251,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -292,6 +292,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -308,7 +310,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev09.txt
index 44f493b..d4559e0 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev09.txt
@@ -142,7 +142,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -213,7 +213,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -253,11 +253,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -294,6 +294,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -310,7 +312,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev10.txt
index 9a02460..5dd2a72 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev10.txt
@@ -115,11 +115,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -162,7 +162,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -233,7 +233,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -273,11 +273,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -314,6 +314,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -330,7 +332,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev11.txt
index d945be8..df1c862 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev11.txt
@@ -96,11 +96,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -130,7 +130,7 @@
property public final error.NonExistentClass! isAnimating;
property public final error.NonExistentClass! maxPosition;
property public final error.NonExistentClass! value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -152,7 +152,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -167,7 +167,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -225,7 +225,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -265,11 +265,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -306,6 +306,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -324,7 +326,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev12.txt
index 28571b6..e13a37f 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev12.txt
@@ -106,11 +106,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -141,7 +141,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -163,7 +163,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -178,7 +178,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -236,7 +236,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -276,11 +276,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -317,6 +317,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -335,7 +337,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev14.txt
index 37de57e..157e183 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev14.txt
@@ -100,11 +100,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -135,7 +135,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -157,7 +157,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -177,7 +177,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -235,7 +235,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -275,11 +275,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -346,6 +346,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -364,7 +366,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_current.txt b/ui/ui-foundation/api/public_plus_experimental_current.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/public_plus_experimental_current.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_current.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev02.txt b/ui/ui-foundation/api/restricted_0.1.0-dev02.txt
index 354be5c..1abb8f0 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev02.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev02.txt
@@ -36,6 +36,8 @@
}
public enum DropDownAlignment {
+ method public static androidx.ui.foundation.DropDownAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.DropDownAlignment[] values();
enum_constant public static final androidx.ui.foundation.DropDownAlignment Left;
enum_constant public static final androidx.ui.foundation.DropDownAlignment Right;
}
@@ -93,7 +95,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -143,11 +145,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -193,6 +195,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Checked;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Unchecked;
@@ -209,7 +213,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev04.txt b/ui/ui-foundation/api/restricted_0.1.0-dev04.txt
index 8620582..c540c99 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev04.txt
@@ -98,7 +98,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -153,7 +153,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -207,11 +207,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -250,6 +250,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -266,7 +268,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev06.txt b/ui/ui-foundation/api/restricted_0.1.0-dev06.txt
index bbe332f..76240b2 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev06.txt
@@ -133,7 +133,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -183,7 +183,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -223,11 +223,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -281,6 +281,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -297,7 +299,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev07.txt b/ui/ui-foundation/api/restricted_0.1.0-dev07.txt
index 34c55de..97f2278 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev07.txt
@@ -135,7 +135,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -185,7 +185,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -225,11 +225,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public interface DragValueController {
@@ -283,6 +283,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -299,7 +301,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev08.txt b/ui/ui-foundation/api/restricted_0.1.0-dev08.txt
index 8af31a0..c3c458d 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev08.txt
@@ -148,7 +148,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -211,7 +211,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -251,11 +251,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -292,6 +292,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -308,7 +310,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev09.txt b/ui/ui-foundation/api/restricted_0.1.0-dev09.txt
index 44f493b..d4559e0 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev09.txt
@@ -142,7 +142,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -213,7 +213,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -253,11 +253,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -294,6 +294,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -310,7 +312,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev10.txt b/ui/ui-foundation/api/restricted_0.1.0-dev10.txt
index 9a02460..5dd2a72 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev10.txt
@@ -115,11 +115,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -162,7 +162,7 @@
property public final String NotSelected;
property public final String Selected;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TableBordersKt {
@@ -233,7 +233,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -273,11 +273,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -314,6 +314,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -330,7 +332,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> InMutuallyExclusiveGroup;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev11.txt b/ui/ui-foundation/api/restricted_0.1.0-dev11.txt
index d945be8..df1c862 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev11.txt
@@ -96,11 +96,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -130,7 +130,7 @@
property public final error.NonExistentClass! isAnimating;
property public final error.NonExistentClass! maxPosition;
property public final error.NonExistentClass! value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -152,7 +152,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -167,7 +167,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -225,7 +225,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -265,11 +265,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -306,6 +306,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -324,7 +326,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev12.txt b/ui/ui-foundation/api/restricted_0.1.0-dev12.txt
index 28571b6..e13a37f 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev12.txt
@@ -106,11 +106,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -141,7 +141,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -163,7 +163,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TextFieldKt {
@@ -178,7 +178,7 @@
method public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -236,7 +236,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -276,11 +276,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -317,6 +317,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -335,7 +337,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev14.txt b/ui/ui-foundation/api/restricted_0.1.0-dev14.txt
index 37de57e..157e183 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev14.txt
@@ -100,11 +100,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -135,7 +135,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -157,7 +157,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -177,7 +177,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -235,7 +235,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -275,11 +275,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -346,6 +346,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -364,7 +366,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev15.txt b/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/api/restricted_current.txt b/ui/ui-foundation/api/restricted_current.txt
index b060774..ed7c5c6 100644
--- a/ui/ui-foundation/api/restricted_current.txt
+++ b/ui/ui-foundation/api/restricted_current.txt
@@ -99,11 +99,11 @@
}
public static final class Interaction.Dragged implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Dragged! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Dragged INSTANCE;
}
public static final class Interaction.Pressed implements androidx.ui.foundation.Interaction {
- field public static final androidx.ui.foundation.Interaction.Pressed! INSTANCE;
+ field public static final androidx.ui.foundation.Interaction.Pressed INSTANCE;
}
@androidx.compose.Stable public final class InteractionState implements androidx.compose.State<java.util.Set<? extends androidx.ui.foundation.Interaction>> {
@@ -134,7 +134,7 @@
property public final boolean isAnimating;
property public final float maxPosition;
property public final float value;
- field public static final androidx.ui.foundation.ScrollerPosition.Companion! Companion;
+ field public static final androidx.ui.foundation.ScrollerPosition.Companion Companion;
}
public static final class ScrollerPosition.Companion {
@@ -156,7 +156,7 @@
property public final String Selected;
property public final String TemplatePercent;
property public final String Unchecked;
- field public static final androidx.ui.foundation.Strings! INSTANCE;
+ field public static final androidx.ui.foundation.Strings INSTANCE;
}
public final class TemporaryKt {
@@ -176,7 +176,7 @@
method @Deprecated @androidx.compose.Immutable public androidx.ui.foundation.TextFieldValue copy(String text, androidx.ui.text.TextRange selection);
method @Deprecated public androidx.ui.text.TextRange getSelection();
method @Deprecated public String getText();
- field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion! Companion;
+ field @Deprecated public static final androidx.ui.foundation.TextFieldValue.Companion Companion;
}
@Deprecated public static final class TextFieldValue.Companion {
@@ -234,7 +234,7 @@
public final class AndroidFlingSpline {
method public double deceleration(float velocity, float friction);
method public androidx.ui.foundation.animation.AndroidFlingSpline.FlingResult flingPosition(float time);
- field public static final androidx.ui.foundation.animation.AndroidFlingSpline! INSTANCE;
+ field public static final androidx.ui.foundation.animation.AndroidFlingSpline INSTANCE;
}
public static final class AndroidFlingSpline.FlingResult {
@@ -261,7 +261,7 @@
}
public final class FlingConfigKt {
- method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationBuilder<java.lang.Float> animationBuilder = androidx.animation.PhysicsBuilder(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
+ method public static androidx.ui.foundation.animation.FlingConfig AnchorsFlingConfig(java.util.List<java.lang.Float> anchors, androidx.animation.AnimationSpec<java.lang.Float> animationSpec = androidx.animation.SpringSpec(), kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, androidx.animation.FloatDecayAnimationSpec decayAnimation = androidx.animation.ExponentialDecay());
method @androidx.compose.Composable public static androidx.ui.foundation.animation.FlingConfig FlingConfig(kotlin.jvm.functions.Function3<? super androidx.animation.AnimationEndReason,? super java.lang.Float,? super java.lang.Float,kotlin.Unit>? onAnimationEnd = null, kotlin.jvm.functions.Function1<? super java.lang.Float,androidx.animation.TargetAnimation> adjustTarget = { return null });
method public static void fling(androidx.animation.AnimatedFloat, androidx.ui.foundation.animation.FlingConfig config, float startVelocity);
}
@@ -274,11 +274,11 @@
}
public static final class DragDirection.Horizontal extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Horizontal INSTANCE;
}
public static final class DragDirection.Vertical extends androidx.ui.foundation.gestures.DragDirection {
- field public static final androidx.ui.foundation.gestures.DragDirection.Vertical! INSTANCE;
+ field public static final androidx.ui.foundation.gestures.DragDirection.Vertical INSTANCE;
}
public final class DraggableKt {
@@ -342,6 +342,8 @@
}
public enum ToggleableState {
+ method public static androidx.ui.foundation.selection.ToggleableState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.foundation.selection.ToggleableState[] values();
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Indeterminate;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState Off;
enum_constant public static final androidx.ui.foundation.selection.ToggleableState On;
@@ -360,7 +362,7 @@
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> IsDialog;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> Selected;
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.foundation.selection.ToggleableState> ToggleableState;
- field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.foundation.semantics.FoundationSemanticsProperties INSTANCE;
}
public final class FoundationSemanticsPropertiesKt {
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/ui/foundation/samples/ZoomableSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/ui/foundation/samples/ZoomableSample.kt
index 2efe08c..f502b0e 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/ui/foundation/samples/ZoomableSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/ui/foundation/samples/ZoomableSample.kt
@@ -18,10 +18,10 @@
import androidx.annotation.Sampled
import androidx.compose.Composable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.setValue
import androidx.compose.state
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.Modifier
import androidx.ui.core.clipToBounds
import androidx.ui.core.drawLayer
@@ -45,7 +45,7 @@
Modifier.preferredSize(700.dp).clipToBounds(),
backgroundColor = Color.LightGray
) {
- var scale by state(StructurallyEqual) { 1f }
+ var scale by state(structuralEqualityPolicy()) { 1f }
val zoomableState = ZoomableState { scale *= it }
Box(
diff --git a/ui/ui-foundation/src/androidTest/java/androidx/ui/foundation/DialogUiTest.kt b/ui/ui-foundation/src/androidTest/java/androidx/ui/foundation/DialogUiTest.kt
index 3670215..dbce2e5 100644
--- a/ui/ui-foundation/src/androidTest/java/androidx/ui/foundation/DialogUiTest.kt
+++ b/ui/ui-foundation/src/androidTest/java/androidx/ui/foundation/DialogUiTest.kt
@@ -15,6 +15,8 @@
*/
package androidx.ui.foundation
+import androidx.compose.Providers
+import androidx.compose.ambientOf
import androidx.compose.state
import androidx.test.filters.MediumTest
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
@@ -24,6 +26,8 @@
import androidx.ui.test.createComposeRule
import androidx.ui.test.doClick
import androidx.ui.test.findByText
+import androidx.ui.test.runOnIdleCompose
+import org.junit.Assert.assertEquals
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
@@ -175,4 +179,20 @@
// The Dialog should still be visible
findByText(defaultText).assertIsDisplayed()
}
+
+ @Test
+ fun dialog_preservesAmbients() {
+ val ambient = ambientOf<Float>()
+ var value = 0f
+ composeTestRule.setContent {
+ Providers(ambient provides 1f) {
+ Dialog(onCloseRequest = {}) {
+ value = ambient.current
+ }
+ }
+ }
+ runOnIdleCompose {
+ assertEquals(1f, value)
+ }
+ }
}
\ No newline at end of file
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Box.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Box.kt
index 42b5928..687f17e 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Box.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Box.kt
@@ -128,11 +128,10 @@
private fun Alignment.toColumnArrangement() = object : Arrangement.Vertical {
override fun arrange(
totalSize: Int,
- size: List<Int>,
- layoutDirection: LayoutDirection
+ size: List<Int>
): List<Int> {
val usedSize = size.fold(0) { sum, current -> sum + current }
- var y = align(IntSize(0, totalSize - usedSize), layoutDirection).y
+ var y = align(IntSize(0, totalSize - usedSize)).y
val positions = mutableListOf<Int>()
size.fastForEach { childSize ->
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
index 3c37f3d..bbd548f 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
@@ -23,8 +23,10 @@
import android.widget.FrameLayout
import androidx.compose.Composable
import androidx.compose.Composition
+import androidx.compose.CompositionReference
import androidx.compose.ExperimentalComposeApi
import androidx.compose.Recomposer
+import androidx.compose.compositionReference
import androidx.compose.currentComposer
import androidx.compose.onActive
import androidx.compose.onCommit
@@ -70,8 +72,11 @@
}
}
+ val composition = compositionReference()
onCommit {
- dialog.setContent {
+ dialog.setContent(composition) {
+ // TODO(b/159900354): draw a scrim and add margins around the Compose Dialog, and
+ // consume clicks so they can't pass through to the underlying UI
Box(Modifier.semantics { this.dialog = true }, children = children)
}
}
@@ -94,9 +99,11 @@
ViewTreeViewModelStoreOwner.set(frameLayout, ViewTreeViewModelStoreOwner.get(composeView))
}
- fun setContent(children: @Composable () -> Unit) {
+ // TODO(b/159900354): Make the Android Dialog full screen and the scrim fully transparent
+
+ fun setContent(parentComposition: CompositionReference, children: @Composable () -> Unit) {
// TODO: This should probably create a child composition of the original
- composition = frameLayout.setContent(recomposer, children)
+ composition = frameLayout.setContent(recomposer, parentComposition, children)
}
fun disposeComposition() {
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
index 822eaa6..bf92883 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
@@ -19,12 +19,13 @@
import androidx.animation.AnimationClockObservable
import androidx.animation.AnimationEndReason
import androidx.compose.Composable
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Stable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.AnimationClockAmbient
import androidx.ui.core.Constraints
import androidx.ui.core.Layout
@@ -116,7 +117,10 @@
/**
* current scroller position value in pixels
*/
- var value by mutableStateOf(initial, StructurallyEqual)
+ var value by mutableStateOf(
+ initial,
+ @OptIn(ExperimentalComposeApi::class) structuralEqualityPolicy()
+ )
private set
/**
@@ -129,7 +133,10 @@
* maxPosition this scroller that consume this ScrollerPosition can reach in pixels, or
* [Float.POSITIVE_INFINITY] if still unknown
*/
- var maxPosition by mutableStateOf(Float.POSITIVE_INFINITY, StructurallyEqual)
+ var maxPosition by mutableStateOf(
+ Float.POSITIVE_INFINITY,
+ @OptIn(ExperimentalComposeApi::class) structuralEqualityPolicy()
+ )
private set
/**
@@ -311,7 +318,7 @@
Layout(
modifier = modifier.clipToBounds(),
children = child,
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val childConstraints = constraints.copy(
maxHeight = if (isVertical) Constraints.Infinity else constraints.maxHeight,
maxWidth = if (isVertical) constraints.maxWidth else Constraints.Infinity
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Text.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Text.kt
index 87a2a25..73ee929 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/Text.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/Text.kt
@@ -17,9 +17,10 @@
package androidx.ui.foundation
import androidx.compose.Composable
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Providers
-import androidx.compose.StructurallyEqual
import androidx.compose.ambientOf
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.Modifier
import androidx.ui.core.semantics.semantics
import androidx.ui.graphics.Color
@@ -223,7 +224,9 @@
)
}
-private val TextStyleAmbient = ambientOf(StructurallyEqual) { TextStyle() }
+private val TextStyleAmbient = ambientOf(
+ @OptIn(ExperimentalComposeApi::class) structuralEqualityPolicy()
+) { TextStyle() }
/**
* This component is used to set the current value of the Text style ambient. The given style will
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/TextField.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/TextField.kt
index 265a3e9..977c828 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/TextField.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/TextField.kt
@@ -17,9 +17,9 @@
package androidx.ui.foundation
import androidx.animation.AnimatedValue
-import androidx.animation.Infinite
-import androidx.animation.KeyframesBuilder
-import androidx.animation.RepeatableBuilder
+import androidx.animation.AnimationConstants.Infinite
+import androidx.animation.keyframes
+import androidx.animation.repeatable
import androidx.annotation.RestrictTo
import androidx.compose.Composable
import androidx.compose.Immutable
@@ -266,15 +266,15 @@
if (cursorNeeded) {
// TODO(b/151940543): Disable blinking in tests until we handle idling animations
if (blinkingCursorEnabled) {
- animColor.animateTo(Color.Transparent, anim = RepeatableBuilder<Color>().apply {
- iterations = Infinite
- animation = KeyframesBuilder<Color>().apply {
- duration = 1000
+ animColor.animateTo(Color.Transparent, anim = repeatable(
+ iterations = Infinite,
+ animation = keyframes {
+ durationMillis = 1000
cursorColor at 0
cursorColor at 499
Color.Transparent at 500
}
- })
+ ))
} else {
animColor.snapTo(cursorColor)
}
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/animation/FlingConfig.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/animation/FlingConfig.kt
index d7dcb40..782f12e 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/animation/FlingConfig.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/animation/FlingConfig.kt
@@ -17,12 +17,12 @@
package androidx.ui.foundation.animation
import androidx.animation.AnimatedFloat
-import androidx.animation.AnimationBuilder
import androidx.animation.AnimationEndReason
-import androidx.animation.FloatDecayAnimationSpec
+import androidx.animation.AnimationSpec
import androidx.animation.ExponentialDecay
+import androidx.animation.FloatDecayAnimationSpec
import androidx.animation.OnAnimationEnd
-import androidx.animation.PhysicsBuilder
+import androidx.animation.SpringSpec
import androidx.animation.TargetAnimation
import androidx.animation.fling
import androidx.compose.Composable
@@ -112,20 +112,20 @@
* @param onAnimationEnd callback to be invoked when animation value reaches desired anchor
* or fling being interrupted by gesture input.
* Consult [AnimationEndReason] param to know what happened.
- * @param animationBuilder animation which will be used for animations
+ * @param animationSpec animation which will be used for animations
* @param decayAnimation decay animation to be used to calculate closest point in the anchors set
* considering velocity.
*/
fun AnchorsFlingConfig(
anchors: List<Float>,
- animationBuilder: AnimationBuilder<Float> = PhysicsBuilder(),
+ animationSpec: AnimationSpec<Float> = SpringSpec(),
onAnimationEnd: OnAnimationEnd? = null,
decayAnimation: FloatDecayAnimationSpec = ExponentialDecay()
): FlingConfig {
val adjustTarget: (Float) -> TargetAnimation? = { target ->
val point = anchors.minBy { abs(it - target) }
val adjusted = point ?: target
- TargetAnimation(adjusted, animationBuilder)
+ TargetAnimation(adjusted, animationSpec)
}
return FlingConfig(decayAnimation, onAnimationEnd, adjustTarget)
}
\ No newline at end of file
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/gestures/Zoomable.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/gestures/Zoomable.kt
index 81c5875..d4f5297 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/gestures/Zoomable.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/gestures/Zoomable.kt
@@ -19,8 +19,8 @@
import androidx.animation.AnimatedFloat
import androidx.animation.AnimationClockObservable
import androidx.animation.AnimationEndReason
-import androidx.animation.PhysicsBuilder
import androidx.animation.Spring
+import androidx.animation.SpringSpec
import androidx.compose.Composable
import androidx.compose.remember
import androidx.ui.animation.asDisposableClock
@@ -67,7 +67,7 @@
animatedFloat.animateTo(
to,
onEnd = onEnd,
- anim = PhysicsBuilder(stiffness = Spring.StiffnessLow)
+ anim = SpringSpec(stiffness = Spring.StiffnessLow)
)
}
diff --git a/ui/ui-foundation/src/main/java/androidx/ui/foundation/lazy/LazyItemsState.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/lazy/LazyItemsState.kt
index 53af4ac..ebcacc2 100644
--- a/ui/ui-foundation/src/main/java/androidx/ui/foundation/lazy/LazyItemsState.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/lazy/LazyItemsState.kt
@@ -17,12 +17,12 @@
package androidx.ui.foundation.lazy
import androidx.compose.Composable
+import androidx.compose.ComposableContract
import androidx.compose.Composition
import androidx.compose.CompositionReference
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.FrameManager
import androidx.compose.Recomposer
-import androidx.compose.Untracked
+import androidx.compose.snapshots.Snapshot
import androidx.ui.core.Constraints
import androidx.ui.core.LayoutDirection
import androidx.ui.core.LayoutNode
@@ -265,8 +265,9 @@
// if there were models created and read inside this subcomposition
// and we are going to modify these models within the same frame,
// the composables which read this model will not be recomposed.
- // to make this possible we should switch to the next frame.
- FrameManager.nextFrame()
+ // to make this possible we should switch apply global changes.
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.notifyObjectsInitialized()
}
[email protected] = layoutDirection
@@ -468,9 +469,13 @@
} else {
node = rootNode.children[layoutIndex.value]
}
- // TODO(b/150390669): Review use of @Untracked
+ // TODO(b/150390669): Review use of @ComposableContract(tracked = false)
@OptIn(ExperimentalComposeApi::class)
- val composition = subcomposeInto(node, recomposer, compositionRef) @Untracked {
+ val composition = subcomposeInto(
+ node,
+ recomposer,
+ compositionRef
+ ) @ComposableContract(tracked = false) {
itemContent(items[dataIndex.value])
}
compositionsForLayoutNodes[node] = composition
@@ -478,7 +483,7 @@
}
private val ListItemMeasureBlocks =
- MeasuringIntrinsicsMeasureBlocks { measurables, constraints, _ ->
+ MeasuringIntrinsicsMeasureBlocks { measurables, constraints ->
val placeables = measurables.map { it.measure(constraints) }
val mainAxisSize = placeables.sumBy { it.mainAxisSize }
val crossAxisSize = placeables.maxBy { it.crossAxisSize }?.crossAxisSize ?: 0
diff --git a/ui/ui-geometry/api/0.1.0-dev04.txt b/ui/ui-geometry/api/0.1.0-dev04.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/0.1.0-dev04.txt
+++ b/ui/ui-geometry/api/0.1.0-dev04.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev06.txt b/ui/ui-geometry/api/0.1.0-dev06.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/0.1.0-dev06.txt
+++ b/ui/ui-geometry/api/0.1.0-dev06.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev07.txt b/ui/ui-geometry/api/0.1.0-dev07.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/0.1.0-dev07.txt
+++ b/ui/ui-geometry/api/0.1.0-dev07.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev08.txt b/ui/ui-geometry/api/0.1.0-dev08.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/0.1.0-dev08.txt
+++ b/ui/ui-geometry/api/0.1.0-dev08.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev09.txt b/ui/ui-geometry/api/0.1.0-dev09.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/0.1.0-dev09.txt
+++ b/ui/ui-geometry/api/0.1.0-dev09.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev10.txt b/ui/ui-geometry/api/0.1.0-dev10.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/0.1.0-dev10.txt
+++ b/ui/ui-geometry/api/0.1.0-dev10.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev11.txt b/ui/ui-geometry/api/0.1.0-dev11.txt
index 5e098bc..8ae27e4 100644
--- a/ui/ui-geometry/api/0.1.0-dev11.txt
+++ b/ui/ui-geometry/api/0.1.0-dev11.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev12.txt b/ui/ui-geometry/api/0.1.0-dev12.txt
index 62163bf..45ddd50 100644
--- a/ui/ui-geometry/api/0.1.0-dev12.txt
+++ b/ui/ui-geometry/api/0.1.0-dev12.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev14.txt b/ui/ui-geometry/api/0.1.0-dev14.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/0.1.0-dev14.txt
+++ b/ui/ui-geometry/api/0.1.0-dev14.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/0.1.0-dev15.txt b/ui/ui-geometry/api/0.1.0-dev15.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/0.1.0-dev15.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/api_lint.ignore b/ui/ui-geometry/api/api_lint.ignore
index c3e3a08..db1ca8b 100644
--- a/ui/ui-geometry/api/api_lint.ignore
+++ b/ui/ui-geometry/api/api_lint.ignore
@@ -3,3 +3,11 @@
Acronyms should not be capitalized in method names: was `fromLTRB`, should this be `fromLtrb`?
AcronymName: androidx.ui.geometry.Rect.Companion#fromLTWH(float, float, float, float):
Acronyms should not be capitalized in method names: was `fromLTWH`, should this be `fromLtwh`?
+
+
+KotlinOperator: androidx.ui.geometry.RRect#contains(androidx.ui.geometry.Offset):
+ Note that adding the `operator` keyword would allow calling this method using operator syntax
+KotlinOperator: androidx.ui.geometry.Rect#contains(androidx.ui.geometry.Offset):
+ Note that adding the `operator` keyword would allow calling this method using operator syntax
+KotlinOperator: androidx.ui.geometry.Size#contains(androidx.ui.geometry.Offset):
+ Note that adding the `operator` keyword would allow calling this method using operator syntax
diff --git a/ui/ui-geometry/api/current.txt b/ui/ui-geometry/api/current.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/current.txt
+++ b/ui/ui-geometry/api/current.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev04.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev04.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev06.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev06.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev07.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev07.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev08.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev08.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev09.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev09.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev10.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev10.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev11.txt
index 5e098bc..8ae27e4 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev11.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev12.txt
index 62163bf..45ddd50 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev12.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev14.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev14.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/public_plus_experimental_current.txt b/ui/ui-geometry/api/public_plus_experimental_current.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/public_plus_experimental_current.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_current.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev04.txt b/ui/ui-geometry/api/restricted_0.1.0-dev04.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev04.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev06.txt b/ui/ui-geometry/api/restricted_0.1.0-dev06.txt
index ea43f9d..ca23060 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev06.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -188,7 +188,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -237,7 +237,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev07.txt b/ui/ui-geometry/api/restricted_0.1.0-dev07.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev07.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev08.txt b/ui/ui-geometry/api/restricted_0.1.0-dev08.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev08.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev09.txt b/ui/ui-geometry/api/restricted_0.1.0-dev09.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev09.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev10.txt b/ui/ui-geometry/api/restricted_0.1.0-dev10.txt
index 4ad12c3..f31ac63 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev10.txt
@@ -21,7 +21,7 @@
method public androidx.ui.geometry.Offset translate(float translateX, float translateY);
method public androidx.ui.geometry.Offset truncDiv(float operand);
method public operator androidx.ui.geometry.Offset unaryMinus();
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -81,7 +81,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -136,7 +136,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
method public androidx.ui.geometry.Rect translate(float translateX, float translateY);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -238,7 +238,7 @@
method public final androidx.ui.geometry.Size truncDiv(float operand);
property public float dx;
property public float dy;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev11.txt b/ui/ui-geometry/api/restricted_0.1.0-dev11.txt
index 5e098bc..8ae27e4 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev11.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev12.txt b/ui/ui-geometry/api/restricted_0.1.0-dev12.txt
index 62163bf..45ddd50 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev12.txt
@@ -23,7 +23,7 @@
method public static long translate-impl(long $this, float translateX, float translateY);
method public static long truncDiv-impl(long $this, float operand);
method public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -87,7 +87,7 @@
method @Deprecated public androidx.ui.geometry.RRect inflate(float delta);
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -142,7 +142,7 @@
method public operator androidx.ui.geometry.Radius times(float operand);
method public androidx.ui.geometry.Radius truncDiv(float operand);
method public operator androidx.ui.geometry.Radius unaryMinus();
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -197,7 +197,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -247,7 +247,7 @@
method public static long topLeft-RIqb49o(long $this, long origin);
method public static long topRight-RIqb49o(long $this, long origin);
method public static long truncDiv-impl(long $this, float operand);
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev14.txt b/ui/ui-geometry/api/restricted_0.1.0-dev14.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev14.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev15.txt b/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-geometry/api/restricted_current.txt b/ui/ui-geometry/api/restricted_current.txt
index 6420059..f20e212 100644
--- a/ui/ui-geometry/api/restricted_current.txt
+++ b/ui/ui-geometry/api/restricted_current.txt
@@ -17,7 +17,7 @@
method @androidx.compose.Stable public operator androidx.ui.geometry.Offset unaryMinus();
property public final float x;
property public final float y;
- field public static final androidx.ui.geometry.Offset.Companion! Companion;
+ field public static final androidx.ui.geometry.Offset.Companion Companion;
}
public static final class Offset.Companion {
@@ -78,7 +78,7 @@
method public static androidx.ui.geometry.RRect getZero();
property public final float height;
property public final float width;
- field public static final androidx.ui.geometry.RRect.Companion! Companion;
+ field public static final androidx.ui.geometry.RRect.Companion Companion;
}
public static final class RRect.Companion {
@@ -135,7 +135,7 @@
method public static String toString-impl(long $this);
method public static long truncDiv-impl(long $this, float operand);
method @androidx.compose.Stable public static operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.geometry.Radius.Companion! Companion;
+ field public static final androidx.ui.geometry.Radius.Companion Companion;
}
public static final class Radius.Companion {
@@ -189,7 +189,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Rect.Companion! Companion;
+ field public static final androidx.ui.geometry.Rect.Companion Companion;
}
public static final class Rect.Companion {
@@ -239,7 +239,7 @@
property public final float maxDimension;
property public final float minDimension;
property public final float width;
- field public static final androidx.ui.geometry.Size.Companion! Companion;
+ field public static final androidx.ui.geometry.Size.Companion Companion;
}
public static final class Size.Companion {
diff --git a/ui/ui-graphics/api/0.1.0-dev04.txt b/ui/ui-graphics/api/0.1.0-dev04.txt
index 18bfe36..93b8b4d 100644
--- a/ui/ui-graphics/api/0.1.0-dev04.txt
+++ b/ui/ui-graphics/api/0.1.0-dev04.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -115,6 +119,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -133,7 +139,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -184,6 +190,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -215,6 +223,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -236,7 +246,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -318,6 +328,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -362,7 +374,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -370,11 +382,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -397,6 +413,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -408,7 +426,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -473,12 +491,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -486,6 +508,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -499,6 +523,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -522,6 +548,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -529,6 +557,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -593,7 +623,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -623,10 +653,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -747,7 +779,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -988,7 +1020,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1068,7 +1100,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1095,6 +1127,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1383,6 +1417,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev06.txt b/ui/ui-graphics/api/0.1.0-dev06.txt
index 1e1a708..223f0ed 100644
--- a/ui/ui-graphics/api/0.1.0-dev06.txt
+++ b/ui/ui-graphics/api/0.1.0-dev06.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -116,6 +120,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -134,7 +140,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -185,6 +191,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -216,6 +224,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -237,7 +247,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -323,6 +333,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -367,7 +379,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -375,11 +387,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -402,6 +418,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -413,7 +431,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -461,7 +479,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -486,12 +504,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -499,6 +521,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -512,6 +536,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -535,6 +561,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -542,6 +570,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -606,7 +636,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -636,10 +666,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -796,7 +828,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1037,7 +1069,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1117,7 +1149,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1144,6 +1176,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1432,6 +1466,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev07.txt b/ui/ui-graphics/api/0.1.0-dev07.txt
index 24fd8da..e51a9f4 100644
--- a/ui/ui-graphics/api/0.1.0-dev07.txt
+++ b/ui/ui-graphics/api/0.1.0-dev07.txt
@@ -24,6 +24,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -56,6 +58,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -117,6 +121,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -135,7 +141,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -186,6 +192,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -220,6 +228,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -241,7 +251,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -327,6 +337,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -371,7 +383,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -379,11 +391,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -406,6 +422,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -417,7 +435,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -465,7 +483,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -490,12 +508,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -503,6 +525,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -516,6 +540,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -539,6 +565,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -546,6 +574,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -610,7 +640,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -640,10 +670,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -800,7 +832,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1041,7 +1073,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1121,7 +1153,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1148,6 +1180,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1436,6 +1470,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev08.txt b/ui/ui-graphics/api/0.1.0-dev08.txt
index 3ba0e42..c9e9cba 100644
--- a/ui/ui-graphics/api/0.1.0-dev08.txt
+++ b/ui/ui-graphics/api/0.1.0-dev08.txt
@@ -63,6 +63,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -95,6 +97,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -156,6 +160,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -174,7 +180,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -211,7 +217,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -230,6 +236,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -264,6 +272,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -285,7 +295,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -371,6 +381,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -404,7 +416,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -412,11 +424,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -439,6 +455,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -450,7 +468,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -498,7 +516,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -523,12 +541,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -536,6 +558,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -549,6 +573,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -572,6 +598,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -579,6 +607,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -643,7 +673,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -673,10 +703,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -833,7 +865,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1074,7 +1106,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1154,7 +1186,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1181,6 +1213,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1469,6 +1503,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev09.txt b/ui/ui-graphics/api/0.1.0-dev09.txt
index ece7b13..c28f8e9 100644
--- a/ui/ui-graphics/api/0.1.0-dev09.txt
+++ b/ui/ui-graphics/api/0.1.0-dev09.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -96,6 +98,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -157,6 +161,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -175,7 +181,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -212,7 +218,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +237,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -256,6 +264,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -278,7 +288,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -364,6 +374,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -397,7 +409,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -405,11 +417,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -442,6 +458,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -478,7 +496,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -503,12 +521,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -516,6 +538,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -529,6 +553,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -552,6 +578,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -559,6 +587,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -623,7 +653,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -653,10 +683,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -813,7 +845,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1054,7 +1086,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1134,7 +1166,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1161,6 +1193,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1449,6 +1483,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev10.txt b/ui/ui-graphics/api/0.1.0-dev10.txt
index 4197e1f..924ee4b 100644
--- a/ui/ui-graphics/api/0.1.0-dev10.txt
+++ b/ui/ui-graphics/api/0.1.0-dev10.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -152,6 +154,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -171,7 +175,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -209,7 +213,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +235,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -256,6 +262,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -346,6 +354,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -379,7 +389,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -387,11 +397,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -424,6 +438,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -466,7 +482,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -490,12 +506,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -503,6 +523,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -516,6 +538,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -539,6 +563,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -546,6 +572,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -610,7 +638,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -640,10 +668,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -801,7 +831,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1042,7 +1072,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1122,7 +1152,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1149,6 +1179,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1437,6 +1469,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev11.txt b/ui/ui-graphics/api/0.1.0-dev11.txt
index 7093de7..6ec80e7 100644
--- a/ui/ui-graphics/api/0.1.0-dev11.txt
+++ b/ui/ui-graphics/api/0.1.0-dev11.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -155,6 +157,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -179,7 +183,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -217,7 +221,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -239,6 +243,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -264,6 +270,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -356,6 +364,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -389,7 +399,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -397,11 +407,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -434,6 +448,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -476,7 +492,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -500,12 +516,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -513,6 +533,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -526,6 +548,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -549,6 +573,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -556,6 +582,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -620,7 +648,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -650,10 +678,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
method public final long getSize();
property public final long center;
property public final long size;
- field public static final androidx.ui.graphics.painter.CanvasScope.Companion! Companion;
+ field public static final androidx.ui.graphics.painter.CanvasScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
}
@@ -806,7 +836,7 @@
}
public final class Fill extends androidx.ui.graphics.painter.DrawStyle {
- field public static final androidx.ui.graphics.painter.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.painter.Fill INSTANCE;
}
public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
@@ -896,7 +926,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1137,7 +1167,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1217,7 +1247,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1244,6 +1274,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1532,6 +1564,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev12.txt b/ui/ui-graphics/api/0.1.0-dev12.txt
index 9936f24..09cd0a0 100644
--- a/ui/ui-graphics/api/0.1.0-dev12.txt
+++ b/ui/ui-graphics/api/0.1.0-dev12.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -160,6 +162,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -184,7 +188,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -222,7 +226,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -244,6 +248,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -269,6 +275,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -361,6 +369,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -394,7 +404,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -402,11 +412,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -439,6 +453,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -481,7 +497,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -505,12 +521,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -518,6 +538,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -531,6 +553,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -554,6 +578,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -561,6 +587,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -625,7 +653,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -655,10 +683,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -770,7 +800,7 @@
property public final long center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final long size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
}
@@ -804,7 +834,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -907,7 +937,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1148,7 +1178,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1228,7 +1258,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1255,6 +1285,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1543,6 +1575,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev14.txt b/ui/ui-graphics/api/0.1.0-dev14.txt
index d402782..1412396 100644
--- a/ui/ui-graphics/api/0.1.0-dev14.txt
+++ b/ui/ui-graphics/api/0.1.0-dev14.txt
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -409,7 +419,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/0.1.0-dev15.txt b/ui/ui-graphics/api/0.1.0-dev15.txt
index d402782..6ca84af 100644
--- a/ui/ui-graphics/api/0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/0.1.0-dev15.txt
@@ -44,14 +44,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -395,21 +405,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -865,25 +895,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1028,70 +1058,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/current.txt b/ui/ui-graphics/api/current.txt
index d402782..6ca84af 100644
--- a/ui/ui-graphics/api/current.txt
+++ b/ui/ui-graphics/api/current.txt
@@ -44,14 +44,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -395,21 +405,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -865,25 +895,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1028,70 +1058,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev04.txt
index 18bfe36..93b8b4d 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev04.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -115,6 +119,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -133,7 +139,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -184,6 +190,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -215,6 +223,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -236,7 +246,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -318,6 +328,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -362,7 +374,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -370,11 +382,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -397,6 +413,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -408,7 +426,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -473,12 +491,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -486,6 +508,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -499,6 +523,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -522,6 +548,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -529,6 +557,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -593,7 +623,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -623,10 +653,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -747,7 +779,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -988,7 +1020,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1068,7 +1100,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1095,6 +1127,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1383,6 +1417,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev06.txt
index 1e1a708..223f0ed 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev06.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -116,6 +120,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -134,7 +140,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -185,6 +191,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -216,6 +224,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -237,7 +247,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -323,6 +333,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -367,7 +379,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -375,11 +387,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -402,6 +418,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -413,7 +431,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -461,7 +479,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -486,12 +504,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -499,6 +521,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -512,6 +536,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -535,6 +561,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -542,6 +570,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -606,7 +636,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -636,10 +666,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -796,7 +828,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1037,7 +1069,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1117,7 +1149,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1144,6 +1176,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1432,6 +1466,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev07.txt
index 24fd8da..e51a9f4 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev07.txt
@@ -24,6 +24,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -56,6 +58,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -117,6 +121,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -135,7 +141,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -186,6 +192,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -220,6 +228,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -241,7 +251,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -327,6 +337,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -371,7 +383,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -379,11 +391,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -406,6 +422,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -417,7 +435,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -465,7 +483,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -490,12 +508,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -503,6 +525,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -516,6 +540,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -539,6 +565,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -546,6 +574,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -610,7 +640,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -640,10 +670,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -800,7 +832,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1041,7 +1073,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1121,7 +1153,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1148,6 +1180,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1436,6 +1470,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev08.txt
index 3ba0e42..c9e9cba 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev08.txt
@@ -63,6 +63,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -95,6 +97,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -156,6 +160,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -174,7 +180,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -211,7 +217,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -230,6 +236,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -264,6 +272,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -285,7 +295,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -371,6 +381,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -404,7 +416,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -412,11 +424,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -439,6 +455,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -450,7 +468,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -498,7 +516,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -523,12 +541,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -536,6 +558,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -549,6 +573,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -572,6 +598,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -579,6 +607,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -643,7 +673,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -673,10 +703,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -833,7 +865,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1074,7 +1106,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1154,7 +1186,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1181,6 +1213,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1469,6 +1503,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev09.txt
index ece7b13..c28f8e9 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev09.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -96,6 +98,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -157,6 +161,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -175,7 +181,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -212,7 +218,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +237,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -256,6 +264,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -278,7 +288,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -364,6 +374,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -397,7 +409,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -405,11 +417,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -442,6 +458,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -478,7 +496,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -503,12 +521,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -516,6 +538,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -529,6 +553,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -552,6 +578,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -559,6 +587,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -623,7 +653,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -653,10 +683,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -813,7 +845,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1054,7 +1086,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1134,7 +1166,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1161,6 +1193,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1449,6 +1483,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev10.txt
index 4197e1f..924ee4b 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev10.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -152,6 +154,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -171,7 +175,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -209,7 +213,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +235,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -256,6 +262,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -346,6 +354,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -379,7 +389,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -387,11 +397,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -424,6 +438,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -466,7 +482,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -490,12 +506,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -503,6 +523,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -516,6 +538,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -539,6 +563,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -546,6 +572,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -610,7 +638,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -640,10 +668,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -801,7 +831,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1042,7 +1072,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1122,7 +1152,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1149,6 +1179,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1437,6 +1469,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev11.txt
index 7093de7..6ec80e7 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev11.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -155,6 +157,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -179,7 +183,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -217,7 +221,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -239,6 +243,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -264,6 +270,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -356,6 +364,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -389,7 +399,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -397,11 +407,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -434,6 +448,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -476,7 +492,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -500,12 +516,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -513,6 +533,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -526,6 +548,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -549,6 +573,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -556,6 +582,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -620,7 +648,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -650,10 +678,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
method public final long getSize();
property public final long center;
property public final long size;
- field public static final androidx.ui.graphics.painter.CanvasScope.Companion! Companion;
+ field public static final androidx.ui.graphics.painter.CanvasScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
}
@@ -806,7 +836,7 @@
}
public final class Fill extends androidx.ui.graphics.painter.DrawStyle {
- field public static final androidx.ui.graphics.painter.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.painter.Fill INSTANCE;
}
public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
@@ -896,7 +926,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1137,7 +1167,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1217,7 +1247,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1244,6 +1274,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1532,6 +1564,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev12.txt
index 9936f24..09cd0a0 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev12.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -160,6 +162,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -184,7 +188,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -222,7 +226,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -244,6 +248,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -269,6 +275,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -361,6 +369,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -394,7 +404,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -402,11 +412,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -439,6 +453,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -481,7 +497,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -505,12 +521,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -518,6 +538,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -531,6 +553,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -554,6 +578,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -561,6 +587,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -625,7 +653,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -655,10 +683,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -770,7 +800,7 @@
property public final long center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final long size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
}
@@ -804,7 +834,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -907,7 +937,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1148,7 +1178,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1228,7 +1258,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1255,6 +1285,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1543,6 +1575,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev14.txt
index d402782..1412396 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev14.txt
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -409,7 +419,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
index d402782..6ca84af 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
@@ -44,14 +44,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -395,21 +405,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -865,25 +895,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1028,70 +1058,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/public_plus_experimental_current.txt b/ui/ui-graphics/api/public_plus_experimental_current.txt
index d402782..6ca84af 100644
--- a/ui/ui-graphics/api/public_plus_experimental_current.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_current.txt
@@ -44,14 +44,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -78,6 +78,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -174,6 +176,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -198,7 +202,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -236,7 +240,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -258,6 +262,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -283,6 +289,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -376,6 +384,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -395,21 +405,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -417,11 +427,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +454,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -482,7 +498,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -506,24 +522,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -547,6 +571,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -554,6 +580,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -618,7 +646,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -648,10 +676,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -750,7 +780,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
}
public static final class DrawScope.Companion {
@@ -797,7 +827,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -814,7 +844,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -865,25 +895,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -911,7 +941,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1028,70 +1058,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1149,7 +1179,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1229,7 +1259,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1256,6 +1286,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1544,6 +1576,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev04.txt b/ui/ui-graphics/api/restricted_0.1.0-dev04.txt
index ecceffc..6fbca6b 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev04.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -115,6 +119,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -134,7 +140,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -185,6 +191,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -216,6 +224,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -237,7 +247,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -319,6 +329,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -363,7 +375,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -371,11 +383,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -398,6 +414,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -409,7 +427,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -474,12 +492,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -487,6 +509,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -500,6 +524,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -523,6 +549,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -530,6 +558,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -594,7 +624,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -624,10 +654,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -748,7 +780,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -989,7 +1021,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1069,7 +1101,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1096,6 +1128,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1384,6 +1418,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev06.txt b/ui/ui-graphics/api/restricted_0.1.0-dev06.txt
index c4fbaa1..ddbbc30 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev06.txt
@@ -23,6 +23,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -55,6 +57,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -116,6 +120,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -135,7 +141,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -186,6 +192,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -217,6 +225,8 @@
}
public enum ImageConfig {
+ method public static androidx.ui.graphics.ImageConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageConfig F16;
@@ -238,7 +248,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -324,6 +334,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -368,7 +380,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -376,11 +388,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -403,6 +419,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -414,7 +432,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -462,7 +480,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -487,12 +505,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -500,6 +522,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -513,6 +537,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -536,6 +562,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -543,6 +571,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -607,7 +637,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -637,10 +667,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -797,7 +829,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1038,7 +1070,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1118,7 +1150,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1145,6 +1177,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1433,6 +1467,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev07.txt b/ui/ui-graphics/api/restricted_0.1.0-dev07.txt
index 7c8676b..5450a1e 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev07.txt
@@ -24,6 +24,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -56,6 +58,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -117,6 +121,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -136,7 +142,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -187,6 +193,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -221,6 +229,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -242,7 +252,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -328,6 +338,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -372,7 +384,7 @@
method public androidx.ui.graphics.Path transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
property public final boolean isConvex;
property public final boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -380,11 +392,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -407,6 +423,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -418,7 +436,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -466,7 +484,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -491,12 +509,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -504,6 +526,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -517,6 +541,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -540,6 +566,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -547,6 +575,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -611,7 +641,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -641,10 +671,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -801,7 +833,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1042,7 +1074,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1122,7 +1154,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1149,6 +1181,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1437,6 +1471,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev08.txt b/ui/ui-graphics/api/restricted_0.1.0-dev08.txt
index 2d52633..b602cfb 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev08.txt
@@ -63,6 +63,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -95,6 +97,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -156,6 +160,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -175,7 +181,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -212,7 +218,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +237,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -265,6 +273,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -286,7 +296,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -372,6 +382,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -405,7 +417,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -413,11 +425,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -440,6 +456,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -451,7 +469,7 @@
public interface ScaleFit {
method public float scale(androidx.ui.unit.PxSize srcSize, androidx.ui.unit.PxSize dstSize);
- field public static final androidx.ui.graphics.ScaleFit.Companion! Companion;
+ field public static final androidx.ui.graphics.ScaleFit.Companion Companion;
}
public static final class ScaleFit.Companion {
@@ -499,7 +517,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -524,12 +542,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -537,6 +559,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -550,6 +574,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -573,6 +599,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -580,6 +608,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -644,7 +674,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -674,10 +704,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -834,7 +866,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1075,7 +1107,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1155,7 +1187,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1182,6 +1214,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1470,6 +1504,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev09.txt b/ui/ui-graphics/api/restricted_0.1.0-dev09.txt
index d348f5c..78176ef 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev09.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -96,6 +98,8 @@
}
public enum BlurStyle {
+ method public static androidx.ui.graphics.BlurStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlurStyle[] values();
enum_constant public static final androidx.ui.graphics.BlurStyle inner;
enum_constant public static final androidx.ui.graphics.BlurStyle normal;
enum_constant public static final androidx.ui.graphics.BlurStyle outer;
@@ -157,6 +161,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -176,7 +182,7 @@
property public final androidx.ui.graphics.colorspace.ColorSpace colorSpace;
property public final float green;
property public final float red;
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -213,7 +219,7 @@
method public androidx.ui.graphics.ColorFilter copy(androidx.ui.graphics.Color color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public androidx.ui.graphics.Color getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -232,6 +238,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -257,6 +265,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -279,7 +289,7 @@
method public androidx.ui.graphics.MaskFilter copy(androidx.ui.graphics.BlurStyle style, float sigma);
method public float getSigma();
method public androidx.ui.graphics.BlurStyle getStyle();
- field public static final androidx.ui.graphics.MaskFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.MaskFilter.Companion Companion;
field public static final int TYPE_BLUR = 1; // 0x1
field public static final int TYPE_NONE = 0; // 0x0
}
@@ -365,6 +375,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -398,7 +410,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -406,11 +418,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -443,6 +459,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -479,7 +497,7 @@
method public androidx.ui.unit.Px getBlurRadius();
method public androidx.ui.graphics.Color getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -504,12 +522,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -517,6 +539,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -530,6 +554,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -553,6 +579,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -560,6 +588,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -624,7 +654,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -654,10 +684,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -814,7 +846,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1055,7 +1087,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1135,7 +1167,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1162,6 +1194,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1450,6 +1484,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev10.txt b/ui/ui-graphics/api/restricted_0.1.0-dev10.txt
index 4197e1f..924ee4b 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev10.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -152,6 +154,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -171,7 +175,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -209,7 +213,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -231,6 +235,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -256,6 +262,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -346,6 +354,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -379,7 +389,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -387,11 +397,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -424,6 +438,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -466,7 +482,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -490,12 +506,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -503,6 +523,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -516,6 +538,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -539,6 +563,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -546,6 +572,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -610,7 +638,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -640,10 +668,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -801,7 +831,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1042,7 +1072,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1122,7 +1152,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1149,6 +1179,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1437,6 +1469,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev11.txt b/ui/ui-graphics/api/restricted_0.1.0-dev11.txt
index c1e900b..ffdabd1c 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev11.txt
@@ -64,6 +64,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -155,6 +157,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -179,7 +183,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -217,7 +221,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -239,6 +243,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -264,6 +270,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -356,6 +364,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -389,7 +399,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -397,11 +407,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -434,6 +448,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -476,7 +492,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -500,12 +516,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -513,6 +533,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -526,6 +548,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -549,6 +573,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -556,6 +582,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -620,7 +648,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -650,10 +678,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -751,7 +781,7 @@
method @kotlin.PublishedApi internal final void setSize-b2zCL34(long size);
property public final long center;
property public final long size;
- field public static final androidx.ui.graphics.painter.CanvasScope.Companion! Companion;
+ field public static final androidx.ui.graphics.painter.CanvasScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas? canvas;
field @kotlin.PublishedApi internal final androidx.ui.graphics.painter.CanvasTransform transform;
@@ -809,7 +839,7 @@
}
public final class Fill extends androidx.ui.graphics.painter.DrawStyle {
- field public static final androidx.ui.graphics.painter.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.painter.Fill INSTANCE;
}
public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
@@ -899,7 +929,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1140,7 +1170,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1220,7 +1250,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1247,6 +1277,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1535,6 +1567,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev12.txt b/ui/ui-graphics/api/restricted_0.1.0-dev12.txt
index 1e223f7..7c3879d 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev12.txt
@@ -97,6 +97,8 @@
public enum BlendMode {
method public final android.graphics.PorterDuff.Mode toPorterDuffMode();
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -194,6 +196,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -218,7 +222,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -256,7 +260,7 @@
method public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -278,6 +282,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -303,6 +309,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -395,6 +403,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -428,7 +438,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -436,11 +446,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -473,6 +487,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -515,7 +531,7 @@
method public float getBlurRadius();
method public long getColor();
method public long getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -539,12 +555,16 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
@@ -552,6 +572,8 @@
public enum TileMode {
method public final android.graphics.Shader.TileMode getNativeTileMode();
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
@@ -565,6 +587,8 @@
public enum VertexMode {
method public final android.graphics.Canvas.VertexMode toFrameworkVertexMode();
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -588,6 +612,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -595,6 +621,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -659,7 +687,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -689,10 +717,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -805,7 +835,7 @@
property public final long center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final long size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field public static final float DefaultAlpha = 1.0f;
field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas? canvas;
field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.CanvasTransform transform;
@@ -841,7 +871,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -944,7 +974,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1185,7 +1215,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1265,7 +1295,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1292,6 +1322,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1580,6 +1612,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev14.txt b/ui/ui-graphics/api/restricted_0.1.0-dev14.txt
index 79ad302..44804d8 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev14.txt
@@ -110,6 +110,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -207,6 +209,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -231,7 +235,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -269,7 +273,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -291,6 +295,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -316,6 +322,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -409,6 +417,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -442,7 +452,7 @@
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -450,11 +460,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -473,6 +487,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -515,7 +531,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -539,24 +555,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -580,6 +604,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -587,6 +613,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -651,7 +679,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -681,10 +709,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -784,7 +814,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas canvas;
field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.DrawTransform transform;
}
@@ -833,7 +863,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -850,7 +880,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -947,7 +977,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1185,7 +1215,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1265,7 +1295,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1292,6 +1322,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1580,6 +1612,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev15.txt b/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
index 79ad302..5fc211b 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
@@ -76,14 +76,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -110,6 +110,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -207,6 +209,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -231,7 +235,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -269,7 +273,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -291,6 +295,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -316,6 +322,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -409,6 +417,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -428,21 +438,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -450,11 +460,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -473,6 +487,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -515,7 +531,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -539,24 +555,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -580,6 +604,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -587,6 +613,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -651,7 +679,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -681,10 +709,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -784,7 +814,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas canvas;
field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.DrawTransform transform;
}
@@ -833,7 +863,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -850,7 +880,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -901,25 +931,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -947,7 +977,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1064,70 +1094,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1185,7 +1215,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1265,7 +1295,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1292,6 +1322,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1580,6 +1612,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/api/restricted_current.txt b/ui/ui-graphics/api/restricted_current.txt
index 79ad302..5fc211b 100644
--- a/ui/ui-graphics/api/restricted_current.txt
+++ b/ui/ui-graphics/api/restricted_current.txt
@@ -76,14 +76,14 @@
method public android.graphics.Path getInternalPath();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType value);
method public void shift(androidx.ui.geometry.Offset offset);
@@ -110,6 +110,8 @@
}
public enum BlendMode {
+ method public static androidx.ui.graphics.BlendMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.BlendMode[] values();
enum_constant public static final androidx.ui.graphics.BlendMode clear;
enum_constant public static final androidx.ui.graphics.BlendMode color;
enum_constant public static final androidx.ui.graphics.BlendMode colorBurn;
@@ -207,6 +209,8 @@
}
public enum ClipOp {
+ method public static androidx.ui.graphics.ClipOp valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ClipOp[] values();
enum_constant public static final androidx.ui.graphics.ClipOp difference;
enum_constant public static final androidx.ui.graphics.ClipOp intersect;
}
@@ -231,7 +235,7 @@
method public long getValue();
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method public static String toString-impl(long $this);
- field public static final androidx.ui.graphics.Color.Companion! Companion;
+ field public static final androidx.ui.graphics.Color.Companion Companion;
}
public static final class Color.Companion {
@@ -269,7 +273,7 @@
method @androidx.compose.Immutable public androidx.ui.graphics.ColorFilter copy-vOa7YyA(long color, androidx.ui.graphics.BlendMode blendMode);
method public androidx.ui.graphics.BlendMode getBlendMode();
method public long getColor();
- field public static final androidx.ui.graphics.ColorFilter.Companion! Companion;
+ field public static final androidx.ui.graphics.ColorFilter.Companion Companion;
}
public static final class ColorFilter.Companion {
@@ -291,6 +295,8 @@
}
public enum FilterQuality {
+ method public static androidx.ui.graphics.FilterQuality valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.FilterQuality[] values();
enum_constant public static final androidx.ui.graphics.FilterQuality high;
enum_constant public static final androidx.ui.graphics.FilterQuality low;
enum_constant public static final androidx.ui.graphics.FilterQuality medium;
@@ -316,6 +322,8 @@
}
public enum ImageAssetConfig {
+ method public static androidx.ui.graphics.ImageAssetConfig valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.ImageAssetConfig[] values();
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Alpha8;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig Argb8888;
enum_constant public static final androidx.ui.graphics.ImageAssetConfig F16;
@@ -409,6 +417,8 @@
}
public enum PaintingStyle {
+ method public static androidx.ui.graphics.PaintingStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PaintingStyle[] values();
enum_constant public static final androidx.ui.graphics.PaintingStyle fill;
enum_constant public static final androidx.ui.graphics.PaintingStyle stroke;
}
@@ -428,21 +438,21 @@
method public androidx.ui.graphics.PathFillType getFillType();
method public boolean isConvex();
method public boolean isEmpty();
- method public void lineTo(float dx, float dy);
- method public void moveTo(float dx, float dy);
+ method public void lineTo(float x, float y);
+ method public void moveTo(float x, float y);
method public boolean op(androidx.ui.graphics.Path path1, androidx.ui.graphics.Path path2, androidx.ui.graphics.PathOperation operation);
method public void quadraticBezierTo(float x1, float y1, float x2, float y2);
- method public void relativeCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
+ method public void relativeCubicTo(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public void relativeLineTo(float dx, float dy);
method public void relativeMoveTo(float dx, float dy);
- method public void relativeQuadraticBezierTo(float x1, float y1, float x2, float y2);
+ method public void relativeQuadraticBezierTo(float dx1, float dy1, float dx2, float dy2);
method public void reset();
method public void setFillType(androidx.ui.graphics.PathFillType p);
method public void shift(androidx.ui.geometry.Offset offset);
property public abstract androidx.ui.graphics.PathFillType fillType;
property public abstract boolean isConvex;
property public abstract boolean isEmpty;
- field public static final androidx.ui.graphics.Path.Companion! Companion;
+ field public static final androidx.ui.graphics.Path.Companion Companion;
}
public static final class Path.Companion {
@@ -450,11 +460,15 @@
}
public enum PathFillType {
+ method public static androidx.ui.graphics.PathFillType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathFillType[] values();
enum_constant public static final androidx.ui.graphics.PathFillType evenOdd;
enum_constant public static final androidx.ui.graphics.PathFillType nonZero;
}
public enum PathOperation {
+ method public static androidx.ui.graphics.PathOperation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PathOperation[] values();
enum_constant public static final androidx.ui.graphics.PathOperation difference;
enum_constant public static final androidx.ui.graphics.PathOperation intersect;
enum_constant public static final androidx.ui.graphics.PathOperation reverseDifference;
@@ -473,6 +487,8 @@
}
public enum PointMode {
+ method public static androidx.ui.graphics.PointMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.PointMode[] values();
enum_constant public static final androidx.ui.graphics.PointMode lines;
enum_constant public static final androidx.ui.graphics.PointMode points;
enum_constant public static final androidx.ui.graphics.PointMode polygon;
@@ -515,7 +531,7 @@
method public float getBlurRadius();
method public long getColor();
method public androidx.ui.geometry.Offset getOffset();
- field public static final androidx.ui.graphics.Shadow.Companion! Companion;
+ field public static final androidx.ui.graphics.Shadow.Companion Companion;
}
public static final class Shadow.Companion {
@@ -539,24 +555,32 @@
}
public enum StrokeCap {
+ method public static androidx.ui.graphics.StrokeCap valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeCap[] values();
enum_constant public static final androidx.ui.graphics.StrokeCap butt;
enum_constant public static final androidx.ui.graphics.StrokeCap round;
enum_constant public static final androidx.ui.graphics.StrokeCap square;
}
public enum StrokeJoin {
+ method public static androidx.ui.graphics.StrokeJoin valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.StrokeJoin[] values();
enum_constant public static final androidx.ui.graphics.StrokeJoin bevel;
enum_constant public static final androidx.ui.graphics.StrokeJoin miter;
enum_constant public static final androidx.ui.graphics.StrokeJoin round;
}
public enum TileMode {
+ method public static androidx.ui.graphics.TileMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.TileMode[] values();
enum_constant public static final androidx.ui.graphics.TileMode Clamp;
enum_constant public static final androidx.ui.graphics.TileMode Mirror;
enum_constant public static final androidx.ui.graphics.TileMode Repeated;
}
public enum VertexMode {
+ method public static androidx.ui.graphics.VertexMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.VertexMode[] values();
enum_constant public static final androidx.ui.graphics.VertexMode triangleFan;
enum_constant public static final androidx.ui.graphics.VertexMode triangleStrip;
enum_constant public static final androidx.ui.graphics.VertexMode triangles;
@@ -580,6 +604,8 @@
package androidx.ui.graphics.colorspace {
public enum Adaptation {
+ method public static androidx.ui.graphics.colorspace.Adaptation valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.Adaptation[] values();
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Bradford;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation Ciecat02;
enum_constant public static final androidx.ui.graphics.colorspace.Adaptation VonKries;
@@ -587,6 +613,8 @@
public enum ColorModel {
method public final int getComponentCount();
+ method public static androidx.ui.graphics.colorspace.ColorModel valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.ColorModel[] values();
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Cmyk;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Lab;
enum_constant public static final androidx.ui.graphics.colorspace.ColorModel Rgb;
@@ -651,7 +679,7 @@
property public final androidx.ui.graphics.colorspace.Rgb ProPhotoRgb;
property public final androidx.ui.graphics.colorspace.Rgb SmpteC;
property public final androidx.ui.graphics.colorspace.Rgb Srgb;
- field public static final androidx.ui.graphics.colorspace.ColorSpaces! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.ColorSpaces INSTANCE;
}
public class Connector {
@@ -681,10 +709,12 @@
property public final androidx.ui.graphics.colorspace.WhitePoint D65;
property public final androidx.ui.graphics.colorspace.WhitePoint D75;
property public final androidx.ui.graphics.colorspace.WhitePoint E;
- field public static final androidx.ui.graphics.colorspace.Illuminant! INSTANCE;
+ field public static final androidx.ui.graphics.colorspace.Illuminant INSTANCE;
}
public enum RenderIntent {
+ method public static androidx.ui.graphics.colorspace.RenderIntent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.colorspace.RenderIntent[] values();
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Absolute;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Perceptual;
enum_constant public static final androidx.ui.graphics.colorspace.RenderIntent Relative;
@@ -784,7 +814,7 @@
property public final androidx.ui.geometry.Offset center;
property public abstract androidx.ui.core.LayoutDirection layoutDirection;
property public final androidx.ui.geometry.Size size;
- field public static final androidx.ui.graphics.drawscope.DrawScope.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas canvas;
field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.DrawTransform transform;
}
@@ -833,7 +863,7 @@
}
public final class Fill extends androidx.ui.graphics.drawscope.DrawStyle {
- field public static final androidx.ui.graphics.drawscope.Fill! INSTANCE;
+ field public static final androidx.ui.graphics.drawscope.Fill INSTANCE;
}
public final class Stroke extends androidx.ui.graphics.drawscope.DrawStyle {
@@ -850,7 +880,7 @@
method public float getMiter();
method public android.graphics.PathEffect? getPathEffect();
method public float getWidth();
- field public static final androidx.ui.graphics.drawscope.Stroke.Companion! Companion;
+ field public static final androidx.ui.graphics.drawscope.Stroke.Companion Companion;
field public static final float DefaultMiter = 4.0f;
field public static final float HairlineWidth = 0.0f;
}
@@ -901,25 +931,25 @@
public final class PathBuilder {
ctor public PathBuilder();
method public androidx.ui.graphics.vector.PathBuilder arcTo(float horizontalEllipseRadius, float verticalEllipseRadius, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder arcToRelative(float a, float b, float theta, boolean isMoreThanHalf, boolean isPositiveArc, float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder close();
method public androidx.ui.graphics.vector.PathBuilder curveTo(float x1, float y1, float x2, float y2, float x3, float y3);
method public androidx.ui.graphics.vector.PathBuilder curveToRelative(float dx1, float dy1, float dx2, float dy2, float dx3, float dy3);
method public java.util.List<androidx.ui.graphics.vector.PathNode> getNodes();
method public androidx.ui.graphics.vector.PathBuilder horizontalLineTo(float x);
- method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float x);
+ method public androidx.ui.graphics.vector.PathBuilder horizontalLineToRelative(float dx);
method public androidx.ui.graphics.vector.PathBuilder lineTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder lineToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder moveTo(float x, float y);
- method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float x, float y);
+ method public androidx.ui.graphics.vector.PathBuilder moveToRelative(float dx, float dy);
method public androidx.ui.graphics.vector.PathBuilder quadTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder quadToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveTo(float x1, float y1, float x2, float y2);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float x1, float y1, float x2, float y2);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveCurveToRelative(float dx1, float dy1, float dx2, float dy2);
method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadTo(float x1, float y1);
- method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float x1, float y1);
+ method public androidx.ui.graphics.vector.PathBuilder reflectiveQuadToRelative(float dx1, float dy1);
method public androidx.ui.graphics.vector.PathBuilder verticalLineTo(float y);
- method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float y);
+ method public androidx.ui.graphics.vector.PathBuilder verticalLineToRelative(float dy);
}
public abstract sealed class PathNode {
@@ -947,7 +977,7 @@
}
public static final class PathNode.Close extends androidx.ui.graphics.vector.PathNode {
- field public static final androidx.ui.graphics.vector.PathNode.Close! INSTANCE;
+ field public static final androidx.ui.graphics.vector.PathNode.Close INSTANCE;
}
public static final class PathNode.CurveTo extends androidx.ui.graphics.vector.PathNode {
@@ -1064,70 +1094,70 @@
}
public static final class PathNode.RelativeHorizontalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeHorizontalTo(float x);
+ ctor public PathNode.RelativeHorizontalTo(float dx);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float x);
- method public float getX();
+ method public androidx.ui.graphics.vector.PathNode.RelativeHorizontalTo copy(float dx);
+ method public float getDx();
}
public static final class PathNode.RelativeLineTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeLineTo(float x, float y);
+ ctor public PathNode.RelativeLineTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeLineTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeMoveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeMoveTo(float x, float y);
+ ctor public PathNode.RelativeMoveTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeMoveTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeQuadTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeQuadTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeQuadTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveCurveTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveCurveTo(float x1, float y1, float x2, float y2);
+ ctor public PathNode.RelativeReflectiveCurveTo(float dx1, float dy1, float dx2, float dy2);
method public float component1();
method public float component2();
method public float component3();
method public float component4();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float x1, float y1, float x2, float y2);
- method public float getX1();
- method public float getX2();
- method public float getY1();
- method public float getY2();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveCurveTo copy(float dx1, float dy1, float dx2, float dy2);
+ method public float getDx1();
+ method public float getDx2();
+ method public float getDy1();
+ method public float getDy2();
}
public static final class PathNode.RelativeReflectiveQuadTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeReflectiveQuadTo(float x, float y);
+ ctor public PathNode.RelativeReflectiveQuadTo(float dx, float dy);
method public float component1();
method public float component2();
- method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float x, float y);
- method public float getX();
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeReflectiveQuadTo copy(float dx, float dy);
+ method public float getDx();
+ method public float getDy();
}
public static final class PathNode.RelativeVerticalTo extends androidx.ui.graphics.vector.PathNode {
- ctor public PathNode.RelativeVerticalTo(float y);
+ ctor public PathNode.RelativeVerticalTo(float dy);
method public float component1();
- method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float y);
- method public float getY();
+ method public androidx.ui.graphics.vector.PathNode.RelativeVerticalTo copy(float dy);
+ method public float getDy();
}
public static final class PathNode.VerticalTo extends androidx.ui.graphics.vector.PathNode {
@@ -1185,7 +1215,7 @@
method public float[] toFloatArray();
method public operator androidx.ui.graphics.vectormath.Matrix3 unaryMinus();
property public final inline java.util.List<java.lang.Float> m3storage;
- field public static final androidx.ui.graphics.vectormath.Matrix3.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix3.Companion Companion;
}
public static final class Matrix3.Companion {
@@ -1265,7 +1295,7 @@
property public final inline androidx.ui.graphics.vectormath.Vector3 translation;
property public final inline androidx.ui.graphics.vectormath.Vector3 up;
property public final inline androidx.ui.graphics.vectormath.Matrix3 upperLeft;
- field public static final androidx.ui.graphics.vectormath.Matrix4.Companion! Companion;
+ field public static final androidx.ui.graphics.vectormath.Matrix4.Companion Companion;
}
public static final class Matrix4.Companion {
@@ -1292,6 +1322,8 @@
}
public enum MatrixColumn {
+ method public static androidx.ui.graphics.vectormath.MatrixColumn valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.MatrixColumn[] values();
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn W;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn X;
enum_constant public static final androidx.ui.graphics.vectormath.MatrixColumn Y;
@@ -1580,6 +1612,8 @@
}
public enum VectorComponent {
+ method public static androidx.ui.graphics.vectormath.VectorComponent valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.graphics.vectormath.VectorComponent[] values();
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent A;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent B;
enum_constant public static final androidx.ui.graphics.vectormath.VectorComponent G;
diff --git a/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/ui/graphics/drawscope/DrawScopeTest.kt b/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/ui/graphics/drawscope/DrawScopeTest.kt
index e199923..242d345 100644
--- a/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/ui/graphics/drawscope/DrawScopeTest.kt
+++ b/ui/ui-graphics/src/androidAndroidTest/kotlin/androidx/ui/graphics/drawscope/DrawScopeTest.kt
@@ -411,11 +411,11 @@
try {
canvasScope.drawInto(Canvas(imageAsset), size) {
- inset(100.0f, 0.0f, 100.0f, 0.0f) {
+ inset(100.0f, 0.0f, 101.0f, 0.0f) {
drawRect(color = Color.Red)
}
}
- fail("Width must be greater than zero after applying inset")
+ fail("Width must be greater than or equal to zero after applying inset")
} catch (e: IllegalArgumentException) {
// no-op
}
@@ -432,13 +432,63 @@
try {
canvasScope.drawInto(Canvas(imageAsset), size) {
+ inset(0.0f, 100.0f, 0.0f, 101.0f) {
+ drawRect(color = Color.Red)
+ }
+ }
+ fail("Height must be greater than or equal to zero after applying inset")
+ } catch (e: IllegalArgumentException) {
+ // no-op
+ }
+ }
+
+ @Test
+ fun testInsetZeroHeight() {
+ // Verify that the inset call does not crash even though we are adding an inset
+ // to the right and bottom such that the drawing size after the inset is zero in both
+ // dimensions.
+ // This is useful for animations that slowly reveal the drawing bounds of the area.
+ // Alternatively this could happen if the a sibling UI element
+ val canvasScope = TestDrawScope()
+
+ val width = 200
+ val height = 200
+ val size = Size(width.toFloat(), height.toFloat())
+ val imageAsset = ImageAsset(width, height)
+
+ try {
+ canvasScope.drawInto(Canvas(imageAsset), size) {
inset(0.0f, 100.0f, 0.0f, 100.0f) {
drawRect(color = Color.Red)
}
}
- fail("Height must be greater than zero after applying inset")
} catch (e: IllegalArgumentException) {
- // no-op
+ fail("Zero height after applying inset is allowed")
+ }
+ }
+
+ @Test
+ fun testInsetZeroWidth() {
+ // Verify that the inset call does not crash even though we are adding an inset
+ // to the right and bottom such that the drawing size after the inset is zero in both
+ // dimensions.
+ // This is useful for animations that slowly reveal the drawing bounds of the area.
+ // Alternatively this could happen if the a sibling UI element
+ val canvasScope = TestDrawScope()
+
+ val width = 200
+ val height = 200
+ val size = Size(width.toFloat(), height.toFloat())
+ val imageAsset = ImageAsset(width, height)
+
+ try {
+ canvasScope.drawInto(Canvas(imageAsset), size) {
+ inset(100.0f, 0.0f, 100.0f, 0.0f) {
+ drawRect(color = Color.Red)
+ }
+ }
+ } catch (e: IllegalArgumentException) {
+ fail("Zero width after applying inset is allowed")
}
}
diff --git a/ui/ui-graphics/src/androidMain/kotlin/androidx/ui/graphics/AndroidPath.kt b/ui/ui-graphics/src/androidMain/kotlin/androidx/ui/graphics/AndroidPath.kt
index ab68b9c..c6419d9 100644
--- a/ui/ui-graphics/src/androidMain/kotlin/androidx/ui/graphics/AndroidPath.kt
+++ b/ui/ui-graphics/src/androidMain/kotlin/androidx/ui/graphics/AndroidPath.kt
@@ -21,7 +21,6 @@
import androidx.ui.geometry.RRect
import androidx.ui.geometry.Rect
import androidx.ui.graphics.vectormath.degrees
-import java.lang.UnsupportedOperationException
actual fun Path(): Path = AndroidPath()
@@ -70,16 +69,16 @@
}
}
- override fun moveTo(dx: Float, dy: Float) {
- internalPath.moveTo(dx, dy)
+ override fun moveTo(x: Float, y: Float) {
+ internalPath.moveTo(x, y)
}
override fun relativeMoveTo(dx: Float, dy: Float) {
internalPath.rMoveTo(dx, dy)
}
- override fun lineTo(dx: Float, dy: Float) {
- internalPath.lineTo(dx, dy)
+ override fun lineTo(x: Float, y: Float) {
+ internalPath.lineTo(x, y)
}
override fun relativeLineTo(dx: Float, dy: Float) {
@@ -90,8 +89,8 @@
internalPath.quadTo(x1, y1, x2, y2)
}
- override fun relativeQuadraticBezierTo(x1: Float, y1: Float, x2: Float, y2: Float) {
- internalPath.rQuadTo(x1, y1, x2, y2)
+ override fun relativeQuadraticBezierTo(dx1: Float, dy1: Float, dx2: Float, dy2: Float) {
+ internalPath.rQuadTo(dx1, dy1, dx2, dy2)
}
override fun cubicTo(x1: Float, y1: Float, x2: Float, y2: Float, x3: Float, y3: Float) {
@@ -102,11 +101,18 @@
)
}
- override fun relativeCubicTo(x1: Float, y1: Float, x2: Float, y2: Float, x3: Float, y3: Float) {
+ override fun relativeCubicTo(
+ dx1: Float,
+ dy1: Float,
+ dx2: Float,
+ dy2: Float,
+ dx3: Float,
+ dy3: Float
+ ) {
internalPath.rCubicTo(
- x1, y1,
- x2, y2,
- x3, y3
+ dx1, dy1,
+ dx2, dy2,
+ dx3, dy3
)
}
diff --git a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/Path.kt b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/Path.kt
index cac643c..03a6827 100644
--- a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/Path.kt
+++ b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/Path.kt
@@ -55,7 +55,7 @@
/**
* Starts a new subpath at the given coordinate
*/
- fun moveTo(dx: Float, dy: Float)
+ fun moveTo(x: Float, y: Float)
/**
* Starts a new subpath at the given offset from the current point
@@ -65,7 +65,7 @@
/**
* Adds a straight line segment from the current point to the given point
*/
- fun lineTo(dx: Float, dy: Float)
+ fun lineTo(x: Float, y: Float)
/**
* Adds a straight line segment from the current point to the point
@@ -75,33 +75,33 @@
/**
* Adds a quadratic bezier segment that curves from the current
- * point to the given point (x2,y2), using the control point
- * (x1,y1).
+ * point to the given point ([x2], [y2]), using the control point
+ * ([x1], [y1]).
*/
fun quadraticBezierTo(x1: Float, y1: Float, x2: Float, y2: Float)
/**
* Adds a quadratic bezier segment that curves from the current
- * point to the point at the offset (x2,y2) from the current point,
- * using the control point at the offset (x1,y1) from the current
+ * point to the point at the offset ([dx2], [dy2]) from the current point,
+ * using the control point at the offset ([dx1], [dy1]) from the current
* point.
*/
- fun relativeQuadraticBezierTo(x1: Float, y1: Float, x2: Float, y2: Float)
+ fun relativeQuadraticBezierTo(dx1: Float, dy1: Float, dx2: Float, dy2: Float)
/**
* Adds a cubic bezier segment that curves from the current point
- * to the given point (x3,y3), using the control points (x1,y1) and
- * (x2,y2).
+ * to the given point ([x3], [y3]), using the control points ([x1], [y1]) and
+ * ([x2], [y2]).
*/
fun cubicTo(x1: Float, y1: Float, x2: Float, y2: Float, x3: Float, y3: Float)
/**
* Adds a cubic bezier segment that curves from the current point
- * to the point at the offset (x3,y3) from the current point, using
- * the control points at the offsets (x1,y1) and (x2,y2) from the
+ * to the point at the offset ([dx3], [dy3]) from the current point, using
+ * the control points at the offsets ([dx1], [dy1]) and ([dx2], [dy2]) from the
* current point.
*/
- fun relativeCubicTo(x1: Float, y1: Float, x2: Float, y2: Float, x3: Float, y3: Float)
+ fun relativeCubicTo(dx1: Float, dy1: Float, dx2: Float, dy2: Float, dx3: Float, dy3: Float)
/**
* If the [forceMoveTo] argument is false, adds a straight line
diff --git a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/drawscope/DrawScope.kt b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/drawscope/DrawScope.kt
index 4047908..da162d8 100644
--- a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/drawscope/DrawScope.kt
+++ b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/drawscope/DrawScope.kt
@@ -266,8 +266,8 @@
override fun inset(left: Float, top: Float, right: Float, bottom: Float) {
[email protected] {
val updatedSize = size - Offset(left + right, top + bottom)
- require(updatedSize.width > 0 && updatedSize.height > 0) {
- "Width and height must be greater than zero"
+ require(updatedSize.width >= 0 && updatedSize.height >= 0) {
+ "Width and height must be greater than or equal to zero"
}
[email protected](updatedSize)
it.translate(left, top)
diff --git a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathBuilder.kt b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathBuilder.kt
index 96c514a..031c47c 100644
--- a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathBuilder.kt
+++ b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathBuilder.kt
@@ -26,19 +26,19 @@
fun moveTo(x: Float, y: Float) = addNode(PathNode.MoveTo(x, y))
- fun moveToRelative(x: Float, y: Float) = addNode(PathNode.RelativeMoveTo(x, y))
+ fun moveToRelative(dx: Float, dy: Float) = addNode(PathNode.RelativeMoveTo(dx, dy))
fun lineTo(x: Float, y: Float) = addNode(PathNode.LineTo(x, y))
- fun lineToRelative(x: Float, y: Float) = addNode(PathNode.RelativeLineTo(x, y))
+ fun lineToRelative(dx: Float, dy: Float) = addNode(PathNode.RelativeLineTo(dx, dy))
fun horizontalLineTo(x: Float) = addNode(PathNode.HorizontalTo(x))
- fun horizontalLineToRelative(x: Float) = addNode(PathNode.RelativeHorizontalTo(x))
+ fun horizontalLineToRelative(dx: Float) = addNode(PathNode.RelativeHorizontalTo(dx))
fun verticalLineTo(y: Float) = addNode(PathNode.VerticalTo(y))
- fun verticalLineToRelative(y: Float) = addNode(PathNode.RelativeVerticalTo(y))
+ fun verticalLineToRelative(dy: Float) = addNode(PathNode.RelativeVerticalTo(dy))
fun curveTo(
x1: Float,
@@ -61,20 +61,20 @@
fun reflectiveCurveTo(x1: Float, y1: Float, x2: Float, y2: Float) =
addNode(PathNode.ReflectiveCurveTo(x1, y1, x2, y2))
- fun reflectiveCurveToRelative(x1: Float, y1: Float, x2: Float, y2: Float) =
- addNode(PathNode.RelativeReflectiveCurveTo(x1, y1, x2, y2))
+ fun reflectiveCurveToRelative(dx1: Float, dy1: Float, dx2: Float, dy2: Float) =
+ addNode(PathNode.RelativeReflectiveCurveTo(dx1, dy1, dx2, dy2))
fun quadTo(x1: Float, y1: Float, x2: Float, y2: Float) =
addNode(PathNode.QuadTo(x1, y1, x2, y2))
- fun quadToRelative(x1: Float, y1: Float, x2: Float, y2: Float) =
- addNode(PathNode.RelativeQuadTo(x1, y1, x2, y2))
+ fun quadToRelative(dx1: Float, dy1: Float, dx2: Float, dy2: Float) =
+ addNode(PathNode.RelativeQuadTo(dx1, dy1, dx2, dy2))
fun reflectiveQuadTo(x1: Float, y1: Float) =
addNode(PathNode.ReflectiveQuadTo(x1, y1))
- fun reflectiveQuadToRelative(x1: Float, y1: Float) =
- addNode(PathNode.RelativeReflectiveQuadTo(x1, y1))
+ fun reflectiveQuadToRelative(dx1: Float, dy1: Float) =
+ addNode(PathNode.RelativeReflectiveQuadTo(dx1, dy1))
fun arcTo(
horizontalEllipseRadius: Float,
@@ -102,9 +102,9 @@
theta: Float,
isMoreThanHalf: Boolean,
isPositiveArc: Boolean,
- x1: Float,
- y1: Float
- ) = addNode(PathNode.RelativeArcTo(a, b, theta, isMoreThanHalf, isPositiveArc, x1, y1))
+ dx1: Float,
+ dy1: Float
+ ) = addNode(PathNode.RelativeArcTo(a, b, theta, isMoreThanHalf, isPositiveArc, dx1, dy1))
private fun addNode(node: PathNode): PathBuilder {
nodes.add(node)
diff --git a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathNode.kt b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathNode.kt
index e2bb858..319b14f 100644
--- a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathNode.kt
+++ b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathNode.kt
@@ -27,16 +27,16 @@
// for simplicity and to make equals comparisons robust.
object Close : PathNode()
- data class RelativeMoveTo(val x: Float, val y: Float) : PathNode()
+ data class RelativeMoveTo(val dx: Float, val dy: Float) : PathNode()
data class MoveTo(val x: Float, val y: Float) : PathNode()
- data class RelativeLineTo(val x: Float, val y: Float) : PathNode()
+ data class RelativeLineTo(val dx: Float, val dy: Float) : PathNode()
data class LineTo(val x: Float, val y: Float) : PathNode()
- data class RelativeHorizontalTo(val x: Float) : PathNode()
+ data class RelativeHorizontalTo(val dx: Float) : PathNode()
data class HorizontalTo(val x: Float) : PathNode()
- data class RelativeVerticalTo(val y: Float) : PathNode()
+ data class RelativeVerticalTo(val dy: Float) : PathNode()
data class VerticalTo(val y: Float) : PathNode()
data class RelativeCurveTo(
@@ -58,10 +58,10 @@
) : PathNode(isCurve = true)
data class RelativeReflectiveCurveTo(
- val x1: Float,
- val y1: Float,
- val x2: Float,
- val y2: Float
+ val dx1: Float,
+ val dy1: Float,
+ val dx2: Float,
+ val dy2: Float
) : PathNode(isCurve = true)
data class ReflectiveCurveTo(
@@ -72,10 +72,10 @@
) : PathNode(isCurve = true)
data class RelativeQuadTo(
- val x1: Float,
- val y1: Float,
- val x2: Float,
- val y2: Float
+ val dx1: Float,
+ val dy1: Float,
+ val dx2: Float,
+ val dy2: Float
) : PathNode(isQuad = true)
data class QuadTo(
@@ -86,8 +86,8 @@
) : PathNode(isQuad = true)
data class RelativeReflectiveQuadTo(
- val x: Float,
- val y: Float
+ val dx: Float,
+ val dy: Float
) : PathNode(isQuad = true)
data class ReflectiveQuadTo(
@@ -125,7 +125,7 @@
internal fun Char.toPathNodes(args: FloatArray): List<PathNode> = when (this) {
RelativeCloseKey, CloseKey -> listOf(PathNode.Close)
RelativeMoveToKey -> pathNodesFromArgs(args, NUM_MOVE_TO_ARGS) { array ->
- PathNode.RelativeMoveTo(x = array[0], y = array[1])
+ PathNode.RelativeMoveTo(dx = array[0], dy = array[1])
}
MoveToKey -> pathNodesFromArgs(args, NUM_MOVE_TO_ARGS) { array ->
@@ -133,7 +133,7 @@
}
RelativeLineToKey -> pathNodesFromArgs(args, NUM_LINE_TO_ARGS) { array ->
- PathNode.RelativeLineTo(x = array[0], y = array[1])
+ PathNode.RelativeLineTo(dx = array[0], dy = array[1])
}
LineToKey -> pathNodesFromArgs(args, NUM_LINE_TO_ARGS) { array ->
@@ -141,7 +141,7 @@
}
RelativeHorizontalToKey -> pathNodesFromArgs(args, NUM_HORIZONTAL_TO_ARGS) { array ->
- PathNode.RelativeHorizontalTo(x = array[0])
+ PathNode.RelativeHorizontalTo(dx = array[0])
}
HorizontalToKey -> pathNodesFromArgs(args, NUM_HORIZONTAL_TO_ARGS) { array ->
@@ -149,7 +149,7 @@
}
RelativeVerticalToKey -> pathNodesFromArgs(args, NUM_VERTICAL_TO_ARGS) { array ->
- PathNode.RelativeVerticalTo(y = array[0])
+ PathNode.RelativeVerticalTo(dy = array[0])
}
VerticalToKey -> pathNodesFromArgs(args, NUM_VERTICAL_TO_ARGS) { array ->
@@ -180,10 +180,10 @@
RelativeReflectiveCurveToKey -> pathNodesFromArgs(args, NUM_REFLECTIVE_CURVE_TO_ARGS) { array ->
PathNode.RelativeReflectiveCurveTo(
- x1 = array[0],
- y1 = array[1],
- x2 = array[2],
- y2 = array[3]
+ dx1 = array[0],
+ dy1 = array[1],
+ dx2 = array[2],
+ dy2 = array[3]
)
}
@@ -198,10 +198,10 @@
RelativeQuadToKey -> pathNodesFromArgs(args, NUM_QUAD_TO_ARGS) { array ->
PathNode.RelativeQuadTo(
- x1 = array[0],
- y1 = array[1],
- x2 = array[2],
- y2 = array[3]
+ dx1 = array[0],
+ dy1 = array[1],
+ dx2 = array[2],
+ dy2 = array[3]
)
}
@@ -215,7 +215,7 @@
}
RelativeReflectiveQuadToKey -> pathNodesFromArgs(args, NUM_REFLECTIVE_QUAD_TO_ARGS) { array ->
- PathNode.RelativeReflectiveQuadTo(x = array[0], y = array[1])
+ PathNode.RelativeReflectiveQuadTo(dx = array[0], dy = array[1])
}
ReflectiveQuadToKey -> pathNodesFromArgs(args, NUM_REFLECTIVE_QUAD_TO_ARGS) { array ->
diff --git a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathParser.kt b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathParser.kt
index 84e299b..4de210b 100644
--- a/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathParser.kt
+++ b/ui/ui-graphics/src/commonMain/kotlin/androidx/ui/graphics/vector/PathParser.kt
@@ -152,9 +152,9 @@
}
private fun RelativeMoveTo.relativeMoveTo(target: Path) {
- currentPoint.x += x
- currentPoint.y += y
- target.relativeMoveTo(x, y)
+ currentPoint.x += dx
+ currentPoint.y += dy
+ target.relativeMoveTo(dx, dy)
segmentPoint.x = currentPoint.x
segmentPoint.y = currentPoint.y
}
@@ -168,9 +168,9 @@
}
private fun RelativeLineTo.relativeLineTo(target: Path) {
- target.relativeLineTo(x, y)
- currentPoint.x += x
- currentPoint.y += y
+ target.relativeLineTo(dx, dy)
+ currentPoint.x += dx
+ currentPoint.y += dy
}
private fun LineTo.lineTo(target: Path) {
@@ -180,8 +180,8 @@
}
private fun RelativeHorizontalTo.relativeHorizontalTo(target: Path) {
- target.relativeLineTo(x, 0.0f)
- currentPoint.x += x
+ target.relativeLineTo(dx, 0.0f)
+ currentPoint.x += dx
}
private fun HorizontalTo.horizontalTo(target: Path) {
@@ -190,8 +190,8 @@
}
private fun RelativeVerticalTo.relativeVerticalTo(target: Path) {
- target.relativeLineTo(0.0f, y)
- currentPoint.y += y
+ target.relativeLineTo(0.0f, dy)
+ currentPoint.y += dy
}
private fun VerticalTo.verticalTo(target: Path) {
@@ -236,13 +236,13 @@
target.relativeCubicTo(
reflectiveCtrlPoint.x, reflectiveCtrlPoint.y,
- x1, y1,
- x2, y2
+ dx1, dy1,
+ dx2, dy2
)
- ctrlPoint.x = currentPoint.x + x1
- ctrlPoint.y = currentPoint.y + y1
- currentPoint.x += x2
- currentPoint.y += y2
+ ctrlPoint.x = currentPoint.x + dx1
+ ctrlPoint.y = currentPoint.y + dy1
+ currentPoint.x += dx2
+ currentPoint.y += dy2
}
private fun ReflectiveCurveTo.reflectiveCurveTo(prevIsCurve: Boolean, target: Path) {
@@ -265,11 +265,11 @@
}
private fun RelativeQuadTo.relativeQuadTo(target: Path) {
- target.relativeQuadraticBezierTo(x1, y1, x2, y2)
- ctrlPoint.x = currentPoint.x + x1
- ctrlPoint.y = currentPoint.y + y1
- currentPoint.x += x1
- currentPoint.y += y1
+ target.relativeQuadraticBezierTo(dx1, dy1, dx2, dy2)
+ ctrlPoint.x = currentPoint.x + dx1
+ ctrlPoint.y = currentPoint.y + dy1
+ currentPoint.x += dx1
+ currentPoint.y += dy1
}
private fun QuadTo.quadTo(target: Path) {
@@ -293,12 +293,12 @@
target.relativeQuadraticBezierTo(
reflectiveCtrlPoint.x,
- reflectiveCtrlPoint.y, x, y
+ reflectiveCtrlPoint.y, dx, dy
)
ctrlPoint.x = currentPoint.x + reflectiveCtrlPoint.x
ctrlPoint.y = currentPoint.y + reflectiveCtrlPoint.y
- currentPoint.x += x
- currentPoint.y += y
+ currentPoint.x += dx
+ currentPoint.y += dy
}
private fun ReflectiveQuadTo.reflectiveQuadTo(prevIsQuad: Boolean, target: Path) {
diff --git a/ui/ui-layout/api/0.1.0-dev02.txt b/ui/ui-layout/api/0.1.0-dev02.txt
index 8f0ed81..ffb7738 100644
--- a/ui/ui-layout/api/0.1.0-dev02.txt
+++ b/ui/ui-layout/api/0.1.0-dev02.txt
@@ -25,7 +25,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -52,7 +52,7 @@
method public androidx.ui.core.Dp getMaxWidth();
method public androidx.ui.core.Dp getMinHeight();
method public androidx.ui.core.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -121,6 +121,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -139,11 +141,15 @@
}
public enum LayoutSize {
+ method public static androidx.ui.layout.LayoutSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.LayoutSize[] values();
enum_constant public static final androidx.ui.layout.LayoutSize Expand;
enum_constant public static final androidx.ui.layout.LayoutSize Wrap;
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -219,7 +225,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -230,12 +236,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/0.1.0-dev04.txt b/ui/ui-layout/api/0.1.0-dev04.txt
index 5931a42..6e6cb44 100644
--- a/ui/ui-layout/api/0.1.0-dev04.txt
+++ b/ui/ui-layout/api/0.1.0-dev04.txt
@@ -13,7 +13,7 @@
@androidx.compose.Immutable public final class Arrangement {
ctor public Arrangement(internal kotlin.jvm.functions.Function2<? super androidx.ui.unit.IntPx,? super java.util.List<androidx.ui.unit.IntPx>,? extends java.util.List<androidx.ui.unit.IntPx>> arrangeBlock);
- field public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Companion {
@@ -50,7 +50,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -77,7 +77,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -133,6 +133,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -181,7 +183,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -197,7 +199,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -232,7 +234,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -323,7 +325,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -392,7 +394,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -424,6 +426,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -452,6 +456,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -530,7 +536,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -541,12 +547,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -610,7 +616,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/0.1.0-dev06.txt b/ui/ui-layout/api/0.1.0-dev06.txt
index fbfcd3c..b7f0508 100644
--- a/ui/ui-layout/api/0.1.0-dev06.txt
+++ b/ui/ui-layout/api/0.1.0-dev06.txt
@@ -13,22 +13,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -36,27 +36,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -80,7 +80,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -105,7 +105,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -153,6 +153,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -201,7 +203,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -217,7 +219,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -254,7 +256,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -349,7 +351,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -422,7 +424,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -456,6 +458,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -479,6 +483,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -557,7 +563,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -568,12 +574,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -636,7 +642,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/0.1.0-dev07.txt b/ui/ui-layout/api/0.1.0-dev07.txt
index 7853d54..18289f0 100644
--- a/ui/ui-layout/api/0.1.0-dev07.txt
+++ b/ui/ui-layout/api/0.1.0-dev07.txt
@@ -12,22 +12,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -35,27 +35,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -79,7 +79,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -104,7 +104,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -147,6 +147,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -195,7 +197,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopEnd;
property public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -215,11 +217,11 @@
method public androidx.ui.core.LayoutModifier getRtl();
property public final androidx.ui.core.LayoutModifier Ltr;
property public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -256,7 +258,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -361,7 +363,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -434,7 +436,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -468,6 +470,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -496,6 +500,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -574,7 +580,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -585,12 +591,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -653,7 +659,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/0.1.0-dev08.txt b/ui/ui-layout/api/0.1.0-dev08.txt
index 356c13b..1c1fbb8 100644
--- a/ui/ui-layout/api/0.1.0-dev08.txt
+++ b/ui/ui-layout/api/0.1.0-dev08.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public enum ColumnAlign {
+ method public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.ColumnAlign[] values();
enum_constant public static final androidx.ui.layout.ColumnAlign Center;
enum_constant public static final androidx.ui.layout.ColumnAlign End;
enum_constant public static final androidx.ui.layout.ColumnAlign Start;
@@ -81,7 +83,7 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier End;
property @Deprecated public final androidx.ui.core.ParentDataModifier Start;
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -114,7 +116,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -242,7 +244,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -267,7 +269,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -305,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -353,7 +357,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAlignKt {
@@ -381,7 +385,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -390,7 +394,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -425,7 +429,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -554,7 +558,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -640,7 +644,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -672,6 +676,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -681,6 +687,8 @@
}
public enum RowAlign {
+ method public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.RowAlign[] values();
enum_constant public static final androidx.ui.layout.RowAlign Bottom;
enum_constant public static final androidx.ui.layout.RowAlign Center;
enum_constant public static final androidx.ui.layout.RowAlign Top;
@@ -707,10 +715,12 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Bottom;
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier Top;
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -791,7 +801,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -802,12 +812,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/0.1.0-dev09.txt b/ui/ui-layout/api/0.1.0-dev09.txt
index 67ad888..2aa4215 100644
--- a/ui/ui-layout/api/0.1.0-dev09.txt
+++ b/ui/ui-layout/api/0.1.0-dev09.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -429,7 +435,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -438,7 +444,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -473,7 +479,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -598,7 +604,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -694,7 +700,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -726,6 +732,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -735,6 +743,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -753,10 +763,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -818,7 +830,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -829,12 +841,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/0.1.0-dev10.txt b/ui/ui-layout/api/0.1.0-dev10.txt
index 69eab92..804822f 100644
--- a/ui/ui-layout/api/0.1.0-dev10.txt
+++ b/ui/ui-layout/api/0.1.0-dev10.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -430,7 +436,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -465,7 +471,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -590,7 +596,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -686,7 +692,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -718,6 +724,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -727,6 +735,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -745,10 +755,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -810,7 +822,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -821,12 +833,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/0.1.0-dev11.txt b/ui/ui-layout/api/0.1.0-dev11.txt
index 014e7c5..bad0053 100644
--- a/ui/ui-layout/api/0.1.0-dev11.txt
+++ b/ui/ui-layout/api/0.1.0-dev11.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -268,7 +270,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -291,7 +293,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -314,6 +316,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -346,6 +350,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -400,6 +406,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -409,6 +417,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -427,10 +437,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/0.1.0-dev12.txt b/ui/ui-layout/api/0.1.0-dev12.txt
index a80da7b..46e8b05 100644
--- a/ui/ui-layout/api/0.1.0-dev12.txt
+++ b/ui/ui-layout/api/0.1.0-dev12.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,27 +31,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -66,7 +66,7 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -120,7 +120,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -261,7 +261,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -284,7 +284,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -307,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -339,6 +341,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -395,6 +399,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -415,10 +421,12 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/0.1.0-dev14.txt b/ui/ui-layout/api/0.1.0-dev14.txt
index d6dd40f..b5cd68e 100644
--- a/ui/ui-layout/api/0.1.0-dev14.txt
+++ b/ui/ui-layout/api/0.1.0-dev14.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,34 +31,34 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +80,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -129,14 +129,14 @@
}
public final class ConstrainedLayoutReference {
- ctor public ConstrainedLayoutReference(Object id);
+ ctor public ConstrainedLayoutReference(Object tag);
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
- method public Object getId();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+ method public Object getTag();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
@@ -176,15 +176,15 @@
}
public static final class ConstraintLayoutBaseScope.BaselineAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object tag);
}
public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object tag, int index);
}
public static final class ConstraintLayoutBaseScope.VerticalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object tag, int index);
}
public final class ConstraintLayoutKt {
@@ -273,7 +273,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -415,11 +415,11 @@
@androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
- method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+ method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object tag);
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +433,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +467,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +493,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +527,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +585,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +607,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/0.1.0-dev15.txt b/ui/ui-layout/api/0.1.0-dev15.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/0.1.0-dev15.txt
+++ b/ui/ui-layout/api/0.1.0-dev15.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev02.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev02.txt
index 8f0ed81..ffb7738 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev02.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev02.txt
@@ -25,7 +25,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -52,7 +52,7 @@
method public androidx.ui.core.Dp getMaxWidth();
method public androidx.ui.core.Dp getMinHeight();
method public androidx.ui.core.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -121,6 +121,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -139,11 +141,15 @@
}
public enum LayoutSize {
+ method public static androidx.ui.layout.LayoutSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.LayoutSize[] values();
enum_constant public static final androidx.ui.layout.LayoutSize Expand;
enum_constant public static final androidx.ui.layout.LayoutSize Wrap;
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -219,7 +225,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -230,12 +236,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
index 5931a42..6e6cb44 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
@@ -13,7 +13,7 @@
@androidx.compose.Immutable public final class Arrangement {
ctor public Arrangement(internal kotlin.jvm.functions.Function2<? super androidx.ui.unit.IntPx,? super java.util.List<androidx.ui.unit.IntPx>,? extends java.util.List<androidx.ui.unit.IntPx>> arrangeBlock);
- field public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Companion {
@@ -50,7 +50,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -77,7 +77,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -133,6 +133,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -181,7 +183,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -197,7 +199,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -232,7 +234,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -323,7 +325,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -392,7 +394,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -424,6 +426,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -452,6 +456,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -530,7 +536,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -541,12 +547,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -610,7 +616,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev06.txt
index fbfcd3c..b7f0508 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev06.txt
@@ -13,22 +13,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -36,27 +36,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -80,7 +80,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -105,7 +105,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -153,6 +153,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -201,7 +203,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -217,7 +219,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -254,7 +256,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -349,7 +351,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -422,7 +424,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -456,6 +458,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -479,6 +483,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -557,7 +563,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -568,12 +574,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -636,7 +642,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev07.txt
index 7853d54..18289f0 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev07.txt
@@ -12,22 +12,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -35,27 +35,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -79,7 +79,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -104,7 +104,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -147,6 +147,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -195,7 +197,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopEnd;
property public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -215,11 +217,11 @@
method public androidx.ui.core.LayoutModifier getRtl();
property public final androidx.ui.core.LayoutModifier Ltr;
property public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -256,7 +258,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -361,7 +363,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -434,7 +436,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -468,6 +470,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -496,6 +500,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -574,7 +580,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -585,12 +591,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -653,7 +659,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev08.txt
index 356c13b..1c1fbb8 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev08.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public enum ColumnAlign {
+ method public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.ColumnAlign[] values();
enum_constant public static final androidx.ui.layout.ColumnAlign Center;
enum_constant public static final androidx.ui.layout.ColumnAlign End;
enum_constant public static final androidx.ui.layout.ColumnAlign Start;
@@ -81,7 +83,7 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier End;
property @Deprecated public final androidx.ui.core.ParentDataModifier Start;
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -114,7 +116,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -242,7 +244,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -267,7 +269,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -305,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -353,7 +357,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAlignKt {
@@ -381,7 +385,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -390,7 +394,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -425,7 +429,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -554,7 +558,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -640,7 +644,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -672,6 +676,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -681,6 +687,8 @@
}
public enum RowAlign {
+ method public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.RowAlign[] values();
enum_constant public static final androidx.ui.layout.RowAlign Bottom;
enum_constant public static final androidx.ui.layout.RowAlign Center;
enum_constant public static final androidx.ui.layout.RowAlign Top;
@@ -707,10 +715,12 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Bottom;
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier Top;
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -791,7 +801,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -802,12 +812,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev09.txt
index 67ad888..2aa4215 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev09.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -429,7 +435,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -438,7 +444,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -473,7 +479,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -598,7 +604,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -694,7 +700,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -726,6 +732,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -735,6 +743,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -753,10 +763,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -818,7 +830,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -829,12 +841,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev10.txt
index 69eab92..804822f 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev10.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -430,7 +436,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -465,7 +471,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -590,7 +596,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -686,7 +692,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -718,6 +724,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -727,6 +735,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -745,10 +755,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -810,7 +822,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -821,12 +833,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev11.txt
index 014e7c5..bad0053 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev11.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -268,7 +270,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -291,7 +293,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -314,6 +316,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -346,6 +350,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -400,6 +406,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -409,6 +417,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -427,10 +437,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
index a80da7b..46e8b05 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev12.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,27 +31,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -66,7 +66,7 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -120,7 +120,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -261,7 +261,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -284,7 +284,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -307,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -339,6 +341,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -395,6 +399,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -415,10 +421,12 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev14.txt
index d6dd40f..b5cd68e 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev14.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,34 +31,34 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +80,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -129,14 +129,14 @@
}
public final class ConstrainedLayoutReference {
- ctor public ConstrainedLayoutReference(Object id);
+ ctor public ConstrainedLayoutReference(Object tag);
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
- method public Object getId();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+ method public Object getTag();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
@@ -176,15 +176,15 @@
}
public static final class ConstraintLayoutBaseScope.BaselineAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object tag);
}
public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object tag, int index);
}
public static final class ConstraintLayoutBaseScope.VerticalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object tag, int index);
}
public final class ConstraintLayoutKt {
@@ -273,7 +273,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -415,11 +415,11 @@
@androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
- method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+ method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object tag);
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +433,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +467,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +493,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +527,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +585,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +607,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev15.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev15.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev02.txt b/ui/ui-layout/api/restricted_0.1.0-dev02.txt
index 8f0ed81..ffb7738 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev02.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev02.txt
@@ -25,7 +25,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -52,7 +52,7 @@
method public androidx.ui.core.Dp getMaxWidth();
method public androidx.ui.core.Dp getMinHeight();
method public androidx.ui.core.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -121,6 +121,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -139,11 +141,15 @@
}
public enum LayoutSize {
+ method public static androidx.ui.layout.LayoutSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.LayoutSize[] values();
enum_constant public static final androidx.ui.layout.LayoutSize Expand;
enum_constant public static final androidx.ui.layout.LayoutSize Wrap;
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -219,7 +225,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -230,12 +236,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.core.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.core.IntPx containerWidth, androidx.ui.core.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev04.txt b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
index 5931a42..6e6cb44 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
@@ -13,7 +13,7 @@
@androidx.compose.Immutable public final class Arrangement {
ctor public Arrangement(internal kotlin.jvm.functions.Function2<? super androidx.ui.unit.IntPx,? super java.util.List<androidx.ui.unit.IntPx>,? extends java.util.List<androidx.ui.unit.IntPx>> arrangeBlock);
- field public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Companion {
@@ -50,7 +50,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -77,7 +77,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -133,6 +133,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -181,7 +183,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -197,7 +199,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -232,7 +234,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -323,7 +325,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -392,7 +394,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.DensityScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -424,6 +426,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -452,6 +456,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -530,7 +536,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -541,12 +547,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -610,7 +616,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev06.txt b/ui/ui-layout/api/restricted_0.1.0-dev06.txt
index fbfcd3c..b7f0508 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev06.txt
@@ -13,22 +13,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -36,27 +36,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -80,7 +80,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -105,7 +105,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -153,6 +153,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -201,7 +203,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopLeft;
property public final androidx.ui.core.LayoutModifier TopRight;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -217,7 +219,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -254,7 +256,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -349,7 +351,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -422,7 +424,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.core.ModifierScope, androidx.ui.core.Constraints constraints);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -456,6 +458,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -479,6 +483,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -557,7 +563,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -568,12 +574,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -636,7 +642,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev07.txt b/ui/ui-layout/api/restricted_0.1.0-dev07.txt
index 7853d54..18289f0 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev07.txt
@@ -12,22 +12,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -35,27 +35,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -79,7 +79,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -104,7 +104,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -147,6 +147,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -195,7 +197,7 @@
property public final androidx.ui.core.LayoutModifier TopCenter;
property public final androidx.ui.core.LayoutModifier TopEnd;
property public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -215,11 +217,11 @@
method public androidx.ui.core.LayoutModifier getRtl();
property public final androidx.ui.core.LayoutModifier Ltr;
property public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -256,7 +258,7 @@
@androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -361,7 +363,7 @@
@androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -434,7 +436,7 @@
@androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -468,6 +470,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -496,6 +500,8 @@
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -574,7 +580,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -585,12 +591,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
@@ -653,7 +659,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.constraintlayout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev08.txt b/ui/ui-layout/api/restricted_0.1.0-dev08.txt
index 356c13b..1c1fbb8 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev08.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public enum ColumnAlign {
+ method public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.ColumnAlign[] values();
enum_constant public static final androidx.ui.layout.ColumnAlign Center;
enum_constant public static final androidx.ui.layout.ColumnAlign End;
enum_constant public static final androidx.ui.layout.ColumnAlign Start;
@@ -81,7 +83,7 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier End;
property @Deprecated public final androidx.ui.core.ParentDataModifier Start;
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -114,7 +116,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -242,7 +244,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -267,7 +269,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -305,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -353,7 +357,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAlignKt {
@@ -381,7 +385,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -390,7 +394,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -425,7 +429,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -554,7 +558,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -640,7 +644,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -672,6 +676,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -681,6 +687,8 @@
}
public enum RowAlign {
+ method public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.RowAlign[] values();
enum_constant public static final androidx.ui.layout.RowAlign Bottom;
enum_constant public static final androidx.ui.layout.RowAlign Center;
enum_constant public static final androidx.ui.layout.RowAlign Top;
@@ -707,10 +715,12 @@
property @Deprecated public final androidx.ui.core.ParentDataModifier Bottom;
property @Deprecated public final androidx.ui.core.ParentDataModifier Center;
property @Deprecated public final androidx.ui.core.ParentDataModifier Top;
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -791,7 +801,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -802,12 +812,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev09.txt b/ui/ui-layout/api/restricted_0.1.0-dev09.txt
index 67ad888..2aa4215 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev09.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange(androidx.ui.unit.IntPx totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -429,7 +435,7 @@
method @Deprecated public androidx.ui.core.LayoutModifier getRtl();
property @Deprecated public final androidx.ui.core.LayoutModifier Ltr;
property @Deprecated public final androidx.ui.core.LayoutModifier Rtl;
- field public static final androidx.ui.layout.LayoutDirectionModifier! INSTANCE;
+ field public static final androidx.ui.layout.LayoutDirectionModifier INSTANCE;
}
public final class LayoutDirectionsKt {
@@ -438,7 +444,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -473,7 +479,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -598,7 +604,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -694,7 +700,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -726,6 +732,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -735,6 +743,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -753,10 +763,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -818,7 +830,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -829,12 +841,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public androidx.ui.unit.IntPx preferredWidth(java.util.List<androidx.ui.layout.TableMeasurable> cells, androidx.ui.unit.IntPx containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev10.txt b/ui/ui-layout/api/restricted_0.1.0-dev10.txt
index 69eab92..804822f 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev10.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -272,7 +274,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -297,7 +299,7 @@
method public androidx.ui.unit.Dp getMaxWidth();
method public androidx.ui.unit.Dp getMinHeight();
method public androidx.ui.unit.Dp getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -335,6 +337,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -370,6 +374,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -405,7 +411,7 @@
property @Deprecated public final androidx.ui.core.LayoutModifier TopCenter;
property @Deprecated public final androidx.ui.core.LayoutModifier TopEnd;
property @Deprecated public final androidx.ui.core.LayoutModifier TopStart;
- field public static final androidx.ui.layout.LayoutAlign! INSTANCE;
+ field public static final androidx.ui.layout.LayoutAlign INSTANCE;
}
public final class LayoutAspectRatio implements androidx.ui.core.LayoutModifier {
@@ -430,7 +436,7 @@
}
public final class LayoutGravity {
- field public static final androidx.ui.layout.LayoutGravity! INSTANCE;
+ field public static final androidx.ui.layout.LayoutGravity INSTANCE;
}
@androidx.compose.Stable public final class LayoutHeight implements androidx.ui.core.LayoutModifier {
@@ -465,7 +471,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutHeight.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutHeight.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutHeight.Max implements androidx.ui.core.LayoutModifier {
@@ -590,7 +596,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutSize.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutSize.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutSize.Max implements androidx.ui.core.LayoutModifier {
@@ -686,7 +692,7 @@
@Deprecated @androidx.compose.Stable public static final class LayoutWidth.Fill implements androidx.ui.core.LayoutModifier {
method @Deprecated public androidx.ui.core.Constraints modifyConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill! INSTANCE;
+ field @Deprecated public static final androidx.ui.layout.LayoutWidth.Fill INSTANCE;
}
@androidx.compose.Stable public static final class LayoutWidth.Max implements androidx.ui.core.LayoutModifier {
@@ -718,6 +724,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -727,6 +735,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -745,10 +755,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
@@ -810,7 +822,7 @@
public static final class TableColumnWidth.MaxIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MaxIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Min extends androidx.ui.layout.TableColumnWidth.Inflexible {
@@ -821,12 +833,12 @@
public static final class TableColumnWidth.MinIntrinsic extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.MinIntrinsic INSTANCE;
}
public static final class TableColumnWidth.Wrap extends androidx.ui.layout.TableColumnWidth.Inflexible {
method public int preferredWidth-IoUeifE(java.util.List<androidx.ui.layout.TableMeasurable> cells, int containerWidth, androidx.ui.unit.Density density);
- field public static final androidx.ui.layout.TableColumnWidth.Wrap! INSTANCE;
+ field public static final androidx.ui.layout.TableColumnWidth.Wrap INSTANCE;
}
public final class TableDecorationChildren {
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev11.txt b/ui/ui-layout/api/restricted_0.1.0-dev11.txt
index 014e7c5..bad0053 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev11.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,33 +31,35 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
@Deprecated public enum ColumnAlign {
+ method @Deprecated public static androidx.ui.layout.ColumnAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.ColumnAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign End;
enum_constant @Deprecated public static final androidx.ui.layout.ColumnAlign Start;
@@ -73,7 +75,7 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.ColumnAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -127,7 +129,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -268,7 +270,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -291,7 +293,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -314,6 +316,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -346,6 +350,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -400,6 +406,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -409,6 +417,8 @@
}
@Deprecated public enum RowAlign {
+ method @Deprecated public static androidx.ui.layout.RowAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method @Deprecated public static androidx.ui.layout.RowAlign[] values();
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Bottom;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Center;
enum_constant @Deprecated public static final androidx.ui.layout.RowAlign Top;
@@ -427,10 +437,12 @@
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @Deprecated public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.layout.RowAlign align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev12.txt b/ui/ui-layout/api/restricted_0.1.0-dev12.txt
index a80da7b..46e8b05 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev12.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,27 +31,27 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<androidx.ui.unit.IntPx> arrange-SVHdN54(int totalSize, java.util.List<androidx.ui.unit.IntPx> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
@@ -66,7 +66,7 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
public final class ConstraintLayoutKt {
@@ -120,7 +120,7 @@
}
public static final class ConstraintSetBuilderScope.ChainStyle {
- field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -261,7 +261,7 @@
}
public final class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -284,7 +284,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -307,6 +307,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -339,6 +341,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -395,6 +399,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -415,10 +421,12 @@
method public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,androidx.ui.unit.IntPx> alignmentLineBlock);
method public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev14.txt b/ui/ui-layout/api/restricted_0.1.0-dev14.txt
index d6dd40f..b5cd68e 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev14.txt
@@ -8,22 +8,22 @@
@androidx.compose.Immutable public interface Arrangement {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.Arrangement.Companion Companion;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
@@ -31,34 +31,34 @@
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +80,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -129,14 +129,14 @@
}
public final class ConstrainedLayoutReference {
- ctor public ConstrainedLayoutReference(Object id);
+ ctor public ConstrainedLayoutReference(Object tag);
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
- method public Object getId();
method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+ method public Object getTag();
method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
@@ -176,15 +176,15 @@
}
public static final class ConstraintLayoutBaseScope.BaselineAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object tag);
}
public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object tag, int index);
}
public static final class ConstraintLayoutBaseScope.VerticalAnchor {
- method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+ method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object tag, int index);
}
public final class ConstraintLayoutKt {
@@ -273,7 +273,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -415,11 +415,11 @@
@androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
- method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+ method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object tag);
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +433,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +467,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +493,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +527,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +585,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +607,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev15.txt b/ui/ui-layout/api/restricted_0.1.0-dev15.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev15.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index d6dd40f..b9c6b5a 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -1,64 +1,103 @@
// Signature format: 3.0
package androidx.ui.layout {
+ @androidx.compose.Immutable public final class AbsoluteArrangement {
+ field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+ }
+
+ public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
+ field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+ }
+
public final class AlignmentLineKt {
method @Deprecated @androidx.compose.Composable public static void AlignmentLineOffset-QVeNkNc(androidx.ui.core.AlignmentLine alignmentLine, androidx.ui.core.Modifier modifier = Modifier, float before = 0.dp, float after = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
method @androidx.compose.Stable public static androidx.ui.core.Modifier relativePaddingFrom-J8n-V1w(androidx.ui.core.Modifier, androidx.ui.core.AlignmentLine alignmentLine, float before = 0.dp, float after = 0.dp);
}
- @androidx.compose.Immutable public interface Arrangement {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field @Deprecated public static final androidx.ui.layout.Arrangement.Companion! Companion;
+ @androidx.compose.Immutable public final class Arrangement {
+ field public static final androidx.ui.layout.Arrangement INSTANCE;
}
public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Bottom! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
}
public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Center! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
}
public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.End! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.End INSTANCE;
}
- public static interface Arrangement.Horizontal extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Horizontal {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
}
public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceAround! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
}
public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceBetween! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
}
public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.SpaceEvenly! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
}
public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Start! INSTANCE;
+ field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
}
public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
- method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
- field public static final androidx.ui.layout.Arrangement.Top! INSTANCE;
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
+ field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
}
- public static interface Arrangement.Vertical extends androidx.ui.layout.Arrangement {
+ public static interface Arrangement.Vertical {
+ method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
}
public final class ChainStyle {
- field public static final androidx.ui.layout.ChainStyle.Companion! Companion;
+ field public static final androidx.ui.layout.ChainStyle.Companion Companion;
}
public static final class ChainStyle.Companion {
@@ -80,7 +119,7 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.ColumnScope! INSTANCE;
+ field public static final androidx.ui.layout.ColumnScope INSTANCE;
}
@androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
@@ -273,7 +312,7 @@
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
- field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion! Companion;
+ field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
}
@Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
@@ -419,7 +458,7 @@
}
@androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
- field public static final androidx.ui.layout.CrossAxisAlignment.Companion! Companion;
+ field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
}
public static final class CrossAxisAlignment.Companion {
@@ -433,7 +472,7 @@
}
public interface Dimension {
- field public static final androidx.ui.layout.Dimension.Companion! Companion;
+ field public static final androidx.ui.layout.Dimension.Companion Companion;
}
public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
@@ -467,7 +506,7 @@
method public float getMaxWidth();
method public float getMinHeight();
method public float getMinWidth();
- field public static final androidx.ui.layout.DpConstraints.Companion! Companion;
+ field public static final androidx.ui.layout.DpConstraints.Companion Companion;
}
public static final class DpConstraints.Companion {
@@ -493,6 +532,8 @@
}
public enum FlowCrossAxisAlignment {
+ method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
@@ -525,6 +566,8 @@
}
public enum IntrinsicSize {
+ method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.IntrinsicSize[] values();
enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
}
@@ -581,6 +624,8 @@
}
public enum MainAxisAlignment {
+ method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.MainAxisAlignment[] values();
enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
@@ -601,10 +646,12 @@
method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, fromInclusive=false) float weight, boolean fill = true);
- field public static final androidx.ui.layout.RowScope! INSTANCE;
+ field public static final androidx.ui.layout.RowScope INSTANCE;
}
public enum SizeMode {
+ method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.layout.SizeMode[] values();
enum_constant public static final androidx.ui.layout.SizeMode Expand;
enum_constant public static final androidx.ui.layout.SizeMode Wrap;
}
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt
index acafd99..a89c585 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt
@@ -129,7 +129,7 @@
Stack(boxSize.drawBackground(Color.Red)) {}
Stack(boxSize.drawBackground(Color.Green)) {}
Stack(boxSize.drawBackground(Color.Blue)) {}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val p = measurables.map { e ->
e.measure(constraints.copy(minWidth = 0, minHeight = 0))
}
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt b/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt
index 69106b6..25b32be 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt
@@ -123,7 +123,7 @@
Layout(
children = { },
modifier = modifier.drawBackground(color = color)
- ) { _, constraints, _ ->
+ ) { _, constraints ->
val widthPx = max(width.toIntPx(), constraints.minWidth)
val heightPx = max(height.toIntPx(), constraints.minHeight)
layout(widthPx, heightPx, mapOf(start to 0, end to widthPx)) {}
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/AlignmentLineTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/AlignmentLineTest.kt
index 2341852..fd18d57 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/AlignmentLineTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/AlignmentLineTest.kt
@@ -69,7 +69,7 @@
layoutLatch.countDown()
}
.relativePaddingFrom(testLine, beforeDp, afterDp)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(childDp.toIntPx(), 0, mapOf(testLine to lineDp.toIntPx())) {}
}
}
@@ -119,7 +119,7 @@
}
.relativePaddingFrom(testLine, beforeDp, afterDp),
children = {}
- ) { _, _, _ ->
+ ) { _, _ ->
layout(0, childDp.toIntPx(), mapOf(testLine to lineDp.toIntPx())) {}
}
}
@@ -157,7 +157,7 @@
.saveLayoutInfo(childSize, childPosition, layoutLatch)
.relativePaddingFrom(testLine, beforeDp, afterDp),
children = {}
- ) { _, _, _ ->
+ ) { _, _ ->
layout(childDp.toIntPx(), 0, mapOf(testLine to lineDp.toIntPx())) { }
}
}
@@ -191,7 +191,7 @@
Modifier
.saveLayoutInfo(childSize, childPosition, layoutLatch)
.relativePaddingFrom(testLine, beforeDp, afterDp)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(0, childDp.toIntPx(), mapOf(testLine to lineDp.toIntPx())) { }
}
}
@@ -227,7 +227,7 @@
.preferredSizeIn(maxWidth = maxWidth)
.saveLayoutInfo(childSize, childPosition, layoutLatch)
.relativePaddingFrom(testLine, beforeDp, afterDp)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(
childDp.toIntPx(),
0,
@@ -268,7 +268,7 @@
.preferredSizeIn(maxHeight = maxHeight)
.saveLayoutInfo(childSize, childPosition, layoutLatch)
.relativePaddingFrom(testLine, beforeDp, afterDp)
- ) { _, _, _ ->
+ ) { _, _ ->
layout(
0,
childDp.toIntPx(),
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/ContainerTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/ContainerTest.kt
index 8675059..892494e 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/ContainerTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/ContainerTest.kt
@@ -374,7 +374,7 @@
modifier = Modifier.onPositioned { layoutLatch.countDown() }
)
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
++measure
layout(placeable.width, placeable.height) {
@@ -412,7 +412,7 @@
modifier = Modifier.onPositioned { layoutLatch.countDown() }
)
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
++measure
layout(placeable.width, placeable.height) {
@@ -450,7 +450,7 @@
modifier = Modifier.onPositioned { layoutLatch.countDown() }
)
}
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val placeable = measurables.first().measure(constraints)
++measure
layout(placeable.width, placeable.height) {
@@ -474,7 +474,7 @@
@Composable
fun EmptyBox(width: Dp, height: Dp, modifier: Modifier = Modifier) {
- Layout(modifier = modifier, children = { }) { _, constraints, _ ->
+ Layout(modifier = modifier, children = { }) { _, constraints ->
layout(
constraints.constrainWidth(width.toIntPx()),
constraints.constrainHeight(height.toIntPx())
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/IntrinsicTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/IntrinsicTest.kt
index 818e970..70974e1 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/IntrinsicTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/IntrinsicTest.kt
@@ -487,12 +487,12 @@
) {
Layout(
emptyContent(),
- minIntrinsicWidthMeasureBlock = { _, _, _ -> minIntrinsicWidth.toIntPx() },
- minIntrinsicHeightMeasureBlock = { _, _, _ -> minIntrinsicHeight.toIntPx() },
- maxIntrinsicWidthMeasureBlock = { _, _, _ -> maxIntrinsicWidth.toIntPx() },
- maxIntrinsicHeightMeasureBlock = { _, _, _ -> maxIntrinsicHeight.toIntPx() },
+ minIntrinsicWidthMeasureBlock = { _, _ -> minIntrinsicWidth.toIntPx() },
+ minIntrinsicHeightMeasureBlock = { _, _ -> minIntrinsicHeight.toIntPx() },
+ maxIntrinsicWidthMeasureBlock = { _, _ -> maxIntrinsicWidth.toIntPx() },
+ maxIntrinsicHeightMeasureBlock = { _, _ -> maxIntrinsicHeight.toIntPx() },
modifier = modifier
- ) { _, constraints, _ ->
+ ) { _, constraints ->
layout(
constraints.constrainWidth(width.toIntPx()),
constraints.constrainHeight(height.toIntPx())
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAlignTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAlignTest.kt
index 56bc0db..910338a 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAlignTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAlignTest.kt
@@ -223,7 +223,7 @@
}
}
},
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val placeable = measurables.first().measure(Constraints())
layout(constraints.maxWidth, constraints.maxHeight) {
placeable.place(0, 0)
@@ -268,7 +268,7 @@
) {
}
},
- measureBlock = { measurables, incomingConstraints, _ ->
+ measureBlock = { measurables, incomingConstraints ->
val measurable = measurables.first()
val constraints = Constraints(
minWidth = doubleSizeDp.toIntPx(),
@@ -414,7 +414,7 @@
) {
}
}
- }, measureBlock = { measurables, constraints, _ ->
+ }, measureBlock = { measurables, constraints ->
val placeable = measurables.first().measure(Constraints())
layout(constraints.maxWidth, constraints.maxHeight) {
placeable.place(0, 0)
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAspectRatioTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAspectRatioTest.kt
index 204399a..be667da 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAspectRatioTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutAspectRatioTest.kt
@@ -97,7 +97,7 @@
Modifier.saveLayoutInfo(size, position, positionedLatch)
) {
}
- }) { measurables, incomingConstraints, _ ->
+ }) { measurables, incomingConstraints ->
require(measurables.isNotEmpty())
val placeable = measurables.first().measure(childContraints)
layout(incomingConstraints.maxWidth, incomingConstraints.maxHeight) {
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutDirectionModifierTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutDirectionModifierTest.kt
index 02749c7..9c91946 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutDirectionModifierTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutDirectionModifierTest.kt
@@ -47,49 +47,49 @@
@Test
fun testModifiedLayoutDirection_inMeasureScope() {
val latch = CountDownLatch(1)
- val layoutDirection = Ref<LayoutDirection>()
+ val resultLayoutDirection = Ref<LayoutDirection>()
show {
Layout(
children = @Composable {},
modifier = Modifier.rtl
- ) { _, _, incomingLayoutDirection ->
- layoutDirection.value = incomingLayoutDirection
+ ) { _, _ ->
+ resultLayoutDirection.value = layoutDirection
latch.countDown()
layout(0, 0) {}
}
}
assertTrue(latch.await(1, TimeUnit.SECONDS))
- assertTrue(LayoutDirection.Rtl == layoutDirection.value)
+ assertTrue(LayoutDirection.Rtl == resultLayoutDirection.value)
}
@Test
fun testModifiedLayoutDirection_inIntrinsicsMeasure() {
val latch = CountDownLatch(1)
- val layoutDirection = Ref<LayoutDirection>()
+ var resultLayoutDirection: LayoutDirection? = null
show {
@OptIn(ExperimentalLayout::class)
Layout(
children = @Composable {},
modifier = Modifier.preferredWidth(IntrinsicSize.Max).rtl,
- minIntrinsicWidthMeasureBlock = { _, _, _ -> 0 },
- minIntrinsicHeightMeasureBlock = { _, _, _ -> 0 },
- maxIntrinsicWidthMeasureBlock = { _, _, incomingLayoutDirection ->
- layoutDirection.value = incomingLayoutDirection
+ minIntrinsicWidthMeasureBlock = { _, _ -> 0 },
+ minIntrinsicHeightMeasureBlock = { _, _ -> 0 },
+ maxIntrinsicWidthMeasureBlock = { _, _ ->
+ resultLayoutDirection = this.layoutDirection
latch.countDown()
0
},
- maxIntrinsicHeightMeasureBlock = { _, _, _ -> 0 }
- ) { _, _, _ ->
+ maxIntrinsicHeightMeasureBlock = { _, _ -> 0 }
+ ) { _, _ ->
layout(0, 0) {}
}
}
assertTrue(latch.await(1, TimeUnit.SECONDS))
- assertNotNull(layoutDirection)
- assertTrue(LayoutDirection.Rtl == layoutDirection.value)
+ assertNotNull(resultLayoutDirection)
+ assertTrue(LayoutDirection.Rtl == resultLayoutDirection)
}
@Test
@@ -103,7 +103,7 @@
LayoutDirection.Ltr -> Modifier.ltr
LayoutDirection.Rtl -> Modifier.rtl
}
- Layout(emptyContent(), restoreModifier) { _, _, layoutDirection ->
+ Layout(emptyContent(), restoreModifier) { _, _ ->
resultLayoutDirection.value = layoutDirection
latch.countDown()
layout(0, 0) {}
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutPaddingTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutPaddingTest.kt
index 542defa..a8b6a06 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutPaddingTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutPaddingTest.kt
@@ -497,7 +497,7 @@
*/
@Composable
private fun TestBox(modifier: Modifier = Modifier, body: @Composable () -> Unit) {
- Layout(children = body, modifier = modifier) { measurables, constraints, _ ->
+ Layout(children = body, modifier = modifier) { measurables, constraints ->
require(measurables.size == 1) {
"TestBox received ${measurables.size} children; must have exactly 1"
}
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutSizeTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutSizeTest.kt
index 01686f0..0d1c88a 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutSizeTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutSizeTest.kt
@@ -583,7 +583,7 @@
Modifier.wrapContentSize()
.sizeIn(maxWidth = 30.toDp(), maxHeight = 40.toDp())
.defaultMinSizeConstraints(minWidth = 10.toDp(), minHeight = 20.toDp())
- ) { _, constraints, _ ->
+ ) { _, constraints ->
assertEquals(10, constraints.minWidth)
assertEquals(20, constraints.minHeight)
assertEquals(30, constraints.maxWidth)
@@ -603,7 +603,7 @@
minWidth = 50.toDp(),
minHeight = 50.toDp()
)
- ) { _, constraints, _ ->
+ ) { _, constraints ->
assertEquals(10, constraints.minWidth)
assertEquals(20, constraints.minHeight)
assertEquals(100, constraints.maxWidth)
@@ -620,7 +620,7 @@
maxWidth = 100.toDp(),
maxHeight = 110.toDp()
).defaultMinSizeConstraints()
- ) { _, constraints, _ ->
+ ) { _, constraints ->
assertEquals(10, constraints.minWidth)
assertEquals(20, constraints.minHeight)
assertEquals(100, constraints.maxWidth)
@@ -641,7 +641,7 @@
Modifier.wrapContentSize()
.sizeIn(maxWidth = 30.toDp(), maxHeight = 40.toDp())
.defaultMinSizeConstraints(minWidth = 70.toDp(), minHeight = 80.toDp())
- ) { _, constraints, _ ->
+ ) { _, constraints ->
assertEquals(30, constraints.minWidth)
assertEquals(40, constraints.minHeight)
assertEquals(30, constraints.maxWidth)
@@ -1027,7 +1027,7 @@
Container(width = width, height = height) { }
}
}
- }) { measurables, incomingConstraints, _ ->
+ }) { measurables, incomingConstraints ->
require(measurables.isNotEmpty())
val placeable = measurables.first().measure(incomingConstraints)
layout(
@@ -1054,7 +1054,7 @@
assertEquals(expectedConstraints, constraints)
latch.countDown()
}
- }) { measurables, _, _ ->
+ }) { measurables, _ ->
measurables[0].measure(incomingConstraints)
layout(0, 0) { }
}
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
index 4769bb5..b6efaf4 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/LayoutTest.kt
@@ -157,11 +157,11 @@
show {
Layout(
layout,
- minIntrinsicWidthMeasureBlock = { _, _, _ -> 0 },
- minIntrinsicHeightMeasureBlock = { _, _, _ -> 0 },
- maxIntrinsicWidthMeasureBlock = { _, _, _ -> 0 },
- maxIntrinsicHeightMeasureBlock = { _, _, _ -> 0 }
- ) { measurables, _, layoutDirection ->
+ minIntrinsicWidthMeasureBlock = { _, _ -> 0 },
+ minIntrinsicHeightMeasureBlock = { _, _ -> 0 },
+ maxIntrinsicWidthMeasureBlock = { _, _ -> 0 },
+ maxIntrinsicHeightMeasureBlock = { _, _ -> 0 }
+ ) { measurables, _ ->
val measurable = measurables.first()
test(
{ h -> measurable.minIntrinsicWidth(h, layoutDirection) },
@@ -183,7 +183,7 @@
height: Int,
alignmentLines: Map<AlignmentLine, Int>
) {
- Layout({}) { _, constraints, _ ->
+ Layout({}) { _, constraints ->
layout(
constraints.constrainWidth(width),
constraints.constrainHeight(height),
@@ -194,7 +194,7 @@
@Composable
internal fun WithInfiniteConstraints(children: @Composable () -> Unit) {
- Layout(children) { measurables, _, _ ->
+ Layout(children) { measurables, _ ->
val placeables = measurables.map { it.measure(Constraints()) }
layout(0, 0) {
placeables.forEach { it.place(0, 0) }
@@ -213,23 +213,23 @@
Layout(
children,
modifier = modifier,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
val width = measurables.firstOrNull()?.minIntrinsicWidth(h) ?: 0
pxConstraints.constrainWidth(width)
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
val height = measurables.firstOrNull()?.minIntrinsicHeight(w) ?: 0
pxConstraints.constrainHeight(height)
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
val width = measurables.firstOrNull()?.maxIntrinsicWidth(h) ?: 0
pxConstraints.constrainWidth(width)
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
val height = measurables.firstOrNull()?.maxIntrinsicHeight(w) ?: 0
pxConstraints.constrainHeight(height)
}
- ) { measurables, incomingConstraints, _ ->
+ ) { measurables, incomingConstraints ->
val measurable = measurables.firstOrNull()
val childConstraints = Constraints(constraints).enforce(incomingConstraints)
val placeable = measurable?.measure(childConstraints)
@@ -307,8 +307,7 @@
internal val customVerticalArrangement = object : Arrangement.Vertical {
override fun arrange(
totalSize: Int,
- size: List<Int>,
- layoutDirection: LayoutDirection
+ size: List<Int>
): List<Int> {
val positions = mutableListOf<Int>()
var current = 0f
@@ -336,8 +335,8 @@
val positions = mutableListOf<Int>()
var current = 0f
if (layoutDirection == LayoutDirection.Rtl) {
- size.forEach {
- positions.add(current.roundToInt())
+ size.asReversed().forEach {
+ positions.add(0, current.roundToInt())
current += it.toFloat()
}
} else {
@@ -368,7 +367,7 @@
height: Dp? = null,
children: @Composable () -> Unit
) {
- Layout(children, modifier) { measurables, incomingConstraints, _ ->
+ Layout(children, modifier) { measurables, incomingConstraints ->
val containerConstraints = Constraints(constraints)
.copy(
width?.toIntPx() ?: constraints.minWidth.toIntPx(),
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/OnPositionedTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/OnPositionedTest.kt
index 081c173..43e213f 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/OnPositionedTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/OnPositionedTest.kt
@@ -311,7 +311,7 @@
Assert.assertEquals(lineValue, coordinates[line])
latch.countDown()
}
- Layout(modifier = onPositioned, children = { }) { _, _, _ ->
+ Layout(modifier = onPositioned, children = { }) { _, _ ->
layout(0, 0, mapOf(line to lineValue)) { }
}
}
@@ -321,7 +321,7 @@
@Composable
private fun Offset(sizeModel: State<Dp>, children: @Composable () -> Unit) {
// simple copy of Padding which doesn't recompose when the size changes
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
layout(constraints.maxWidth, constraints.maxHeight) {
measurables.first().measure(constraints)
.place(sizeModel.value.toPx().roundToInt(), 0)
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/RowColumnTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/RowColumnTest.kt
index db663c4..ffcfe38 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/RowColumnTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/RowColumnTest.kt
@@ -32,6 +32,7 @@
import androidx.ui.core.globalPosition
import androidx.ui.core.onPositioned
import androidx.ui.geometry.Offset
+import androidx.ui.layout.AbsoluteArrangement
import androidx.ui.layout.Arrangement
import androidx.ui.layout.Column
import androidx.ui.layout.DpConstraints
@@ -593,30 +594,30 @@
val childPosition = arrayOf(Offset(-1f, -1f), Offset(-1f, -1f))
show {
Row {
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.fillMaxHeight()
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(Offset(0f, 0f))
- drawLatch.countDown()
- }
- ) {
- }
-
- Container(
- width = (sizeDp * 2),
- height = (sizeDp * 2),
- modifier = Modifier.fillMaxHeight()
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(Offset(0f, 0f))
- drawLatch.countDown()
- }
- ) {
- }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.fillMaxHeight()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.localToGlobal(Offset(0f, 0f))
+ drawLatch.countDown()
+ }
+ ) {
}
+
+ Container(
+ width = (sizeDp * 2),
+ height = (sizeDp * 2),
+ modifier = Modifier.fillMaxHeight()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.localToGlobal(Offset(0f, 0f))
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -642,39 +643,39 @@
val childPosition = arrayOfNulls<Offset>(3)
show {
Row(Modifier.fillMaxHeight(), verticalGravity = Alignment.CenterVertically) {
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.gravity(Alignment.Top)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.globalPosition
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.gravity(Alignment.Top)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.globalPosition
drawLatch.countDown()
}
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.gravity(Alignment.Bottom)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[2] = coordinates.size
- childPosition[2] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
+ ) {
}
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.gravity(Alignment.Bottom)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[2] = coordinates.size
+ childPosition[2] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -695,9 +696,13 @@
)
assertEquals(IntSize(size, size), childSize[2])
- assertEquals(Offset((size.toFloat() * 2),
- (rootHeight - size.toFloat())),
- childPosition[2])
+ assertEquals(
+ Offset(
+ (size.toFloat() * 2),
+ (rootHeight - size.toFloat())
+ ),
+ childPosition[2]
+ )
}
@Test
@@ -766,7 +771,8 @@
assertEquals(IntSize(size, size), childSize[2])
assertEquals(
Offset((size.toFloat() * 2), (rootHeight - size.toFloat())),
- childPosition[2])
+ childPosition[2]
+ )
}
@Test
@@ -783,53 +789,53 @@
val childPosition = arrayOfNulls<Offset>(4)
show {
Row(Modifier.fillMaxHeight()) {
- BaselineTestLayout(
- baseline = baseline1Dp,
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings(TestHorizontalLine)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings { it.height / 2 }
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- BaselineTestLayout(
- baseline = baseline2Dp,
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings(TestHorizontalLine)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[2] = coordinates.size
- childPosition[2] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings { it.height * 3 / 4 }
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[3] = coordinates.size
- childPosition[3] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
+ BaselineTestLayout(
+ baseline = baseline1Dp,
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings(TestHorizontalLine)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
}
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings { it.height / 2 }
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ BaselineTestLayout(
+ baseline = baseline2Dp,
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings(TestHorizontalLine)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[2] = coordinates.size
+ childPosition[2] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings { it.height * 3 / 4 }
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[3] = coordinates.size
+ childPosition[3] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -919,30 +925,30 @@
val childPosition = arrayOf(Offset(-1f, -1f), Offset(-1f, -1f))
show {
Column {
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.fillMaxWidth()
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.localToGlobal(Offset(0f, 0f))
- drawLatch.countDown()
- }
- ) {
- }
-
- Container(
- width = (sizeDp * 2),
- height = (sizeDp * 2),
- modifier = Modifier.fillMaxWidth()
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.localToGlobal(Offset(0f, 0f))
- drawLatch.countDown()
- }
- ) {
- }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.fillMaxWidth()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.localToGlobal(Offset(0f, 0f))
+ drawLatch.countDown()
+ }
+ ) {
}
+
+ Container(
+ width = (sizeDp * 2),
+ height = (sizeDp * 2),
+ modifier = Modifier.fillMaxWidth()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.localToGlobal(Offset(0f, 0f))
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -968,40 +974,40 @@
val childPosition = arrayOfNulls<Offset>(3)
show {
Column(Modifier.fillMaxWidth()) {
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.gravity(Alignment.Start)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.gravity(Alignment.CenterHorizontally)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.gravity(Alignment.End)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[2] = coordinates.size
- childPosition[2] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.gravity(Alignment.Start)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
}
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.gravity(Alignment.CenterHorizontally)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.gravity(Alignment.End)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[2] = coordinates.size
+ childPosition[2] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -1109,53 +1115,53 @@
val childPosition = arrayOfNulls<Offset>(4)
show {
Column(Modifier.fillMaxWidth()) {
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings { it.width }
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[0] = coordinates.size
- childPosition[0] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- Container(
- width = sizeDp,
- height = sizeDp,
- modifier = Modifier.alignWithSiblings { 0 }
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[1] = coordinates.size
- childPosition[1] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- BaselineTestLayout(
- width = sizeDp,
- height = sizeDp,
- baseline = firstBaseline1Dp,
- modifier = Modifier.alignWithSiblings(TestVerticalLine)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[2] = coordinates.size
- childPosition[2] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
- BaselineTestLayout(
- width = sizeDp,
- height = sizeDp,
- baseline = firstBaseline2Dp,
- modifier = Modifier.alignWithSiblings(TestVerticalLine)
- .onPositioned { coordinates: LayoutCoordinates ->
- childSize[3] = coordinates.size
- childPosition[3] = coordinates.globalPosition
- drawLatch.countDown()
- }
- ) {
- }
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings { it.width }
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[0] = coordinates.size
+ childPosition[0] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
}
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.alignWithSiblings { 0 }
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[1] = coordinates.size
+ childPosition[1] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ BaselineTestLayout(
+ width = sizeDp,
+ height = sizeDp,
+ baseline = firstBaseline1Dp,
+ modifier = Modifier.alignWithSiblings(TestVerticalLine)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[2] = coordinates.size
+ childPosition[2] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ BaselineTestLayout(
+ width = sizeDp,
+ height = sizeDp,
+ baseline = firstBaseline2Dp,
+ modifier = Modifier.alignWithSiblings(TestVerticalLine)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ childSize[3] = coordinates.size
+ childPosition[3] = coordinates.globalPosition
+ drawLatch.countDown()
+ }
+ ) {
+ }
+ }
}
assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
@@ -1616,7 +1622,7 @@
assertEquals(Constraints(), constraints)
FixedSizeLayout(noWeightChildWidth.toIntPx(), 0, mapOf())
}
- Layout({}, Modifier.weight(1f)) { _, constraints, _ ->
+ Layout({}, Modifier.weight(1f)) { _, constraints ->
assertEquals(
rowMinWidth.toIntPx() - noWeightChildWidth.toIntPx() * 2,
constraints.minWidth
@@ -2020,11 +2026,12 @@
drawLatch.countDown()
}
) {
- Container(Modifier.weight(1f)
- .onPositioned { coordinates: LayoutCoordinates ->
- expandedChildSize = coordinates.size
- drawLatch.countDown()
- },
+ Container(
+ Modifier.weight(1f)
+ .onPositioned { coordinates: LayoutCoordinates ->
+ expandedChildSize = coordinates.size
+ drawLatch.countDown()
+ },
width = sizeDp,
height = sizeDp
) {
@@ -2066,7 +2073,7 @@
assertEquals(Constraints(), constraints)
FixedSizeLayout(0, noWeightChildHeight.toIntPx(), mapOf())
}
- Layout(emptyContent(), Modifier.weight(1f)) { _, constraints, _ ->
+ Layout(emptyContent(), Modifier.weight(1f)) { _, constraints ->
assertEquals(
columnMinHeight.toIntPx() - noWeightChildHeight.toIntPx() * 2,
constraints.minHeight
@@ -2133,7 +2140,7 @@
// region Main axis alignment tests in Row
@Test
- fun testRow_withBeginArrangement() = with(density) {
+ fun testRow_withStartArrangement() = with(density) {
val sizeDp = 50.toDp()
val size = sizeDp.toIntPx()
@@ -2481,7 +2488,7 @@
// region Main axis alignment tests in Column
@Test
- fun testColumn_withStartArrangement() = with(density) {
+ fun testColumn_withTopArrangement() = with(density) {
val sizeDp = 50.toDp()
val size = sizeDp.toIntPx()
@@ -2524,7 +2531,7 @@
}
@Test
- fun testColumn_withEndArrangement() = with(density) {
+ fun testColumn_withBottomArrangement() = with(density) {
val sizeDp = 50.toDp()
val size = sizeDp.toIntPx()
@@ -2878,10 +2885,10 @@
Column {
Spacer(
Modifier.preferredSize(width = childSizeDp, height = childSizeDp) +
- Modifier.onPositioned { coordinates: LayoutCoordinates ->
- containerSize.value = coordinates.size
- layoutLatch.countDown()
- })
+ Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ containerSize.value = coordinates.size
+ layoutLatch.countDown()
+ })
}
}
}
@@ -2937,8 +2944,10 @@
}
}, @Composable {
Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Center) {
- Container(Modifier.gravity(Alignment.CenterVertically).aspectRatio(2f),
- children = emptyContent())
+ Container(
+ Modifier.gravity(Alignment.CenterVertically).aspectRatio(2f),
+ children = emptyContent()
+ )
ConstrainedBox(
DpConstraints.fixed(50.toDp(), 40.toDp()),
Modifier.gravity(Alignment.CenterVertically),
@@ -2947,8 +2956,10 @@
}
}, @Composable {
Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End) {
- Container(Modifier.gravity(Alignment.Bottom).aspectRatio(2f),
- children = emptyContent())
+ Container(
+ Modifier.gravity(Alignment.Bottom).aspectRatio(2f),
+ children = emptyContent()
+ )
ConstrainedBox(
DpConstraints.fixed(50.toDp(), 40.toDp()),
Modifier.gravity(Alignment.Bottom),
@@ -3204,8 +3215,10 @@
}
}, @Composable {
Column {
- Container(Modifier.aspectRatio(2f).gravity(Alignment.Start),
- children = emptyContent())
+ Container(
+ Modifier.aspectRatio(2f).gravity(Alignment.Start),
+ children = emptyContent()
+ )
ConstrainedBox(
DpConstraints.fixed(50.toDp(), 40.toDp()),
Modifier.gravity(Alignment.End),
@@ -3236,14 +3249,18 @@
}
}, @Composable {
Column(Modifier.fillMaxHeight(), verticalArrangement = Arrangement.Center) {
- Container(Modifier.gravity(Alignment.CenterHorizontally).aspectRatio(2f),
- children = emptyContent())
+ Container(
+ Modifier.gravity(Alignment.CenterHorizontally).aspectRatio(2f),
+ children = emptyContent()
+ )
ConstrainedBox(DpConstraints.fixed(50.toDp(), 40.toDp()), children = emptyContent())
}
}, @Composable {
Column(Modifier.fillMaxHeight(), verticalArrangement = Arrangement.Bottom) {
- Container(Modifier.gravity(Alignment.End).aspectRatio(2f),
- children = emptyContent())
+ Container(
+ Modifier.gravity(Alignment.End).aspectRatio(2f),
+ children = emptyContent()
+ )
ConstrainedBox(
DpConstraints.fixed(50.toDp(), 40.toDp()),
Modifier.gravity(Alignment.End),
@@ -3325,8 +3342,10 @@
children = emptyContent()
)
Container(Modifier.aspectRatio(0.5f).weight(2f)) { }
- ConstrainedBox(DpConstraints.fixed(30.toDp(), 20.toDp()),
- Modifier.gravity(Alignment.End)) { }
+ ConstrainedBox(
+ DpConstraints.fixed(30.toDp(), 20.toDp()),
+ Modifier.gravity(Alignment.End)
+ ) { }
}
}, @Composable {
Column(verticalArrangement = Arrangement.Top) {
@@ -3561,6 +3580,219 @@
}
@Test
+ fun testRow_Rtl_arrangementCenter() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = Arrangement.Center
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val extraSpace = root.width - size * 3
+ assertEquals(
+ Offset(
+ ((extraSpace / 2f) + size.toFloat() * 2).roundToInt().toFloat(),
+ 0f
+ ),
+ childPosition[0]
+ )
+ assertEquals(
+ Offset(((extraSpace / 2f) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(Offset((extraSpace / 2f).roundToInt().toFloat(), 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_Rtl_arrangementSpaceEvenly() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = Arrangement.SpaceEvenly
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3f) / 4f
+ assertEquals(
+ Offset((size.toFloat() * 2f + gap * 3f).roundToInt().toFloat(), 0f),
+ childPosition[0]
+ )
+ assertEquals(
+ Offset((size.toFloat() + gap * 2f).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset(gap.roundToInt().toFloat(), 0f), childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_Rtl_arrangementSpaceBetween() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = Arrangement.SpaceBetween
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3) / 2
+ assertEquals(
+ Offset((gap * 2 + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[0]
+ )
+ assertEquals(
+ Offset((gap + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(Offset(0f, 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_Rtl_arrangementSpaceAround() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = Arrangement.SpaceAround
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width.toFloat() - size * 3) / 3
+ assertEquals(
+ Offset(((gap * 5 / 2) + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[0]
+ )
+ assertEquals(
+ Offset(((gap * 3 / 2) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(Offset((gap / 2f).roundToInt().toFloat(), 0f), childPosition[2])
+ }
+
+ @Test
fun testRow_Rtl_arrangementEnd() = with(density) {
val sizeDp = 35.toDp()
@@ -3764,12 +3996,615 @@
assertEquals(Offset((rootWidth - size.toFloat()), 0f), childPosition[0])
assertEquals(
- Offset((rootWidth - size.toFloat() * 1.5f).roundToInt().toFloat(),
- size.toFloat()),
+ Offset(
+ (rootWidth - size.toFloat() * 1.5f).roundToInt().toFloat(),
+ size.toFloat()
+ ),
childPosition[1]
)
}
+ //endregion
+ // region AbsoluteArrangement tests
+ @Test
+ fun testRow_absoluteArrangementLeft() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Left
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ assertEquals(Offset(0f, 0f), childPosition[0])
+ assertEquals(Offset(size.toFloat(), 0f), childPosition[1])
+ assertEquals(Offset(size.toFloat() * 2, 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_Rtl_absoluteArrangementLeft() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Left
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ assertEquals(Offset(0f, 0f), childPosition[0])
+ assertEquals(Offset(size.toFloat(), 0f), childPosition[1])
+ assertEquals(Offset(size.toFloat() * 2, 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_absoluteArrangementRight() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Right
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ assertEquals(Offset((root.width - size.toFloat() * 3), 0f), childPosition[0])
+ assertEquals(Offset((root.width - size.toFloat() * 2), 0f), childPosition[1])
+ assertEquals(Offset((root.width - size.toFloat()), 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_Rtl_absoluteArrangementRight() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Right
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ assertEquals(Offset((root.width - size.toFloat() * 3), 0f), childPosition[0])
+ assertEquals(Offset((root.width - size.toFloat() * 2), 0f), childPosition[1])
+ assertEquals(Offset((root.width - size.toFloat()), 0f), childPosition[2])
+ }
+
+ @Test
+ fun testRow_absoluteArrangementCenter() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Center
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val extraSpace = root.width - size * 3
+ assertEquals(Offset((extraSpace / 2f).roundToInt().toFloat(), 0f), childPosition[0])
+ assertEquals(
+ Offset(((extraSpace / 2f) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset(
+ ((extraSpace / 2f) + size.toFloat() * 2).roundToInt().toFloat(),
+ 0f
+ ),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_Rtl_absoluteArrangementCenter() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.Center
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val extraSpace = root.width - size * 3
+ assertEquals(Offset((extraSpace / 2f).roundToInt().toFloat(), 0f), childPosition[0])
+ assertEquals(
+ Offset(((extraSpace / 2f) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset(
+ ((extraSpace / 2f) + size.toFloat() * 2).roundToInt().toFloat(),
+ 0f
+ ),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_absoluteArrangementSpaceEvenly() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceEvenly
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3f) / 4f
+ assertEquals(
+ Offset(gap.roundToInt().toFloat(), 0f), childPosition[0]
+ )
+ assertEquals(
+ Offset((size.toFloat() + gap * 2f).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset((size.toFloat() * 2f + gap * 3f).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_Row_absoluteArrangementSpaceEvenly() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates: LayoutCoordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceEvenly
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3f) / 4f
+ assertEquals(
+ Offset(gap.roundToInt().toFloat(), 0f), childPosition[0]
+ )
+ assertEquals(
+ Offset((size.toFloat() + gap * 2f).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset((size.toFloat() * 2f + gap * 3f).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_absoluteArrangementSpaceBetween() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceBetween
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3) / 2
+ assertEquals(Offset(0f, 0f), childPosition[0])
+ assertEquals(
+ Offset((gap + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset((gap * 2 + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_Row_absoluteArrangementSpaceBetween() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceBetween
+ ) {
+ for (i in childPosition.indices) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width - size.toFloat() * 3) / 2
+ assertEquals(Offset(0f, 0f), childPosition[0])
+ assertEquals(
+ Offset((gap + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset((gap * 2 + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_absoluteArrangementSpaceAround() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceAround
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width.toFloat() - size * 3) / 3
+ assertEquals(Offset((gap / 2f).roundToInt().toFloat(), 0f), childPosition[0])
+ assertEquals(
+ Offset(((gap * 3 / 2) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset(((gap * 5 / 2) + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
+
+ @Test
+ fun testRow_Rtl_absoluteArrangementSpaceAround() = with(density) {
+ val size = 100
+ val sizeDp = size.toDp()
+
+ val drawLatch = CountDownLatch(4)
+ val childPosition = Array(3) { Offset.Zero }
+ val childLayoutCoordinates = arrayOfNulls<LayoutCoordinates?>(childPosition.size)
+ var parentLayoutCoordinates: LayoutCoordinates? = null
+ show {
+ Row(
+ modifier = Modifier
+ .fillMaxWidth()
+ .rtl
+ .onPositioned { coordinates ->
+ parentLayoutCoordinates = coordinates
+ drawLatch.countDown()
+ },
+ horizontalArrangement = AbsoluteArrangement.SpaceAround
+ ) {
+ for (i in 0 until childPosition.size) {
+ Container(
+ width = sizeDp,
+ height = sizeDp,
+ modifier = Modifier.onPositioned { coordinates: LayoutCoordinates ->
+ childLayoutCoordinates[i] = coordinates
+ drawLatch.countDown()
+ },
+ children = emptyContent()
+ )
+ }
+ }
+ }
+ assertTrue(drawLatch.await(1, TimeUnit.SECONDS))
+
+ calculateChildPositions(childPosition, parentLayoutCoordinates, childLayoutCoordinates)
+
+ val root = findOwnerView()
+ waitForDraw(root)
+
+ val gap = (root.width.toFloat() - size * 3) / 3
+ assertEquals(Offset((gap / 2f).roundToInt().toFloat(), 0f), childPosition[0])
+ assertEquals(
+ Offset(((gap * 3 / 2) + size.toFloat()).roundToInt().toFloat(), 0f),
+ childPosition[1]
+ )
+ assertEquals(
+ Offset(((gap * 5 / 2) + size.toFloat() * 2).roundToInt().toFloat(), 0f),
+ childPosition[2]
+ )
+ }
// endregion
}
@@ -3784,7 +4619,7 @@
modifier: Modifier,
children: @Composable () -> Unit
) {
- Layout(children = children, modifier = modifier, measureBlock = { _, constraints, _ ->
+ Layout(children = children, modifier = modifier, measureBlock = { _, constraints ->
val widthPx = max(width.toIntPx(), constraints.minWidth)
val heightPx = max(height.toIntPx(), constraints.minHeight)
layout(
@@ -3797,7 +4632,7 @@
// Center composable function is deprected whereas FlexTest tests heavily depend on it.
@Composable
private fun Center(children: @Composable () -> Unit) {
- Layout(children) { measurables, constraints, _ ->
+ Layout(children) { measurables, constraints ->
val measurable = measurables.firstOrNull()
// The child cannot be larger than our max constraints, but we ignore min constraints.
val placeable = measurable?.measure(constraints.copy(minWidth = 0, minHeight = 0))
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/AlignmentLine.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/AlignmentLine.kt
index 1044229..5525634 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/AlignmentLine.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/AlignmentLine.kt
@@ -62,7 +62,7 @@
after: Dp = 0.dp,
children: @Composable () -> Unit
) {
- Layout(children, modifier) { measurables, constraints, _ ->
+ Layout(children, modifier) { measurables, constraints ->
require(measurables.isNotEmpty()) { "No child found in AlignmentLineOffset" }
val placeable = measurables.first().measure(
// Loose constraints perpendicular on the alignment line.
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
index 6c5205b..12e5436 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Column.kt
@@ -68,7 +68,9 @@
RowColumnImpl(
orientation = LayoutOrientation.Vertical,
modifier = modifier,
- arrangement = verticalArrangement,
+ arrangement = { totalSize, size, _ ->
+ verticalArrangement.arrange(totalSize, size)
+ },
crossAxisAlignment = CrossAxisAlignment.horizontal(horizontalGravity),
crossAxisSize = SizeMode.Wrap,
children = { ColumnScope.children() }
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
index 18e5b1e..d902220 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/ConstraintLayout.kt
@@ -77,7 +77,7 @@
MultiMeasureLayout(modifier = modifier, children = {
scope.reset()
scope.children()
- }) { measurables, constraints, layoutDirection ->
+ }) { measurables, constraints ->
val constraintSet = object : ConstraintSet {
override fun applyTo(state: State, measurables: List<Measurable>) {
scope.applyTo(state)
@@ -123,7 +123,7 @@
) {
val measurer = remember { Measurer() }
@Suppress("Deprecation")
- MultiMeasureLayout(modifier, children) { measurables, constraints, layoutDirection ->
+ MultiMeasureLayout(modifier, children) { measurables, constraints ->
val layoutSize = measurer.performMeasure(
constraints,
layoutDirection,
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
index 6d66fd1..437afd1 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
@@ -146,7 +146,7 @@
fun Placeable.crossAxisSize() =
if (orientation == LayoutOrientation.Horizontal) height else width
- Layout(children) { measurables, outerConstraints, layoutDirection ->
+ Layout(children) { measurables, outerConstraints ->
val sequences = mutableListOf<List<Placeable>>()
val crossAxisSizes = mutableListOf<Int>()
val crossAxisPositions = mutableListOf<Int>()
@@ -241,8 +241,7 @@
// Handle vertical direction
val mainAxisPositions = arrangement.arrange(
mainAxisLayoutSize,
- childrenMainAxisSizes,
- layoutDirection
+ childrenMainAxisSizes
)
placeables.fastForEachIndexed { j, placeable ->
val crossAxis = when (crossAxisAlignment) {
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
index 06dfdaa..a16a59c 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
@@ -197,19 +197,19 @@
fun MinIntrinsicWidth(children: @Composable () -> Unit) {
Layout(
children,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.minIntrinsicWidth(h) ?: 0
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.minIntrinsicHeight(w) ?: 0
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.minIntrinsicWidth(h) ?: 0
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.maxIntrinsicHeight(w) ?: 0
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val measurable = measurables.firstOrNull()
val width = measurable?.minIntrinsicWidth(constraints.maxHeight, layoutDirection) ?: 0
val placeable = measurable?.measure(
@@ -231,19 +231,19 @@
fun MinIntrinsicHeight(children: @Composable () -> Unit) {
Layout(
children,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.minIntrinsicWidth(h) ?: 0
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.minIntrinsicHeight(w) ?: 0
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.maxIntrinsicWidth(h) ?: 0
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.minIntrinsicHeight(w) ?: 0
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val measurable = measurables.firstOrNull()
val height = measurable?.minIntrinsicHeight(constraints.maxWidth) ?: 0
val placeable = measurable?.measure(
@@ -265,19 +265,19 @@
fun MaxIntrinsicWidth(children: @Composable () -> Unit) {
Layout(
children,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.maxIntrinsicWidth(h) ?: 0
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.minIntrinsicHeight(w) ?: 0
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.maxIntrinsicWidth(h) ?: 0
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.maxIntrinsicHeight(w) ?: 0
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val measurable = measurables.firstOrNull()
val width = measurable?.maxIntrinsicWidth(constraints.maxHeight) ?: 0
val placeable = measurable?.measure(
@@ -299,19 +299,19 @@
fun MaxIntrinsicHeight(children: @Composable () -> Unit) {
Layout(
children,
- minIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ minIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.minIntrinsicWidth(h) ?: 0
},
- minIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ minIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.maxIntrinsicHeight(w) ?: 0
},
- maxIntrinsicWidthMeasureBlock = { measurables, h, _ ->
+ maxIntrinsicWidthMeasureBlock = { measurables, h ->
measurables.firstOrNull()?.maxIntrinsicWidth(h) ?: 0
},
- maxIntrinsicHeightMeasureBlock = { measurables, w, _ ->
+ maxIntrinsicHeightMeasureBlock = { measurables, w ->
measurables.firstOrNull()?.maxIntrinsicHeight(w) ?: 0
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val measurable = measurables.firstOrNull()
val height = measurable?.maxIntrinsicHeight(constraints.maxWidth) ?: 0
val placeable = measurable?.measure(
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
index 25e0ebe..e3aa16b1 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Row.kt
@@ -66,7 +66,9 @@
RowColumnImpl(
orientation = LayoutOrientation.Horizontal,
modifier = modifier,
- arrangement = horizontalArrangement,
+ arrangement = { totalSize, size, layoutDirection ->
+ horizontalArrangement.arrange(totalSize, size, layoutDirection)
+ },
crossAxisAlignment = CrossAxisAlignment.vertical(verticalGravity),
crossAxisSize = SizeMode.Wrap,
children = { RowScope.children() }
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/RowColumnImpl.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/RowColumnImpl.kt
index cb3b601..e968409 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/RowColumnImpl.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/RowColumnImpl.kt
@@ -23,7 +23,7 @@
import androidx.ui.core.AlignmentLine
import androidx.ui.core.Constraints
import androidx.ui.core.IntrinsicMeasurable
-import androidx.ui.core.IntrinsicMeasureBlock
+import androidx.ui.core.IntrinsicMeasureBlock2
import androidx.ui.core.Layout
import androidx.ui.core.LayoutDirection
import androidx.ui.core.Measured
@@ -45,13 +45,14 @@
internal fun RowColumnImpl(
orientation: LayoutOrientation,
modifier: Modifier = Modifier,
- arrangement: Arrangement,
+ arrangement: (Int, List<Int>, LayoutDirection) -> List<Int>,
crossAxisSize: SizeMode,
crossAxisAlignment: CrossAxisAlignment,
children: @Composable () -> Unit
) {
fun Placeable.mainAxisSize() =
if (orientation == LayoutOrientation.Horizontal) width else height
+
fun Placeable.crossAxisSize() =
if (orientation == LayoutOrientation.Horizontal) height else width
@@ -62,15 +63,7 @@
minIntrinsicHeightMeasureBlock = MinIntrinsicHeightMeasureBlock(orientation),
maxIntrinsicWidthMeasureBlock = MaxIntrinsicWidthMeasureBlock(orientation),
maxIntrinsicHeightMeasureBlock = MaxIntrinsicHeightMeasureBlock(orientation)
- ) { ltrMeasurables, outerConstraints, layoutDirection ->
- // rtl support
- val measurables = if (orientation == LayoutOrientation.Horizontal &&
- layoutDirection == LayoutDirection.Rtl) {
- ltrMeasurables.asReversed()
- } else {
- ltrMeasurables
- }
-
+ ) { measurables, outerConstraints ->
val constraints = OrientationIndependentConstraints(outerConstraints, orientation)
var totalWeight = 0f
@@ -219,13 +212,15 @@
} else {
mainAxisLayoutSize
}
+
layout(layoutWidth, layoutHeight) {
val childrenMainAxisSize = placeables.map { it!!.mainAxisSize() }
- val mainAxisPositions = arrangement.arrange(
+ val mainAxisPositions = arrangement(
mainAxisLayoutSize,
childrenMainAxisSize,
layoutDirection
)
+
placeables.forEachIndexed { index, placeable ->
placeable!!
val parentData = rowColumnParentData[index]
@@ -255,30 +250,36 @@
/**
* Used to specify the arrangement of the layout's children in [Row] or [Column] in the main axis
* direction (horizontal and vertical, respectively).
- * @constructor Creates an arrangement using the [arrange] function. Use it to provide your own
- * arrangement of the layout's children.
*/
@Immutable
-interface Arrangement {
- /**
- * Places the layout children inside the parent layout along the main axis.
- *
- * @param totalSize Available space that can be occupied by the children.
- * @param size A list of sizes of all children.
- * @param layoutDirection A layout direction, left-to-right or right-to-left, of the parent
- * layout that should be taken into account when determining positions of the children in
- * horizontal direction.
- */
- fun arrange(totalSize: Int, size: List<Int>, layoutDirection: LayoutDirection): List<Int>
-
+object Arrangement {
/**
* Used to specify the vertical arrangement of the layout's children in a [Column].
*/
- interface Vertical : Arrangement
+ interface Vertical {
+ /**
+ * Vertically places the layout children inside the [Column].
+ *
+ * @param totalSize Available space that can be occupied by the children.
+ * @param size A list of sizes of all children.
+ */
+ fun arrange(totalSize: Int, size: List<Int>): List<Int>
+ }
+
/**
* Used to specify the horizontal arrangement of the layout's children in a [Row].
*/
- interface Horizontal : Arrangement
+ interface Horizontal {
+ /**
+ * Horizontally places the layout children inside the [Row].
+ *
+ * @param totalSize Available space that can be occupied by the children.
+ * @param size A list of sizes of all children.
+ * @param layoutDirection A layout direction, left-to-right or right-to-left, of the parent
+ * layout that should be taken into account when determining positions of the children.
+ */
+ fun arrange(totalSize: Int, size: List<Int>, layoutDirection: LayoutDirection): List<Int>
+ }
/**
* Place children horizontally such that they are as close as possible to the beginning of the
@@ -292,7 +293,7 @@
) = if (layoutDirection == LayoutDirection.Ltr) {
placeLeftOrTop(size)
} else {
- placeRightOrBottom(totalSize, size)
+ placeRightOrBottom(totalSize, size.asReversed()).asReversed()
}
}
@@ -308,7 +309,7 @@
) = if (layoutDirection == LayoutDirection.Ltr) {
placeRightOrBottom(totalSize, size)
} else {
- placeLeftOrTop(size)
+ placeLeftOrTop(size.asReversed()).asReversed()
}
}
@@ -317,11 +318,7 @@
* axis.
*/
object Top : Vertical {
- override fun arrange(
- totalSize: Int,
- size: List<Int>,
- layoutDirection: LayoutDirection
- ) = placeLeftOrTop(size)
+ override fun arrange(totalSize: Int, size: List<Int>) = placeLeftOrTop(size)
}
/**
@@ -329,11 +326,7 @@
* axis.
*/
object Bottom : Vertical {
- override fun arrange(
- totalSize: Int,
- size: List<Int>,
- layoutDirection: LayoutDirection
- ) = placeRightOrBottom(totalSize, size)
+ override fun arrange(totalSize: Int, size: List<Int>) = placeRightOrBottom(totalSize, size)
}
/**
@@ -344,16 +337,13 @@
totalSize: Int,
size: List<Int>,
layoutDirection: LayoutDirection
- ): List<Int> {
- val consumedSize = size.fold(0) { a, b -> a + b }
- val positions = mutableListOf<Int>()
- var current = (totalSize - consumedSize).toFloat() / 2
- size.fastForEach {
- positions.add(current.roundToInt())
- current += it.toFloat()
- }
- return positions
+ ) = if (layoutDirection == LayoutDirection.Ltr) {
+ placeCenter(totalSize, size)
+ } else {
+ placeCenter(totalSize, size.asReversed()).asReversed()
}
+
+ override fun arrange(totalSize: Int, size: List<Int>) = placeCenter(totalSize, size)
}
/**
@@ -365,17 +355,13 @@
totalSize: Int,
size: List<Int>,
layoutDirection: LayoutDirection
- ): List<Int> {
- val consumedSize = size.fold(0) { a, b -> a + b }
- val gapSize = (totalSize - consumedSize).toFloat() / (size.size + 1)
- val positions = mutableListOf<Int>()
- var current = gapSize
- size.fastForEach {
- positions.add(current.roundToInt())
- current += it.toFloat() + gapSize
- }
- return positions
+ ) = if (layoutDirection == LayoutDirection.Ltr) {
+ placeSpaceEvenly(totalSize, size)
+ } else {
+ placeSpaceEvenly(totalSize, size.asReversed()).asReversed()
}
+
+ override fun arrange(totalSize: Int, size: List<Int>) = placeSpaceEvenly(totalSize, size)
}
/**
@@ -387,21 +373,13 @@
totalSize: Int,
size: List<Int>,
layoutDirection: LayoutDirection
- ): List<Int> {
- val consumedSize = size.fold(0) { a, b -> a + b }
- val gapSize = if (size.size > 1) {
- (totalSize - consumedSize).toFloat() / (size.size - 1)
- } else {
- 0f
- }
- val positions = mutableListOf<Int>()
- var current = 0f
- size.fastForEach {
- positions.add(current.roundToInt())
- current += it.toFloat() + gapSize
- }
- return positions
+ ) = if (layoutDirection == LayoutDirection.Ltr) {
+ placeSpaceBetween(totalSize, size)
+ } else {
+ placeSpaceBetween(totalSize, size.asReversed()).asReversed()
}
+
+ override fun arrange(totalSize: Int, size: List<Int>) = placeSpaceBetween(totalSize, size)
}
/**
@@ -414,43 +392,182 @@
totalSize: Int,
size: List<Int>,
layoutDirection: LayoutDirection
- ): List<Int> {
- val consumedSize = size.fold(0) { a, b -> a + b }
- val gapSize = if (size.isNotEmpty()) {
- (totalSize - consumedSize).toFloat() / size.size
- } else {
- 0f
- }
- val positions = mutableListOf<Int>()
- var current = gapSize / 2
- size.fastForEach {
- positions.add(current.roundToInt())
- current += it.toFloat() + gapSize
- }
- return positions
+ ) = if (layoutDirection == LayoutDirection.Ltr) {
+ placeSpaceAround(totalSize, size)
+ } else {
+ placeSpaceAround(totalSize, size.asReversed()).asReversed()
}
+
+ override fun arrange(totalSize: Int, size: List<Int>) = placeSpaceAround(totalSize, size)
}
- private companion object {
- private fun placeRightOrBottom(totalSize: Int, size: List<Int>): List<Int> {
- val consumedSize = size.fold(0) { a, b -> a + b }
- val positions = mutableListOf<Int>()
- var current = totalSize - consumedSize
- size.fastForEach {
- positions.add(current)
- current += it
- }
- return positions
+ internal fun placeRightOrBottom(totalSize: Int, size: List<Int>): List<Int> {
+ val consumedSize = size.fold(0) { a, b -> a + b }
+ val positions = mutableListOf<Int>()
+ var current = totalSize - consumedSize
+ size.fastForEach {
+ positions.add(current)
+ current += it
}
- private fun placeLeftOrTop(size: List<Int>): List<Int> {
- val positions = mutableListOf<Int>()
- var current = 0
- size.fastForEach {
- positions.add(current)
- current += it
- }
- return positions
+ return positions
+ }
+
+ internal fun placeLeftOrTop(size: List<Int>): List<Int> {
+ val positions = mutableListOf<Int>()
+ var current = 0
+ size.fastForEach {
+ positions.add(current)
+ current += it
}
+ return positions
+ }
+
+ internal fun placeCenter(totalSize: Int, size: List<Int>): List<Int> {
+ val consumedSize = size.fold(0) { a, b -> a + b }
+ val positions = mutableListOf<Int>()
+ var current = (totalSize - consumedSize).toFloat() / 2
+ size.fastForEach {
+ positions.add(current.roundToInt())
+ current += it.toFloat()
+ }
+ return positions
+ }
+
+ internal fun placeSpaceEvenly(totalSize: Int, size: List<Int>): List<Int> {
+ val consumedSize = size.fold(0) { a, b -> a + b }
+ val gapSize = (totalSize - consumedSize).toFloat() / (size.size + 1)
+ val positions = mutableListOf<Int>()
+ var current = gapSize
+ size.fastForEach {
+ positions.add(current.roundToInt())
+ current += it.toFloat() + gapSize
+ }
+ return positions
+ }
+
+ internal fun placeSpaceBetween(totalSize: Int, size: List<Int>): List<Int> {
+ val consumedSize = size.fold(0) { a, b -> a + b }
+ val gapSize = if (size.size > 1) {
+ (totalSize - consumedSize).toFloat() / (size.size - 1)
+ } else {
+ 0f
+ }
+ val positions = mutableListOf<Int>()
+ var current = 0f
+ size.fastForEach {
+ positions.add(current.roundToInt())
+ current += it.toFloat() + gapSize
+ }
+ return positions
+ }
+
+ internal fun placeSpaceAround(totalSize: Int, size: List<Int>): List<Int> {
+ val consumedSize = size.fold(0) { a, b -> a + b }
+ val gapSize = if (size.isNotEmpty()) {
+ (totalSize - consumedSize).toFloat() / size.size
+ } else {
+ 0f
+ }
+ val positions = mutableListOf<Int>()
+ var current = gapSize / 2
+ size.fastForEach {
+ positions.add(current.roundToInt())
+ current += it.toFloat() + gapSize
+ }
+ return positions
+ }
+}
+
+@Immutable
+object AbsoluteArrangement {
+ /**
+ * Place children horizontally such that they are as close as possible to the left edge of
+ * the [Row].
+ *
+ * Unlike [Arrangement.Start], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object Left : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeLeftOrTop(size)
+ }
+
+ /**
+ * Place children such that they are as close as possible to the middle of the [Row].
+ *
+ * Unlike [Arrangement.Center], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object Center : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeCenter(totalSize, size)
+ }
+
+ /**
+ * Place children horizontally such that they are as close as possible to the right edge of
+ * the [Row].
+ *
+ * Unlike [Arrangement.End], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object Right : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeRightOrBottom(totalSize, size)
+ }
+
+ /**
+ * Place children such that they are spaced evenly across the main axis, without free
+ * space before the first child or after the last child.
+ *
+ * Unlike [Arrangement.SpaceBetween], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object SpaceBetween : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeSpaceBetween(totalSize, size)
+ }
+
+ /**
+ * Place children such that they are spaced evenly across the main axis, including free
+ * space before the first child and after the last child.
+ *
+ * Unlike [Arrangement.SpaceEvenly], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object SpaceEvenly : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeSpaceEvenly(totalSize, size)
+ }
+
+ /**
+ * Place children such that they are spaced evenly horizontally, including free
+ * space before the first child and after the last child, but half the amount of space
+ * existing otherwise between two consecutive children.
+ *
+ * Unlike [Arrangement.SpaceAround], in RTL context positions of the children will not be
+ * mirrored and as such children will appear in the order they are put inside the [Row].
+ */
+ object SpaceAround : Arrangement.Horizontal {
+ override fun arrange(
+ totalSize: Int,
+ size: List<Int>,
+ layoutDirection: LayoutDirection
+ ) = Arrangement.placeSpaceAround(totalSize, size)
}
}
@@ -482,31 +599,36 @@
/**
* Used to specify the alignment of a layout's children, in main axis direction.
*/
-enum class MainAxisAlignment(internal val arrangement: Arrangement) {
+enum class MainAxisAlignment(internal val arrangement: Arrangement.Vertical) {
// TODO(soboleva) support RTl in Flow
// workaround for now - use Arrangement that equals to previous Arrangement
/**
* Place children such that they are as close as possible to the middle of the main axis.
*/
Center(Arrangement.Center),
+
/**
* Place children such that they are as close as possible to the start of the main axis.
*/
Start(Arrangement.Top),
+
/**
* Place children such that they are as close as possible to the end of the main axis.
*/
End(Arrangement.Bottom),
+
/**
* Place children such that they are spaced evenly across the main axis, including free
* space before the first child and after the last child.
*/
SpaceEvenly(Arrangement.SpaceEvenly),
+
/**
* Place children such that they are spaced evenly across the main axis, without free
* space before the first child or after the last child.
*/
SpaceBetween(Arrangement.SpaceBetween),
+
/**
* Place children such that they are spaced evenly across the main axis, including free
* space before the first child and after the last child, but half the amount of space
@@ -569,11 +691,13 @@
*/
@Stable
val End: CrossAxisAlignment = EndCrossAxisAlignment
+
/**
* Align children by their baseline.
*/
fun AlignmentLine(alignmentLine: AlignmentLine): CrossAxisAlignment =
AlignmentLineCrossAxisAlignment(AlignmentLineProvider.Value(alignmentLine))
+
/**
* Align children relative to their siblings using the alignment line provided as a
* parameter using [AlignmentLineProvider].
@@ -778,7 +902,7 @@
}
private object IntrinsicMeasureBlocks {
- val HorizontalMinWidth: IntrinsicMeasureBlock = { measurables, availableHeight, _ ->
+ val HorizontalMinWidth: IntrinsicMeasureBlock2 = { measurables, availableHeight ->
intrinsicSize(
measurables,
{ h -> minIntrinsicWidth(h) },
@@ -788,7 +912,7 @@
LayoutOrientation.Horizontal
)
}
- val VerticalMinWidth: IntrinsicMeasureBlock = { measurables, availableHeight, _ ->
+ val VerticalMinWidth: IntrinsicMeasureBlock2 = { measurables, availableHeight ->
intrinsicSize(
measurables,
{ h -> minIntrinsicWidth(h) },
@@ -798,7 +922,7 @@
LayoutOrientation.Horizontal
)
}
- val HorizontalMinHeight: IntrinsicMeasureBlock = { measurables, availableWidth, _ ->
+ val HorizontalMinHeight: IntrinsicMeasureBlock2 = { measurables, availableWidth ->
intrinsicSize(
measurables,
{ w -> minIntrinsicHeight(w) },
@@ -808,7 +932,7 @@
LayoutOrientation.Vertical
)
}
- val VerticalMinHeight: IntrinsicMeasureBlock = { measurables, availableWidth, _ ->
+ val VerticalMinHeight: IntrinsicMeasureBlock2 = { measurables, availableWidth ->
intrinsicSize(
measurables,
{ w -> minIntrinsicHeight(w) },
@@ -818,7 +942,7 @@
LayoutOrientation.Vertical
)
}
- val HorizontalMaxWidth: IntrinsicMeasureBlock = { measurables, availableHeight, _ ->
+ val HorizontalMaxWidth: IntrinsicMeasureBlock2 = { measurables, availableHeight ->
intrinsicSize(
measurables,
{ h -> maxIntrinsicWidth(h) },
@@ -828,7 +952,7 @@
LayoutOrientation.Horizontal
)
}
- val VerticalMaxWidth: IntrinsicMeasureBlock = { measurables, availableHeight, _ ->
+ val VerticalMaxWidth: IntrinsicMeasureBlock2 = { measurables, availableHeight ->
intrinsicSize(
measurables,
{ h -> maxIntrinsicWidth(h) },
@@ -838,7 +962,7 @@
LayoutOrientation.Horizontal
)
}
- val HorizontalMaxHeight: IntrinsicMeasureBlock = { measurables, availableWidth, _ ->
+ val HorizontalMaxHeight: IntrinsicMeasureBlock2 = { measurables, availableWidth ->
intrinsicSize(
measurables,
{ w -> maxIntrinsicHeight(w) },
@@ -848,7 +972,7 @@
LayoutOrientation.Vertical
)
}
- val VerticalMaxHeight: IntrinsicMeasureBlock = { measurables, availableWidth, _ ->
+ val VerticalMaxHeight: IntrinsicMeasureBlock2 = { measurables, availableWidth ->
intrinsicSize(
measurables,
{ w -> maxIntrinsicHeight(w) },
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Spacer.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Spacer.kt
index f8c9bfd..8a098b3 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Spacer.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Spacer.kt
@@ -33,7 +33,7 @@
*/
@Composable
fun Spacer(modifier: Modifier) {
- Layout(emptyContent(), modifier) { _, constraints, _ ->
+ Layout(emptyContent(), modifier) { _, constraints ->
with(constraints) {
val width = if (hasFixedWidth) maxWidth else 0
val height = if (hasFixedHeight) maxHeight else 0
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Stack.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Stack.kt
index 794d2f0..078531b 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Stack.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Stack.kt
@@ -48,7 +48,7 @@
) {
val stackChildren: @Composable () -> Unit = { StackScope().children() }
- Layout(stackChildren, modifier = modifier) { measurables, constraints, layoutDirection ->
+ Layout(stackChildren, modifier = modifier) { measurables, constraints ->
val placeables = arrayOfNulls<Placeable>(measurables.size)
// First measure aligned children to get the size of the layout.
val childConstraints = constraints.copy(minWidth = 0, minHeight = 0)
diff --git a/ui/ui-material/api/0.1.0-dev02.txt b/ui/ui-material/api/0.1.0-dev02.txt
index 9df9d9e..847d16e 100644
--- a/ui/ui-material/api/0.1.0-dev02.txt
+++ b/ui/ui-material/api/0.1.0-dev02.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -24,7 +26,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
public static final class BottomAppBar.FabConfiguration {
@@ -33,6 +35,8 @@
}
public enum BottomAppBar.FabPosition {
+ method public static androidx.ui.material.BottomAppBar.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition End;
}
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -300,7 +306,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -331,7 +337,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.core.PxPosition startPosition, androidx.ui.core.Density density, androidx.ui.core.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev04.txt b/ui/ui-material/api/0.1.0-dev04.txt
index fcaef67..5b67fbe 100644
--- a/ui/ui-material/api/0.1.0-dev04.txt
+++ b/ui/ui-material/api/0.1.0-dev04.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -19,7 +21,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -28,6 +30,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -152,6 +156,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -193,7 +199,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -219,10 +225,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -289,7 +297,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -350,7 +358,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev06.txt b/ui/ui-material/api/0.1.0-dev06.txt
index ec1b42c..7309cf9 100644
--- a/ui/ui-material/api/0.1.0-dev06.txt
+++ b/ui/ui-material/api/0.1.0-dev06.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -135,6 +139,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -181,7 +187,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -207,10 +213,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -278,7 +286,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -339,7 +347,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev07.txt b/ui/ui-material/api/0.1.0-dev07.txt
index 961204c..0e22eb4 100644
--- a/ui/ui-material/api/0.1.0-dev07.txt
+++ b/ui/ui-material/api/0.1.0-dev07.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -188,7 +194,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -214,10 +220,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -290,7 +298,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -306,7 +314,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -357,7 +365,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev08.txt b/ui/ui-material/api/0.1.0-dev08.txt
index fb252d3..64b06e1 100644
--- a/ui/ui-material/api/0.1.0-dev08.txt
+++ b/ui/ui-material/api/0.1.0-dev08.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -191,7 +197,7 @@
property public final androidx.ui.material.EmphasisLevels emphasisLevels;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -217,10 +223,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -293,7 +301,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -309,7 +317,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -360,7 +368,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev09.txt b/ui/ui-material/api/0.1.0-dev09.txt
index f6c3f38..1b45e8a 100644
--- a/ui/ui-material/api/0.1.0-dev09.txt
+++ b/ui/ui-material/api/0.1.0-dev09.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -103,6 +107,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -152,7 +158,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -178,10 +184,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -247,7 +255,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -263,7 +271,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
@androidx.compose.Immutable public final class Typography {
@@ -313,7 +321,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev10.txt b/ui/ui-material/api/0.1.0-dev10.txt
index b654a28..51916a3 100644
--- a/ui/ui-material/api/0.1.0-dev10.txt
+++ b/ui/ui-material/api/0.1.0-dev10.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -103,6 +107,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +153,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -173,10 +179,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -242,7 +250,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -258,7 +266,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -313,7 +321,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev11.txt b/ui/ui-material/api/0.1.0-dev11.txt
index 823a725..5dd5396 100644
--- a/ui/ui-material/api/0.1.0-dev11.txt
+++ b/ui/ui-material/api/0.1.0-dev11.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -107,6 +111,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -151,7 +157,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -161,7 +167,7 @@
public final class ProgressIndicatorConstants {
method public error.NonExistentClass! getDefaultStrokeWidth();
property public final error.NonExistentClass! DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -183,10 +189,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -252,7 +260,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = <anonymous class>());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -268,7 +276,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -323,7 +331,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-n_lTsus(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev12.txt b/ui/ui-material/api/0.1.0-dev12.txt
index 0821452..e5dca9f 100644
--- a/ui/ui-material/api/0.1.0-dev12.txt
+++ b/ui/ui-material/api/0.1.0-dev12.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -104,7 +108,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -113,6 +117,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -157,7 +163,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -172,7 +178,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -194,10 +200,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -265,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -281,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -336,7 +344,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-muzrHoo(androidx.ui.unit.PxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/0.1.0-dev14.txt b/ui/ui-material/api/0.1.0-dev14.txt
index e436065..f7637f7 100644
--- a/ui/ui-material/api/0.1.0-dev14.txt
+++ b/ui/ui-material/api/0.1.0-dev14.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -33,12 +35,12 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
method @androidx.compose.Composable public static void Button-YWYas6U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = Button.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
- method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
+ method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
method @androidx.compose.Composable public static inline void TextButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButton.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
}
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -172,30 +176,24 @@
method @androidx.compose.Composable public static void LinearProgressIndicator-kB8eKMs(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.primary);
}
- public final class RadioButtonConstants {
- method public long getDefaultDisabledColor();
- method public long getDefaultUnselectedColor();
- property public final long defaultDisabledColor;
- property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
- }
-
public final class RadioButtonKt {
- method @androidx.compose.Composable public static void RadioButton-mLaF0B0(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, long selectedColor = MaterialTheme.colors.secondary, long unselectedColor = RadioButtonConstants.defaultUnselectedColor, long disabledColor = RadioButtonConstants.defaultDisabledColor);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ method @androidx.compose.Composable public static void RadioButton-HeBYgfA(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.secondary);
+ method @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
- @Deprecated @androidx.compose.Stable public final class RadioGroupScope {
- method @Deprecated @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ @androidx.compose.Stable public final class RadioGroupScope {
+ method @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +265,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +281,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/0.1.0-dev15.txt b/ui/ui-material/api/0.1.0-dev15.txt
index e436065..30aaa247 100644
--- a/ui/ui-material/api/0.1.0-dev15.txt
+++ b/ui/ui-material/api/0.1.0-dev15.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -177,7 +181,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -192,10 +196,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/api_lint.ignore b/ui/ui-material/api/api_lint.ignore
deleted file mode 100644
index 7e1573a..0000000
--- a/ui/ui-material/api/api_lint.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-// Baseline format: 1.0
-NotCloseable: androidx.ui.material.ripple.RippleEffect:
- Classes that release resources (finish()) should implement AutoClosable and CloseGuard: class androidx.ui.material.ripple.RippleEffect
diff --git a/ui/ui-material/api/current.txt b/ui/ui-material/api/current.txt
index e436065..30aaa247 100644
--- a/ui/ui-material/api/current.txt
+++ b/ui/ui-material/api/current.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -177,7 +181,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -192,10 +196,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev02.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev02.txt
index 9df9d9e..847d16e 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev02.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev02.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -24,7 +26,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
public static final class BottomAppBar.FabConfiguration {
@@ -33,6 +35,8 @@
}
public enum BottomAppBar.FabPosition {
+ method public static androidx.ui.material.BottomAppBar.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition End;
}
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -300,7 +306,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -331,7 +337,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.core.PxPosition startPosition, androidx.ui.core.Density density, androidx.ui.core.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev04.txt
index fcaef67..5b67fbe 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev04.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -19,7 +21,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -28,6 +30,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -152,6 +156,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -193,7 +199,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -219,10 +225,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -289,7 +297,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -350,7 +358,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev06.txt
index ec1b42c..7309cf9 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev06.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -135,6 +139,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -181,7 +187,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -207,10 +213,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -278,7 +286,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -339,7 +347,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev07.txt
index 961204c..0e22eb4 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev07.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -188,7 +194,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -214,10 +220,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -290,7 +298,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -306,7 +314,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -357,7 +365,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev08.txt
index fb252d3..64b06e1 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev08.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -191,7 +197,7 @@
property public final androidx.ui.material.EmphasisLevels emphasisLevels;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -217,10 +223,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -293,7 +301,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -309,7 +317,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -360,7 +368,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev09.txt
index f6c3f38..1b45e8a 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev09.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -103,6 +107,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -152,7 +158,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -178,10 +184,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -247,7 +255,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -263,7 +271,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
@androidx.compose.Immutable public final class Typography {
@@ -313,7 +321,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev10.txt
index b654a28..51916a3 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev10.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -103,6 +107,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +153,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -173,10 +179,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -242,7 +250,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -258,7 +266,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -313,7 +321,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev11.txt
index 823a725..5dd5396 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev11.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -107,6 +111,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -151,7 +157,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -161,7 +167,7 @@
public final class ProgressIndicatorConstants {
method public error.NonExistentClass! getDefaultStrokeWidth();
property public final error.NonExistentClass! DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -183,10 +189,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -252,7 +260,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = <anonymous class>());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -268,7 +276,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -323,7 +331,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-n_lTsus(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev12.txt
index 0821452..e5dca9f 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev12.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -104,7 +108,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -113,6 +117,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -157,7 +163,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -172,7 +178,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -194,10 +200,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -265,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -281,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -336,7 +344,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-muzrHoo(androidx.ui.unit.PxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev14.txt
index e436065..f7637f7 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev14.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -33,12 +35,12 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
method @androidx.compose.Composable public static void Button-YWYas6U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = Button.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
- method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
+ method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
method @androidx.compose.Composable public static inline void TextButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButton.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
}
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -172,30 +176,24 @@
method @androidx.compose.Composable public static void LinearProgressIndicator-kB8eKMs(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.primary);
}
- public final class RadioButtonConstants {
- method public long getDefaultDisabledColor();
- method public long getDefaultUnselectedColor();
- property public final long defaultDisabledColor;
- property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
- }
-
public final class RadioButtonKt {
- method @androidx.compose.Composable public static void RadioButton-mLaF0B0(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, long selectedColor = MaterialTheme.colors.secondary, long unselectedColor = RadioButtonConstants.defaultUnselectedColor, long disabledColor = RadioButtonConstants.defaultDisabledColor);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ method @androidx.compose.Composable public static void RadioButton-HeBYgfA(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.secondary);
+ method @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
- @Deprecated @androidx.compose.Stable public final class RadioGroupScope {
- method @Deprecated @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ @androidx.compose.Stable public final class RadioGroupScope {
+ method @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +265,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +281,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev15.txt
index e436065..30aaa247 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev15.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -177,7 +181,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -192,10 +196,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/public_plus_experimental_current.txt b/ui/ui-material/api/public_plus_experimental_current.txt
index e436065..30aaa247 100644
--- a/ui/ui-material/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/api/public_plus_experimental_current.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -94,7 +96,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -103,6 +105,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -147,7 +151,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +166,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -177,7 +181,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -192,10 +196,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -267,7 +273,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -283,7 +289,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev02.txt b/ui/ui-material/api/restricted_0.1.0-dev02.txt
index 9df9d9e..847d16e 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev02.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev02.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -24,7 +26,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
public static final class BottomAppBar.FabConfiguration {
@@ -33,6 +35,8 @@
}
public enum BottomAppBar.FabPosition {
+ method public static androidx.ui.material.BottomAppBar.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabPosition End;
}
@@ -145,6 +149,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -300,7 +306,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -331,7 +337,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.core.PxPosition startPosition, androidx.ui.core.Density density, androidx.ui.core.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev04.txt b/ui/ui-material/api/restricted_0.1.0-dev04.txt
index fcaef67..5b67fbe 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev04.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -19,7 +21,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -28,6 +30,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -152,6 +156,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -193,7 +199,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -219,10 +225,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -289,7 +297,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator();
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -350,7 +358,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev06.txt b/ui/ui-material/api/restricted_0.1.0-dev06.txt
index 8160ebe..5ddd8b4 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev06.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -138,6 +142,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -184,7 +190,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -210,10 +216,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -281,7 +289,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -342,7 +350,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev07.txt b/ui/ui-material/api/restricted_0.1.0-dev07.txt
index ec74aea..b59f248 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev07.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -146,6 +150,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -189,7 +195,7 @@
method @androidx.compose.Composable public androidx.ui.material.EmphasisLevels emphasisLevels();
method @androidx.compose.Composable public androidx.ui.material.Shapes shapes();
method @androidx.compose.Composable public androidx.ui.material.Typography typography();
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -215,10 +221,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -291,7 +299,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -307,7 +315,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -358,7 +366,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.core.LayoutCoordinates coordinates, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev08.txt b/ui/ui-material/api/restricted_0.1.0-dev08.txt
index 1e1ed54..0d3c569 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev08.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -146,6 +150,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -192,7 +198,7 @@
property public final androidx.ui.material.EmphasisLevels emphasisLevels;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -218,10 +224,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -294,7 +302,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -310,7 +318,7 @@
public final class TextButton {
method public androidx.ui.layout.EdgeInsets getDefaultInnerPadding();
property public final androidx.ui.layout.EdgeInsets DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class Typography {
@@ -361,7 +369,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function0<kotlin.Unit> requestRedraw, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev09.txt b/ui/ui-material/api/restricted_0.1.0-dev09.txt
index b4a3746..e069c8e 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev09.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -104,6 +108,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -153,7 +159,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -179,10 +185,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -248,7 +256,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Color color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -264,7 +272,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
@androidx.compose.Immutable public final class Typography {
@@ -314,7 +322,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev10.txt b/ui/ui-material/api/restricted_0.1.0-dev10.txt
index ceaed1c..805a723 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev10.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -39,7 +43,7 @@
public final class Button {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -104,6 +108,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -148,7 +154,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -174,10 +180,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -243,7 +251,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -259,7 +267,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -314,7 +322,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev11.txt b/ui/ui-material/api/restricted_0.1.0-dev11.txt
index 23e999c..dff39d1 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev11.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -108,6 +112,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -152,7 +158,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -162,7 +168,7 @@
public final class ProgressIndicatorConstants {
method public error.NonExistentClass! getDefaultStrokeWidth();
property public final error.NonExistentClass! DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -184,10 +190,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -253,7 +261,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = <anonymous class>());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -269,7 +277,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -324,7 +332,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-n_lTsus(androidx.ui.unit.IntPxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev12.txt b/ui/ui-material/api/restricted_0.1.0-dev12.txt
index 10cc7c3..50d15f7 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev12.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -18,7 +20,7 @@
}
public final class BottomAppBar {
- field public static final androidx.ui.material.BottomAppBar! INSTANCE;
+ field public static final androidx.ui.material.BottomAppBar INSTANCE;
}
@androidx.compose.Immutable public static final class BottomAppBar.FabConfiguration {
@@ -27,6 +29,8 @@
}
public enum BottomAppBar.FabDockedPosition {
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.BottomAppBar.FabDockedPosition[] values();
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition Center;
enum_constant public static final androidx.ui.material.BottomAppBar.FabDockedPosition End;
}
@@ -43,7 +47,7 @@
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -105,7 +109,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -114,6 +118,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -158,7 +164,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -173,7 +179,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -195,10 +201,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition CenterDocked;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
@@ -266,7 +274,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
public static final class TabRow.TabPosition {
@@ -282,7 +290,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
@@ -337,7 +345,7 @@
public final class DefaultRippleEffectFactory implements androidx.ui.material.ripple.RippleEffectFactory {
method public androidx.ui.material.ripple.RippleEffect create-muzrHoo(androidx.ui.unit.PxSize size, androidx.ui.unit.PxPosition startPosition, androidx.ui.unit.Density density, androidx.ui.unit.Dp? radius, boolean clipped, androidx.animation.AnimationClockObservable clock, kotlin.jvm.functions.Function1<? super androidx.ui.material.ripple.RippleEffect,kotlin.Unit> onAnimationFinished);
- field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory! INSTANCE;
+ field public static final androidx.ui.material.ripple.DefaultRippleEffectFactory INSTANCE;
}
public final class DefaultRippleEffectKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev14.txt b/ui/ui-material/api/restricted_0.1.0-dev14.txt
index 392ee62..4bc07d5 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev14.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -33,12 +35,12 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
method @androidx.compose.Composable public static void Button-YWYas6U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = Button.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
- method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
+ method @androidx.compose.Composable public static inline void OutlinedButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = Button.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
method @androidx.compose.Composable public static inline void TextButton-5tjLhF8(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.ui.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = Button.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButton.DefaultInnerPadding, kotlin.jvm.functions.Function0<kotlin.Unit> text);
field @kotlin.PublishedApi internal static final float OutlinedStrokeOpacity = 0.12f;
}
@@ -95,7 +97,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -104,6 +106,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -148,7 +152,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -163,7 +167,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -173,30 +177,24 @@
method @androidx.compose.Composable public static void LinearProgressIndicator-kB8eKMs(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.primary);
}
- public final class RadioButtonConstants {
- method public long getDefaultDisabledColor();
- method public long getDefaultUnselectedColor();
- property public final long defaultDisabledColor;
- property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
- }
-
public final class RadioButtonKt {
- method @androidx.compose.Composable public static void RadioButton-mLaF0B0(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, long selectedColor = MaterialTheme.colors.secondary, long unselectedColor = RadioButtonConstants.defaultUnselectedColor, long disabledColor = RadioButtonConstants.defaultDisabledColor);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ method @androidx.compose.Composable public static void RadioButton-HeBYgfA(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.core.Modifier modifier = Modifier, long color = MaterialTheme.colors.secondary);
+ method @androidx.compose.Composable public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void RadioGroup-HJ2D5H4(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
- @Deprecated @androidx.compose.Stable public final class RadioGroupScope {
- method @Deprecated @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
- method @Deprecated @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
+ @androidx.compose.Stable public final class RadioGroupScope {
+ method @androidx.compose.Composable public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+ method @androidx.compose.Composable public void RadioGroupTextItem-JJAyy3w(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.core.Modifier modifier = Modifier, long radioColor = MaterialTheme.colors.secondary, androidx.ui.text.TextStyle? textStyle = null);
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -268,7 +266,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -284,7 +282,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev15.txt b/ui/ui-material/api/restricted_0.1.0-dev15.txt
index 392ee62..d7548df 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev15.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -95,7 +97,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -104,6 +106,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -148,7 +152,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -163,7 +167,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -178,7 +182,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -193,10 +197,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -268,7 +274,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -284,7 +290,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/api/restricted_current.txt b/ui/ui-material/api/restricted_current.txt
index 392ee62..d7548df 100644
--- a/ui/ui-material/api/restricted_current.txt
+++ b/ui/ui-material/api/restricted_current.txt
@@ -2,6 +2,8 @@
package androidx.ui.material {
public enum AlertDialogButtonLayout {
+ method public static androidx.ui.material.AlertDialogButtonLayout valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.AlertDialogButtonLayout[] values();
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout SideBySide;
enum_constant public static final androidx.ui.material.AlertDialogButtonLayout Stacked;
}
@@ -12,7 +14,7 @@
}
public final class AppBarKt {
- method @androidx.compose.Composable public static void BottomAppBar-RAvbXkg(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+ method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
}
@@ -33,7 +35,7 @@
property public final float DefaultMinWidth;
property public final long defaultDisabledBackgroundColor;
property public final long defaultDisabledContentColor;
- field public static final androidx.ui.material.Button! INSTANCE;
+ field public static final androidx.ui.material.Button INSTANCE;
}
public final class ButtonKt {
@@ -95,7 +97,7 @@
public final class DrawerConstants {
method public float getDefaultElevation();
property public final float DefaultElevation;
- field public static final androidx.ui.material.DrawerConstants! INSTANCE;
+ field public static final androidx.ui.material.DrawerConstants INSTANCE;
}
public final class DrawerKt {
@@ -104,6 +106,8 @@
}
public enum DrawerState {
+ method public static androidx.ui.material.DrawerState valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.DrawerState[] values();
enum_constant public static final androidx.ui.material.DrawerState Closed;
enum_constant public static final androidx.ui.material.DrawerState Opened;
}
@@ -148,7 +152,7 @@
property public final androidx.ui.material.ColorPalette colors;
property public final androidx.ui.material.Shapes shapes;
property public final androidx.ui.material.Typography typography;
- field public static final androidx.ui.material.MaterialTheme! INSTANCE;
+ field public static final androidx.ui.material.MaterialTheme INSTANCE;
}
public final class MaterialThemeKt {
@@ -163,7 +167,7 @@
public final class ProgressIndicatorConstants {
method public float getDefaultStrokeWidth();
property public final float DefaultStrokeWidth;
- field public static final androidx.ui.material.ProgressIndicatorConstants! INSTANCE;
+ field public static final androidx.ui.material.ProgressIndicatorConstants INSTANCE;
}
public final class ProgressIndicatorKt {
@@ -178,7 +182,7 @@
method public long getDefaultUnselectedColor();
property public final long defaultDisabledColor;
property public final long defaultUnselectedColor;
- field public static final androidx.ui.material.RadioButtonConstants! INSTANCE;
+ field public static final androidx.ui.material.RadioButtonConstants INSTANCE;
}
public final class RadioButtonKt {
@@ -193,10 +197,12 @@
}
public final class Scaffold {
- field public static final androidx.ui.material.Scaffold! INSTANCE;
+ field public static final androidx.ui.material.Scaffold INSTANCE;
}
public enum Scaffold.FabPosition {
+ method public static androidx.ui.material.Scaffold.FabPosition valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.material.Scaffold.FabPosition[] values();
enum_constant public static final androidx.ui.material.Scaffold.FabPosition Center;
enum_constant public static final androidx.ui.material.Scaffold.FabPosition End;
}
@@ -268,7 +274,7 @@
public final class TabRow {
method @androidx.compose.Composable public void Indicator-e8O-MNM(androidx.ui.core.Modifier modifier = Modifier, long color = contentColor());
method @androidx.compose.Composable public void IndicatorContainer(java.util.List<androidx.ui.material.TabRow.TabPosition> tabPositions, int selectedIndex, kotlin.jvm.functions.Function0<kotlin.Unit> indicator);
- field public static final androidx.ui.material.TabRow! INSTANCE;
+ field public static final androidx.ui.material.TabRow INSTANCE;
}
@androidx.compose.Immutable public static final class TabRow.TabPosition {
@@ -284,7 +290,7 @@
public final class TextButton {
method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
- field public static final androidx.ui.material.TextButton! INSTANCE;
+ field public static final androidx.ui.material.TextButton INSTANCE;
}
public final class TextFieldKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev06.txt b/ui/ui-material/icons/core/api/0.1.0-dev06.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev06.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev06.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev07.txt b/ui/ui-material/icons/core/api/0.1.0-dev07.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev07.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev07.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev08.txt b/ui/ui-material/icons/core/api/0.1.0-dev08.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev08.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev08.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev09.txt b/ui/ui-material/icons/core/api/0.1.0-dev09.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev09.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev09.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev10.txt b/ui/ui-material/icons/core/api/0.1.0-dev10.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev10.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev10.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev11.txt b/ui/ui-material/icons/core/api/0.1.0-dev11.txt
index ecc4243..fec7748 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev11.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev11.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev12.txt b/ui/ui-material/icons/core/api/0.1.0-dev12.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev12.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev12.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev14.txt b/ui/ui-material/icons/core/api/0.1.0-dev14.txt
index 49fcc65..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev14.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev14.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
@@ -34,1003 +34,3 @@
}
-package androidx.ui.material.icons.filled {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Filled);
- }
-
-}
-
-package androidx.ui.material.icons.outlined {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Outlined);
- }
-
-}
-
-package androidx.ui.material.icons.rounded {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Rounded);
- }
-
-}
-
-package androidx.ui.material.icons.sharp {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Sharp);
- }
-
-}
-
-package androidx.ui.material.icons.twotone {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.TwoTone);
- }
-
-}
-
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev15.txt b/ui/ui-material/icons/core/api/0.1.0-dev15.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev15.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev15.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/current.txt b/ui/ui-material/icons/core/api/current.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/current.txt
+++ b/ui/ui-material/icons/core/api/current.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev06.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev06.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev07.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev07.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev08.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev08.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev09.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev09.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev10.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev10.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev11.txt
index ecc4243..fec7748 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev11.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev12.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev14.txt
index 49fcc65..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev14.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
@@ -34,1003 +34,3 @@
}
-package androidx.ui.material.icons.filled {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Filled);
- }
-
-}
-
-package androidx.ui.material.icons.outlined {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Outlined);
- }
-
-}
-
-package androidx.ui.material.icons.rounded {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Rounded);
- }
-
-}
-
-package androidx.ui.material.icons.sharp {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Sharp);
- }
-
-}
-
-package androidx.ui.material.icons.twotone {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.TwoTone);
- }
-
-}
-
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev15.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev06.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev06.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev06.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev07.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev07.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev07.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev08.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev08.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev08.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev09.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev09.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev09.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev10.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev10.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev10.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev11.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev11.txt
index ecc4243..fec7748 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev11.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev12.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev12.txt
index fe4ae06..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev12.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev14.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev14.txt
index 49fcc65..2108ba8c 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev14.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
@@ -34,1003 +34,3 @@
}
-package androidx.ui.material.icons.filled {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Filled);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Filled);
- }
-
-}
-
-package androidx.ui.material.icons.outlined {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Outlined);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Outlined);
- }
-
-}
-
-package androidx.ui.material.icons.rounded {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Rounded);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Rounded);
- }
-
-}
-
-package androidx.ui.material.icons.sharp {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.Sharp);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.Sharp);
- }
-
-}
-
-package androidx.ui.material.icons.twotone {
-
- public final class AccountBoxKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountBox(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AccountCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAccountCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAddCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class AddKt {
- method public static androidx.ui.graphics.vector.VectorAsset getAdd(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowBackKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowBack(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowDropDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowDropDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ArrowForwardKt {
- method public static androidx.ui.graphics.vector.VectorAsset getArrowForward(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class BuildKt {
- method public static androidx.ui.graphics.vector.VectorAsset getBuild(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CallKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCall(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckCircleKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheckCircle(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CheckKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCheck(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ClearKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClear(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CloseKt {
- method public static androidx.ui.graphics.vector.VectorAsset getClose(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class CreateKt {
- method public static androidx.ui.graphics.vector.VectorAsset getCreate(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DateRangeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDateRange(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DeleteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDelete(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class DoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getDone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EditKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEdit(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class EmailKt {
- method public static androidx.ui.graphics.vector.VectorAsset getEmail(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ExitToAppKt {
- method public static androidx.ui.graphics.vector.VectorAsset getExitToApp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteBorderKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavoriteBorder(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class FavoriteKt {
- method public static androidx.ui.graphics.vector.VectorAsset getFavorite(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class HomeKt {
- method public static androidx.ui.graphics.vector.VectorAsset getHome(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class InfoKt {
- method public static androidx.ui.graphics.vector.VectorAsset getInfo(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowDownKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowDown(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowLeftKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowLeft(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowRightKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowRight(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class KeyboardArrowUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getKeyboardArrowUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ListKt {
- method public static androidx.ui.graphics.vector.VectorAsset getList(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LocationOnKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLocationOn(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class LockKt {
- method public static androidx.ui.graphics.vector.VectorAsset getLock(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MailOutlineKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMailOutline(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MenuKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMenu(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class MoreVertKt {
- method public static androidx.ui.graphics.vector.VectorAsset getMoreVert(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class NotificationsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getNotifications(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PersonKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPerson(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PhoneKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPhone(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlaceKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlace(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class PlayArrowKt {
- method public static androidx.ui.graphics.vector.VectorAsset getPlayArrow(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class RefreshKt {
- method public static androidx.ui.graphics.vector.VectorAsset getRefresh(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SearchKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSearch(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SendKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSend(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class SettingsKt {
- method public static androidx.ui.graphics.vector.VectorAsset getSettings(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShareKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShare(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ShoppingCartKt {
- method public static androidx.ui.graphics.vector.VectorAsset getShoppingCart(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class StarKt {
- method public static androidx.ui.graphics.vector.VectorAsset getStar(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class ThumbUpKt {
- method public static androidx.ui.graphics.vector.VectorAsset getThumbUp(androidx.ui.material.icons.Icons.TwoTone);
- }
-
- public final class WarningKt {
- method public static androidx.ui.graphics.vector.VectorAsset getWarning(androidx.ui.material.icons.Icons.TwoTone);
- }
-
-}
-
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev15.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev15.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev15.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/icons/core/api/restricted_current.txt b/ui/ui-material/icons/core/api/restricted_current.txt
index 49fcc65..e2d6896 100644
--- a/ui/ui-material/icons/core/api/restricted_current.txt
+++ b/ui/ui-material/icons/core/api/restricted_current.txt
@@ -4,27 +4,27 @@
public final class Icons {
method public androidx.ui.material.icons.Icons.Filled getDefault();
property public final androidx.ui.material.icons.Icons.Filled Default;
- field public static final androidx.ui.material.icons.Icons! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons INSTANCE;
}
public static final class Icons.Filled {
- field public static final androidx.ui.material.icons.Icons.Filled! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Filled INSTANCE;
}
public static final class Icons.Outlined {
- field public static final androidx.ui.material.icons.Icons.Outlined! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Outlined INSTANCE;
}
public static final class Icons.Rounded {
- field public static final androidx.ui.material.icons.Icons.Rounded! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Rounded INSTANCE;
}
public static final class Icons.Sharp {
- field public static final androidx.ui.material.icons.Icons.Sharp! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.Sharp INSTANCE;
}
public static final class Icons.TwoTone {
- field public static final androidx.ui.material.icons.Icons.TwoTone! INSTANCE;
+ field public static final androidx.ui.material.icons.Icons.TwoTone INSTANCE;
}
public final class IconsKt {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
index 1fbd36c..ced42dc 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
@@ -20,6 +20,7 @@
import androidx.ui.core.Modifier
import androidx.ui.foundation.Border
import androidx.ui.foundation.Text
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.foundation.shape.GenericShape
import androidx.ui.graphics.Color
import androidx.ui.layout.Arrangement
@@ -48,14 +49,16 @@
@Composable
fun ButtonDemo() {
- Column(Modifier.padding(10.dp)) {
- Buttons()
- Spacer(Modifier.preferredHeight(DefaultSpace))
- Fabs()
- Spacer(Modifier.preferredHeight(DefaultSpace))
- IconButtons()
- Spacer(Modifier.preferredHeight(DefaultSpace))
- CustomShapeButton()
+ VerticalScroller {
+ Column(Modifier.padding(10.dp)) {
+ Buttons()
+ Spacer(Modifier.preferredHeight(DefaultSpace))
+ Fabs()
+ Spacer(Modifier.preferredHeight(DefaultSpace))
+ IconButtons()
+ Spacer(Modifier.preferredHeight(DefaultSpace))
+ CustomShapeButton()
+ }
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
index 3e7c208..0c9380d 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
@@ -19,6 +19,7 @@
import android.graphics.SweepGradient
import androidx.animation.FloatPropKey
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.emptyContent
import androidx.compose.getValue
@@ -227,17 +228,17 @@
this[OpacityPropKey] = 1f
}
transition(false to true) {
- LabelWidthPropKey using tween {}
- MagnifierDiameterPropKey using tween {}
- OpacityPropKey using tween {}
+ LabelWidthPropKey using tween()
+ MagnifierDiameterPropKey using tween()
+ OpacityPropKey using tween()
}
transition(true to false) {
- LabelWidthPropKey using tween {}
- MagnifierDiameterPropKey using tween {}
- OpacityPropKey using tween {
- delay = 100
- duration = 200
- }
+ LabelWidthPropKey using tween()
+ MagnifierDiameterPropKey using tween()
+ OpacityPropKey using tween(
+ delayMillis = 100,
+ durationMillis = 200
+ )
}
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ListItemDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ListItemDemo.kt
index 01b89bb..d0bfe90 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ListItemDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ListItemDemo.kt
@@ -18,6 +18,8 @@
import androidx.compose.Composable
import androidx.ui.foundation.VerticalScroller
+import androidx.ui.material.icons.Icons
+import androidx.ui.material.icons.filled.Call
import androidx.ui.material.samples.OneLineListItems
import androidx.ui.material.samples.ThreeLineListItems
import androidx.ui.material.samples.TwoLineListItems
@@ -28,9 +30,10 @@
val icon24 = imageResource(R.drawable.ic_bluetooth)
val icon40 = imageResource(R.drawable.ic_account_box)
val icon56 = imageResource(R.drawable.ic_android)
+ val vectorIcon = Icons.Default.Call
VerticalScroller {
- OneLineListItems(icon24, icon40, icon56)
+ OneLineListItems(icon24, icon40, icon56, vectorIcon)
TwoLineListItems(icon24, icon40)
- ThreeLineListItems(icon24, icon40)
+ ThreeLineListItems(icon24, vectorIcon)
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialDemos.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialDemos.kt
index f7c1dbb..32ebf58 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialDemos.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialDemos.kt
@@ -20,19 +20,25 @@
import androidx.ui.demos.common.ComposableDemo
import androidx.ui.demos.common.DemoCategory
import androidx.ui.material.samples.BottomDrawerSample
+import androidx.ui.material.samples.CustomAlertDialogSample
import androidx.ui.material.samples.EmphasisSample
import androidx.ui.material.samples.ModalDrawerSample
import androidx.ui.material.samples.ScaffoldWithBottomBarAndCutout
import androidx.ui.material.samples.SideBySideAlertDialogSample
+import androidx.ui.material.samples.StackedAlertDialogSample
val MaterialDemos = DemoCategory("Material", listOf(
- ComposableDemo("AlertDialog") { SideBySideAlertDialogSample() },
+ DemoCategory("AlertDialog", listOf(
+ ComposableDemo("Side by side buttons") { SideBySideAlertDialogSample() },
+ ComposableDemo("Stacked buttons") { StackedAlertDialogSample() },
+ ComposableDemo("Custom buttons") { CustomAlertDialogSample() }
+ )),
ComposableDemo("App Bars") { AppBarDemo() },
ComposableDemo("Bottom Navigation") { BottomNavigationDemo() },
ComposableDemo("Buttons & FABs") { ButtonDemo() },
- DemoCategory("Drawer", listOf(
- ComposableDemo("Modal") { ModalDrawerSample() },
- ComposableDemo("Bottom") { BottomDrawerSample() }
+ DemoCategory("Navigation drawer", listOf(
+ ComposableDemo("Modal drawer") { ModalDrawerSample() },
+ ComposableDemo("Bottom drawer") { BottomDrawerSample() }
)),
ComposableDemo("Elevation") { ElevationDemo() },
ComposableDemo("Emphasis") { EmphasisSample() },
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
index cc4b52a..fea676e 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
@@ -84,116 +84,122 @@
@Composable
fun MaterialTextFieldDemo() {
- Column(Modifier.padding(10.dp)) {
- var text by savedInstanceState { "" }
- var leadingChecked by savedInstanceState { false }
- var trailingChecked by savedInstanceState { false }
- val characterCounterChecked by savedInstanceState { false }
- var selectedOption by savedInstanceState { Option.None }
- var selectedTextField by savedInstanceState { TextFieldType.Filled }
+ VerticalScroller {
+ Column(Modifier.padding(10.dp)) {
+ var text by savedInstanceState { "" }
+ var leadingChecked by savedInstanceState { false }
+ var trailingChecked by savedInstanceState { false }
+ val characterCounterChecked by savedInstanceState { false }
+ var selectedOption by savedInstanceState { Option.None }
+ var selectedTextField by savedInstanceState { TextFieldType.Filled }
- val textField: @Composable () -> Unit = @Composable {
- when (selectedTextField) {
- TextFieldType.Filled ->
- FilledTextField(
- value = text,
- onValueChange = { text = it },
- label = {
- val label = "Label" + if (selectedOption == Option.Error) "*" else ""
- Text(text = label)
- },
- leadingIcon = { if (leadingChecked) Icon(Icons.Filled.Favorite) },
- trailingIcon = { if (trailingChecked) Icon(Icons.Filled.Info) },
- isErrorValue = selectedOption == Option.Error
- )
- TextFieldType.Outlined ->
- OutlinedTextField(
- value = text,
- onValueChange = { text = it },
- label = {
- val label = "Label" + if (selectedOption == Option.Error) "*" else ""
- Text(text = label)
- },
- leadingIcon = { if (leadingChecked) Icon(Icons.Filled.Favorite) },
- trailingIcon = { if (trailingChecked) Icon(Icons.Filled.Info) },
- isErrorValue = selectedOption == Option.Error
- )
- }
- }
-
- Box(Modifier.preferredHeight(150.dp).gravity(Alignment.CenterHorizontally)) {
- if (selectedOption == Option.None) {
- textField()
- } else {
- TextFieldWithMessage(textField, selectedOption)
- }
- }
-
- Column {
- Title("Text field type")
- Column {
- TextFieldType.values().map { it.name }.forEach { textType ->
- Row(Modifier
- .fillMaxWidth()
- .selectable(
- selected = (textType == selectedTextField.name),
- onClick = { selectedTextField = TextFieldType.valueOf(textType) }
+ val textField: @Composable () -> Unit = @Composable {
+ when (selectedTextField) {
+ TextFieldType.Filled ->
+ FilledTextField(
+ value = text,
+ onValueChange = { text = it },
+ label = {
+ val label =
+ "Label" + if (selectedOption == Option.Error) "*" else ""
+ Text(text = label)
+ },
+ leadingIcon = { if (leadingChecked) Icon(Icons.Filled.Favorite) },
+ trailingIcon = { if (trailingChecked) Icon(Icons.Filled.Info) },
+ isErrorValue = selectedOption == Option.Error
)
- .padding(horizontal = 16.dp)
- ) {
- RadioButton(
- selected = (textType == selectedTextField.name),
- onClick = { selectedTextField = TextFieldType.valueOf(textType) }
+ TextFieldType.Outlined ->
+ OutlinedTextField(
+ value = text,
+ onValueChange = { text = it },
+ label = {
+ val label =
+ "Label" + if (selectedOption == Option.Error) "*" else ""
+ Text(text = label)
+ },
+ leadingIcon = { if (leadingChecked) Icon(Icons.Filled.Favorite) },
+ trailingIcon = { if (trailingChecked) Icon(Icons.Filled.Info) },
+ isErrorValue = selectedOption == Option.Error
)
- Text(
- text = textType,
- style = MaterialTheme.typography.body1.merge(),
- modifier = Modifier.padding(start = 16.dp)
- )
- }
}
}
- Title("Options")
- OptionRow(
- title = "Leading icon",
- checked = leadingChecked,
- onCheckedChange = { leadingChecked = it }
- )
- OptionRow(
- title = "Trailing icon",
- checked = trailingChecked,
- onCheckedChange = { trailingChecked = it }
- )
- OptionRow(
- title = "Character counter (TODO)",
- checked = characterCounterChecked,
- enabled = false,
- onCheckedChange = { /* TODO */ }
- )
+ Box(Modifier.preferredHeight(150.dp).gravity(Alignment.CenterHorizontally)) {
+ if (selectedOption == Option.None) {
+ textField()
+ } else {
+ TextFieldWithMessage(textField, selectedOption)
+ }
+ }
- Spacer(Modifier.preferredHeight(20.dp))
-
- Title("Assistive text")
Column {
- Option.values().map { it.name }.forEach { text ->
- Row(Modifier
- .fillMaxWidth()
- .selectable(
- selected = (text == selectedOption.name),
- onClick = { selectedOption = Option.valueOf(text) }
- )
- .padding(horizontal = 16.dp)
- ) {
- RadioButton(
- selected = (text == selectedOption.name),
- onClick = { selectedOption = Option.valueOf(text) }
- )
- Text(
- text = text,
- style = MaterialTheme.typography.body1.merge(),
- modifier = Modifier.padding(start = 16.dp)
- )
+ Title("Text field type")
+ Column {
+ TextFieldType.values().map { it.name }.forEach { textType ->
+ Row(Modifier
+ .fillMaxWidth()
+ .selectable(
+ selected = (textType == selectedTextField.name),
+ onClick = {
+ selectedTextField = TextFieldType.valueOf(textType)
+ }
+ )
+ .padding(horizontal = 16.dp)
+ ) {
+ RadioButton(
+ selected = (textType == selectedTextField.name),
+ onClick = { selectedTextField = TextFieldType.valueOf(textType) }
+ )
+ Text(
+ text = textType,
+ style = MaterialTheme.typography.body1.merge(),
+ modifier = Modifier.padding(start = 16.dp)
+ )
+ }
+ }
+ }
+
+ Title("Options")
+ OptionRow(
+ title = "Leading icon",
+ checked = leadingChecked,
+ onCheckedChange = { leadingChecked = it }
+ )
+ OptionRow(
+ title = "Trailing icon",
+ checked = trailingChecked,
+ onCheckedChange = { trailingChecked = it }
+ )
+ OptionRow(
+ title = "Character counter (TODO)",
+ checked = characterCounterChecked,
+ enabled = false,
+ onCheckedChange = { /* TODO */ }
+ )
+
+ Spacer(Modifier.preferredHeight(20.dp))
+
+ Title("Assistive text")
+ Column {
+ Option.values().map { it.name }.forEach { text ->
+ Row(Modifier
+ .fillMaxWidth()
+ .selectable(
+ selected = (text == selectedOption.name),
+ onClick = { selectedOption = Option.valueOf(text) }
+ )
+ .padding(horizontal = 16.dp)
+ ) {
+ RadioButton(
+ selected = (text == selectedOption.name),
+ onClick = { selectedOption = Option.valueOf(text) }
+ )
+ Text(
+ text = text,
+ style = MaterialTheme.typography.body1.merge(),
+ modifier = Modifier.padding(start = 16.dp)
+ )
+ }
}
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
index 6b3adf7..4331d1b 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
@@ -28,9 +28,9 @@
import androidx.compose.setValue
import androidx.ui.core.Alignment
import androidx.ui.core.Modifier
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.graphics.Color
import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
import androidx.ui.layout.Row
import androidx.ui.layout.fillMaxWidth
import androidx.ui.material.CircularProgressIndicator
@@ -43,7 +43,7 @@
onActive { state.start() }
onDispose { state.stop() }
- Column {
+ VerticalScroller {
val modifier = Modifier.weight(1f, true)
.gravity(Alignment.CenterHorizontally)
.fillMaxWidth()
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
index 820718f..485a171 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
@@ -19,8 +19,11 @@
import androidx.compose.Composable
import androidx.ui.core.Modifier
import androidx.ui.foundation.Text
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.layout.Arrangement
import androidx.ui.layout.Column
+import androidx.ui.layout.Spacer
+import androidx.ui.layout.height
import androidx.ui.layout.padding
import androidx.ui.material.MaterialTheme
import androidx.ui.material.samples.RadioGroupSample
@@ -32,14 +35,19 @@
@Composable
fun SelectionControlsDemo() {
val headerStyle = MaterialTheme.typography.h6
- Column(Modifier.padding(10.dp), verticalArrangement = Arrangement.SpaceEvenly) {
- Text(text = "Checkbox", style = headerStyle)
- TriStateCheckboxSample()
- Text(text = "Switch", style = headerStyle)
- SwitchSample()
- Text(text = "RadioButton", style = headerStyle)
- RadioButtonSample()
- Text(text = "Radio group", style = headerStyle)
- RadioGroupSample()
+ VerticalScroller {
+ Column(Modifier.padding(10.dp), verticalArrangement = Arrangement.SpaceEvenly) {
+ Text(text = "Checkbox", style = headerStyle)
+ TriStateCheckboxSample()
+ Spacer(Modifier.height(16.dp))
+ Text(text = "Switch", style = headerStyle)
+ SwitchSample()
+ Spacer(Modifier.height(16.dp))
+ Text(text = "RadioButtons with custom colors", style = headerStyle)
+ RadioButtonSample()
+ Spacer(Modifier.height(16.dp))
+ Text(text = "Radio group", style = headerStyle)
+ RadioGroupSample()
+ }
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
index 93c46cd..9913748 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
@@ -18,16 +18,26 @@
import androidx.compose.Composable
import androidx.ui.core.Modifier
+import androidx.ui.foundation.Text
import androidx.ui.layout.Column
+import androidx.ui.layout.Spacer
+import androidx.ui.layout.height
import androidx.ui.layout.padding
+import androidx.ui.material.MaterialTheme
import androidx.ui.material.samples.SliderSample
import androidx.ui.material.samples.StepsSliderSample
import androidx.ui.unit.dp
@Composable
fun SliderDemo() {
+ val headerStyle = MaterialTheme.typography.h6
Column(Modifier.padding(10.dp)) {
+ Text(text = "Continuous Slider", style = headerStyle)
+ Spacer(Modifier.height(16.dp))
SliderSample()
+ Spacer(Modifier.height(16.dp))
+ Text(text = "Discrete Slider with custom color", style = headerStyle)
+ Spacer(Modifier.height(16.dp))
StepsSliderSample()
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
index a605bce..26c8ba3 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
@@ -19,6 +19,7 @@
import androidx.compose.Composable
import androidx.ui.core.Modifier
import androidx.ui.foundation.Text
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.layout.Column
import androidx.ui.layout.padding
import androidx.ui.material.MaterialTheme
@@ -30,22 +31,24 @@
@Composable
fun SnackbarDemo() {
- Column(Modifier.padding(12.dp, 0.dp, 12.dp, 0.dp)) {
- val textSpacing = Modifier.padding(top = 12.dp, bottom = 12.dp)
- Text("Default Snackbar", modifier = textSpacing)
- SimpleSnackbar()
- Text("Snackbar with long text", modifier = textSpacing)
- Snackbar(
- text = { Text("This song already exists in the current playlist") },
- action = {
- TextButton(
- contentColor = snackbarPrimaryColorFor(MaterialTheme.colors),
- onClick = { /* perform undo */ }
- ) {
- Text("ADD THIS SONG ANYWAY")
- }
- },
- actionOnNewLine = true
- )
+ VerticalScroller {
+ Column(Modifier.padding(12.dp, 0.dp, 12.dp, 0.dp)) {
+ val textSpacing = Modifier.padding(top = 12.dp, bottom = 12.dp)
+ Text("Default Snackbar", modifier = textSpacing)
+ SimpleSnackbar()
+ Text("Snackbar with long text", modifier = textSpacing)
+ Snackbar(
+ text = { Text("This song already exists in the current playlist") },
+ action = {
+ TextButton(
+ contentColor = snackbarPrimaryColorFor(MaterialTheme.colors),
+ onClick = { /* perform undo */ }
+ ) {
+ Text("ADD THIS SONG ANYWAY")
+ }
+ },
+ actionOnNewLine = true
+ )
+ }
}
}
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
index 8321760..545d0f6 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
@@ -21,11 +21,10 @@
import androidx.ui.core.Alignment
import androidx.ui.core.Modifier
import androidx.ui.foundation.Text
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
+import androidx.ui.layout.height
import androidx.ui.layout.preferredHeight
import androidx.ui.material.Button
import androidx.ui.material.samples.FancyIndicatorContainerTabs
@@ -40,21 +39,29 @@
@Composable
fun TabDemo() {
- Column(Modifier.fillMaxHeight(), verticalArrangement = Arrangement.SpaceBetween) {
+ VerticalScroller {
val showingSimple = state { true }
val buttonText = "Show ${if (showingSimple.value) "custom" else "simple"} tabs"
+ Spacer(Modifier.height(24.dp))
if (showingSimple.value) {
TextTabs()
+ Spacer(Modifier.height(24.dp))
IconTabs()
+ Spacer(Modifier.height(24.dp))
TextAndIconTabs()
+ Spacer(Modifier.height(24.dp))
ScrollingTextTabs()
} else {
FancyTabs()
+ Spacer(Modifier.height(24.dp))
FancyIndicatorTabs()
+ Spacer(Modifier.height(24.dp))
FancyIndicatorContainerTabs()
+ Spacer(Modifier.height(24.dp))
ScrollingFancyIndicatorContainerTabs()
}
+ Spacer(Modifier.height(24.dp))
Button(
modifier = Modifier.gravity(Alignment.CenterHorizontally),
onClick = {
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAnimatedCircle.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAnimatedCircle.kt
index 50dafa1..de2adc9 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAnimatedCircle.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAnimatedCircle.kt
@@ -20,6 +20,7 @@
import androidx.animation.FloatPropKey
import androidx.animation.LinearOutSlowInEasing
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.ui.animation.Transition
import androidx.ui.core.DensityAmbient
@@ -45,16 +46,16 @@
this[Shift] = 30f
}
transition(fromState = 0, toState = 1) {
- AngleOffset using tween {
- delay = 500
- duration = 900
+ AngleOffset using tween(
+ delayMillis = 500,
+ durationMillis = 900,
easing = CubicBezierEasing(0f, 0.75f, 0.35f, 0.85f)
- }
- Shift using tween {
- delay = 500
- duration = 900
+ )
+ Shift using tween(
+ delayMillis = 500,
+ durationMillis = 900,
easing = LinearOutSlowInEasing
- }
+ )
}
}
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
index 9bd87d7..e37241e 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
@@ -18,6 +18,7 @@
import androidx.animation.LinearEasing
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.remember
import androidx.ui.animation.ColorPropKey
@@ -103,19 +104,19 @@
}
transition(fromState = false, toState = true) {
- TabTintColorKey using tween {
- duration = TabFadeInAnimationDuration
- delay = TabFadeInAnimationDelay
+ TabTintColorKey using tween(
+ durationMillis = TabFadeInAnimationDuration,
+ delayMillis = TabFadeInAnimationDelay,
easing = LinearEasing
- }
+ )
}
transition(fromState = true, toState = false) {
- TabTintColorKey using tween {
- duration = TabFadeOutAnimationDuration
- delay = TabFadeInAnimationDelay
+ TabTintColorKey using tween(
+ durationMillis = TabFadeOutAnimationDuration,
+ delayMillis = TabFadeInAnimationDelay,
easing = LinearEasing
- }
+ )
}
}
}
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
index 46c419c..e1f6ddd 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
@@ -19,12 +19,17 @@
import androidx.annotation.Sampled
import androidx.compose.Composable
import androidx.compose.state
+import androidx.ui.core.Modifier
import androidx.ui.foundation.Text
import androidx.ui.layout.Arrangement
import androidx.ui.layout.Row
+import androidx.ui.layout.fillMaxWidth
+import androidx.ui.layout.padding
import androidx.ui.material.AlertDialog
import androidx.ui.material.AlertDialogButtonLayout
import androidx.ui.material.Button
+import androidx.ui.material.TextButton
+import androidx.ui.unit.dp
@Sampled
@Composable
@@ -43,18 +48,20 @@
Text(text = "Title")
},
text = {
- Text("This area typically contains the supportive text" +
- " which presents the details regarding the Dialog's purpose.")
+ Text(
+ "This area typically contains the supportive text " +
+ "which presents the details regarding the Dialog's purpose."
+ )
},
confirmButton = {
- Button(onClick = {
+ TextButton(onClick = {
openDialog.value = false
}) {
Text("Confirm")
}
},
dismissButton = {
- Button(onClick = {
+ TextButton(onClick = {
openDialog.value = false
}) {
Text("Dismiss")
@@ -81,18 +88,20 @@
Text(text = "Title")
},
text = {
- Text("This area typically contains the supportive text" +
- " which presents the details regarding the Dialog's purpose.")
+ Text(
+ "This area typically contains the supportive text " +
+ "which presents the details regarding the Dialog's purpose."
+ )
},
confirmButton = {
- Button(onClick = {
+ TextButton(onClick = {
openDialog.value = false
}) {
Text("Long Confirm Button")
}
},
dismissButton = {
- Button(onClick = {
+ TextButton(onClick = {
openDialog.value = false
}) {
Text("Long Dismiss Button")
@@ -117,16 +126,24 @@
Text(text = "Title")
},
text = {
- Text("This area typically contains the supportive text" +
- " which presents the details regarding the Dialog's purpose.")
+ Text(
+ "This area typically contains the supportive text " +
+ "which presents the details regarding the Dialog's purpose."
+ )
},
buttons = {
- Row(horizontalArrangement = Arrangement.Center) {
- Button(onClick = { openDialog.value = false }) {
- Text("Button")
+ Row(
+ modifier = Modifier.padding(all = 8.dp),
+ horizontalArrangement = Arrangement.Center
+ ) {
+ Button(
+ modifier = Modifier.fillMaxWidth(),
+ onClick = { openDialog.value = false }
+ ) {
+ Text("Dismiss")
}
}
}
)
}
-}
\ No newline at end of file
+}
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
index 2766566..f02a742 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
@@ -18,38 +18,67 @@
import androidx.annotation.Sampled
import androidx.compose.Composable
+import androidx.compose.getValue
+import androidx.compose.setValue
+import androidx.compose.state
+import androidx.ui.foundation.Icon
import androidx.ui.foundation.Image
import androidx.ui.foundation.Text
+import androidx.ui.foundation.contentColor
+import androidx.ui.graphics.ColorFilter
import androidx.ui.graphics.ImageAsset
+import androidx.ui.graphics.vector.VectorAsset
import androidx.ui.layout.Column
+import androidx.ui.material.Checkbox
import androidx.ui.material.Divider
import androidx.ui.material.ListItem
@Sampled
@Composable
-fun OneLineListItems(icon24x24: ImageAsset, icon40x40: ImageAsset, icon56x56: ImageAsset) {
+fun OneLineListItems(
+ icon24x24: ImageAsset,
+ icon40x40: ImageAsset,
+ icon56x56: ImageAsset,
+ vectorIcon: VectorAsset
+) {
Column {
- ListItem(text = "One line list item with no icon")
+ ListItem(text = { Text("One line list item with no icon") })
Divider()
- ListItem(text = "פריט ברשימה אחת עם תמונה.", icon = icon24x24)
+ ListItem(
+ text = { Text("פריט ברשימה אחת עם תמונה.") },
+ icon = { Image(icon24x24, colorFilter = ColorFilter.tint(contentColor())) }
+ )
Divider()
- ListItem(text = "One line list item with 24x24 icon", icon = icon24x24)
+ ListItem(
+ text = { Text("One line list item with 24x24 icon") },
+ icon = { Image(icon24x24, colorFilter = ColorFilter.tint(contentColor())) }
+ )
Divider()
- ListItem(text = "One line list item with 40x40 icon", icon = icon40x40)
+ ListItem(
+ text = { Text("One line list item with 40x40 icon") },
+ icon = { Image(icon40x40, colorFilter = ColorFilter.tint(contentColor())) }
+ )
Divider()
- ListItem(text = "One line list item with 56x56 icon", icon = icon56x56)
+ ListItem(
+ text = { Text("One line list item with 56x56 icon") },
+ icon = { Image(icon56x56, colorFilter = ColorFilter.tint(contentColor())) }
+ )
Divider()
- ListItem(text = "One line clickable list item", icon = icon56x56, onClick = {})
+ ListItem(
+ text = { Text("One line clickable list item") },
+ icon = { Image(icon56x56, colorFilter = ColorFilter.tint(contentColor())) },
+ onClick = {}
+ )
Divider()
ListItem(
text = { Text("One line list item with trailing icon") },
- trailing = { Image(icon24x24) }
+ trailing = { Icon(vectorIcon) }
)
Divider()
ListItem(
text = { Text("One line list item") },
- icon = { Image(icon40x40) },
- trailing = { Image(icon24x24) }
+ icon = { Image(icon40x40, colorFilter = ColorFilter.tint(contentColor())) },
+ trailing = { Icon(vectorIcon) }
)
Divider()
}
@@ -57,38 +86,45 @@
@Sampled
@Composable
+// TODO(popam, b/159689286): material icons instead of ImageAsset when they can have custom sizes
fun TwoLineListItems(icon24x24: ImageAsset, icon40x40: ImageAsset) {
Column {
- ListItem(text = "Two line list item", secondaryText = "Secondary text")
- Divider()
- ListItem(text = "Two line list item", overlineText = "OVERLINE")
- Divider()
ListItem(
- text = "Two line list item with 24x24 icon",
- secondaryText = "Secondary text",
- icon = icon24x24
- )
- Divider()
- ListItem(
- text = "Two line list item with 40x40 icon",
- secondaryText = "Secondary text",
- icon = icon40x40
- )
- Divider()
- ListItem(
- text = "Two line list item with 40x40 icon",
- secondaryText = "Secondary text",
- metaText = "meta",
- icon = icon40x40
+ text = { Text("Two line list item") },
+ secondaryText = { Text("Secondary text") }
)
Divider()
ListItem(
text = { Text("Two line list item") },
+ overlineText = { Text("OVERLINE") }
+ )
+ Divider()
+ ListItem(
+ text = { Text("Two line list item with 24x24 icon") },
secondaryText = { Text("Secondary text") },
- icon = { Image(icon40x40) },
+ icon = { Image(icon24x24, colorFilter = ColorFilter.tint(contentColor())) }
+ )
+ Divider()
+ ListItem(
+ text = { Text("Two line list item with 40x40 icon") },
+ secondaryText = { Text("Secondary text") },
+ icon = { Image(icon40x40, colorFilter = ColorFilter.tint(contentColor())) }
+ )
+ Divider()
+ ListItem(
+ text = { Text("Two line list item with 40x40 icon") },
+ secondaryText = { Text("Secondary text") },
+ trailing = { Text("meta") },
+ icon = { Image(icon40x40, colorFilter = ColorFilter.tint(contentColor())) }
+ )
+ Divider()
+ var checked by state { false }
+ ListItem(
+ text = { Text("Two line list item") },
+ secondaryText = { Text("Secondary text") },
+ icon = { Image(icon40x40, colorFilter = ColorFilter.tint(contentColor())) },
trailing = {
- // TODO(popam): put checkbox here after b/140292836 is fixed
- Image(icon24x24)
+ Checkbox(checked, onCheckedChange = { checked = !checked })
}
)
Divider()
@@ -97,43 +133,55 @@
@Sampled
@Composable
-fun ThreeLineListItems(icon24x24: ImageAsset, icon40x40: ImageAsset) {
+fun ThreeLineListItems(icon24x24: ImageAsset, vectorIcon: VectorAsset) {
Column {
ListItem(
- text = "Three line list item",
- secondaryText = "This is a long secondary text for the current list item, displayed" +
- " on two lines",
+ text = { Text("Three line list item") },
+ secondaryText = {
+ Text(
+ "This is a long secondary text for the current list item, " +
+ "displayed on two lines"
+ )
+ },
singleLineSecondaryText = false,
- metaText = "meta"
+ trailing = { Text("meta") }
)
Divider()
ListItem(
- text = "Three line list item",
- overlineText = "OVERLINE",
- secondaryText = "Secondary text"
+ text = { Text("Three line list item") },
+ overlineText = { Text("OVERLINE") },
+ secondaryText = { Text("Secondary text") }
)
Divider()
ListItem(
- text = "Three line list item with 24x24 icon",
- secondaryText = "This is a long secondary text for the current list item, displayed" +
- " on two lines",
+ text = { Text("Three line list item with 24x24 icon") },
+ secondaryText = {
+ Text(
+ "This is a long secondary text for the current list item " +
+ "displayed on two lines"
+ )
+ },
singleLineSecondaryText = false,
- icon = icon24x24
+ icon = { Image(icon24x24, colorFilter = ColorFilter.tint(contentColor())) }
)
Divider()
ListItem(
text = { Text("Three line list item with trailing icon") },
- secondaryText = { Text("This is a long secondary text for the current list" +
- " item, displayed on two lines") },
+ secondaryText = {
+ Text(
+ "This is a long secondary text for the current list" +
+ " item, displayed on two lines"
+ )
+ },
singleLineSecondaryText = false,
- trailing = { Image(icon40x40) }
+ trailing = { Icon(vectorIcon) }
)
Divider()
ListItem(
- text = "Three line list item",
- overlineText = "OVERLINE",
- secondaryText = "Secondary text",
- metaText = "meta"
+ text = { Text("Three line list item") },
+ overlineText = { Text("OVERLINE") },
+ secondaryText = { Text("Secondary text") },
+ trailing = { Text("meta") }
)
Divider()
}
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
index 2fec38d..8ae8af9 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
@@ -16,7 +16,7 @@
package androidx.ui.material.samples
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.annotation.Sampled
import androidx.compose.Composable
import androidx.compose.remember
@@ -124,7 +124,7 @@
val nextTarget = if (target == roundEdgePercent) sharpEdgePercent else roundEdgePercent
animatedProgress.animateTo(
targetValue = nextTarget,
- anim = TweenBuilder<Float>().apply { duration = 600 }
+ anim = TweenSpec(durationMillis = 600)
)
}
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
index 2ced5f6..bea103f 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
@@ -61,7 +61,11 @@
onStateChange2(s)
}
- TriStateCheckbox(state = parentState, onClick = onParentClick, checkedColor = Color.Black)
+ TriStateCheckbox(
+ state = parentState,
+ onClick = onParentClick,
+ checkedColor = MaterialTheme.colors.primary
+ )
Column(Modifier.padding(10.dp, 0.dp, 0.dp, 0.dp)) {
Checkbox(state, onStateChange)
Checkbox(state2, onStateChange2)
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SliderSample.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SliderSample.kt
index b1d57c4..8922b3c 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SliderSample.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SliderSample.kt
@@ -21,7 +21,7 @@
import androidx.compose.getValue
import androidx.compose.setValue
import androidx.compose.state
-import androidx.ui.graphics.Color
+import androidx.ui.material.MaterialTheme
import androidx.ui.material.Slider
@Sampled
@@ -40,6 +40,6 @@
onValueChange = { sliderPosition = it },
valueRange = 0f..100f,
steps = 5,
- color = Color.Black
+ color = MaterialTheme.colors.secondary
)
}
\ No newline at end of file
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
index ddc8674..be08f2b 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
@@ -16,6 +16,7 @@
package androidx.ui.material.samples
+import androidx.animation.spring
import androidx.animation.transitionDefinition
import androidx.annotation.Sampled
import androidx.compose.Composable
@@ -310,14 +311,14 @@
// moving to the left, we want the left side to move faster.
val startStiffness = if (from < to) 50f else 1000f
val endStiffness = if (from < to) 1000f else 50f
- indicatorStart using physics {
- dampingRatio = 1f
+ indicatorStart using spring(
+ dampingRatio = 1f,
stiffness = startStiffness
- }
- indicatorEnd using physics {
- dampingRatio = 1f
+ )
+ indicatorEnd using spring(
+ dampingRatio = 1f,
stiffness = endStiffness
- }
+ )
}
}
}
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
index beedf75..e6d6c1e 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
@@ -18,7 +18,6 @@
import androidx.compose.Composable
import androidx.test.filters.SmallTest
-import androidx.ui.text.LastBaseline
import androidx.ui.core.LayoutCoordinates
import androidx.ui.core.Modifier
import androidx.ui.core.globalPosition
@@ -36,7 +35,6 @@
import androidx.ui.text.TextStyle
import androidx.ui.unit.Density
import androidx.ui.unit.dp
-import androidx.ui.unit.sp
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -78,8 +76,6 @@
var appBarCoords: LayoutCoordinates? = null
var navigationIconCoords: LayoutCoordinates? = null
var titleCoords: LayoutCoordinates? = null
- // Position of the baseline relative to the top of the text
- var titleLastBaselineRelativePosition: Float? = null
var actionCoords: LayoutCoordinates? = null
composeTestRule.setMaterialContent {
Box(Modifier.onChildPositioned { appBarCoords = it }) {
@@ -88,10 +84,7 @@
FakeIcon(Modifier.onPositioned { navigationIconCoords = it })
},
title = {
- Text("title", Modifier.onPositioned { coords: LayoutCoordinates ->
- titleCoords = coords
- titleLastBaselineRelativePosition = coords[LastBaseline].toFloat()
- })
+ Text("title", Modifier.onPositioned { titleCoords = it })
},
actions = {
FakeIcon(Modifier.onPositioned { actionCoords = it })
@@ -122,13 +115,12 @@
val titleExpectedPositionX = (4.dp.toIntPx() + 68.dp.toIntPx()).toFloat()
assertThat(titlePositionX).isEqualTo(titleExpectedPositionX)
- // Absolute position of the baseline
- val titleLastBaselinePositionY = titleLastBaselineRelativePosition!! +
- titleCoords!!.globalPosition.y
- // Baseline should be 20.sp from the bottom of the app bar
- val titleExpectedLastBaselinePositionY =
- (appBarBottomEdgeY - 20.sp.toIntPx().toFloat())
- assertThat(titleLastBaselinePositionY).isEqualTo(titleExpectedLastBaselinePositionY)
+ // Title should be vertically centered
+ val titlePositionY = titleCoords!!.globalPosition.y
+ val titleHeight = titleCoords!!.size.height
+ val appBarHeight = appBarCoords!!.size.height
+ val titleExpectedPositionY = (appBarHeight - titleHeight) / 2
+ assertThat(titlePositionY).isEqualTo(titleExpectedPositionY)
// Action should be placed at the end
val actionPositionX = actionCoords!!.globalPosition.x
@@ -154,8 +146,7 @@
Box(Modifier.onChildPositioned { appBarCoords = it }) {
TopAppBar(
title = {
- Text("title",
- Modifier.onPositioned { titleCoords = it })
+ Text("title", Modifier.onPositioned { titleCoords = it })
},
actions = {
FakeIcon(Modifier.onPositioned { actionCoords = it })
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
index 9f2424b..8b5e326 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
@@ -29,11 +29,14 @@
import androidx.ui.foundation.selection.ToggleableState
import androidx.ui.layout.wrapContentSize
import androidx.ui.test.captureToBitmap
+import androidx.ui.test.center
import androidx.ui.test.createComposeRule
import androidx.ui.test.doClick
+import androidx.ui.test.doPartialGesture
import androidx.ui.test.find
import androidx.ui.test.findByTag
import androidx.ui.test.isToggleable
+import androidx.ui.test.sendDown
import androidx.ui.test.waitForIdle
import org.junit.Rule
import org.junit.Test
@@ -78,6 +81,19 @@
}
@Test
+ fun checkBoxTest_pressed() {
+ composeTestRule.setMaterialContent {
+ Box(wrap.semantics().testTag(wrapperTestTag)) {
+ Checkbox(modifier = wrap, checked = false, onCheckedChange = { })
+ }
+ }
+ findByTag(wrapperTestTag).doPartialGesture {
+ sendDown(center)
+ }
+ assertToggeableAgainstGolden("checkbox_pressed")
+ }
+
+ @Test
fun checkBoxTest_indeterminate() {
composeTestRule.setMaterialContent {
Box(wrap.semantics().testTag(wrapperTestTag)) {
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
index 2c35fdfa..f6bbaf81 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
@@ -18,14 +18,20 @@
import androidx.compose.Composable
import androidx.ui.core.Modifier
+import androidx.ui.geometry.Size
import androidx.ui.layout.DpConstraints
+import androidx.ui.layout.Stack
+import androidx.ui.layout.preferredSizeIn
import androidx.ui.test.BigTestConstraints
import androidx.ui.test.CollectedSizes
import androidx.ui.test.ComposeTestRule
+import androidx.ui.test.SemanticsNodeInteraction
+import androidx.ui.test.getAlignmentLinePosition
import androidx.ui.test.runOnIdleCompose
import androidx.ui.test.setContentAndGetPixelSize
+import androidx.ui.text.FirstBaseline
+import androidx.ui.text.LastBaseline
import androidx.ui.unit.Density
-import androidx.ui.geometry.Size
fun ComposeTestRule.setMaterialContent(
modifier: Modifier = Modifier,
@@ -37,6 +43,20 @@
}
}
}
+fun ComposeTestRule.setMaterialContentWithConstraints(
+ parentConstraints: DpConstraints,
+ composable: @Composable () -> Unit
+) {
+ setContent {
+ MaterialTheme {
+ Stack {
+ Stack(Modifier.preferredSizeIn(parentConstraints)) {
+ composable()
+ }
+ }
+ }
+ }
+}
fun <T> ComposeTestRule.runOnIdleComposeWithDensity(action: Density.() -> T): T {
return runOnIdleCompose {
density.action()
@@ -62,4 +82,8 @@
MaterialTheme {
Surface(modifier = modifier, content = children)
}
-}
\ No newline at end of file
+}
+
+fun SemanticsNodeInteraction.getFirstBaselinePosition() = getAlignmentLinePosition(FirstBaseline)
+
+fun SemanticsNodeInteraction.getLastBaselinePosition() = getAlignmentLinePosition(LastBaseline)
\ No newline at end of file
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
index a5512a9..6d8bcbb 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
@@ -37,7 +37,7 @@
import androidx.ui.test.doClick
import androidx.ui.test.find
import androidx.ui.test.findByTag
-import androidx.ui.test.hasAnyChildThat
+import androidx.ui.test.hasAnyDescendantThat
import androidx.ui.test.hasTestTag
import androidx.ui.test.isPopup
import androidx.ui.test.runOnIdleCompose
@@ -46,7 +46,10 @@
import androidx.ui.unit.IntOffset
import androidx.ui.unit.IntSize
import androidx.ui.unit.Position
+import androidx.ui.unit.PxBounds
import androidx.ui.unit.dp
+import androidx.ui.unit.toOffset
+import androidx.ui.unit.toSize
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -115,13 +118,13 @@
findByTag("MenuContent1").assertExists()
findByTag("MenuContent2").assertExists()
val node = find(
- isPopup() and hasAnyChildThat(hasTestTag("MenuContent1")) and
- hasAnyChildThat(hasTestTag("MenuContent2"))
+ isPopup() and hasAnyDescendantThat(hasTestTag("MenuContent1")) and
+ hasAnyDescendantThat(hasTestTag("MenuContent2"))
).assertExists().fetchSemanticsNode()
with(composeTestRule.density) {
- assertThat(node.size.width).isEqualTo(130 + MenuElevation.toIntPx() * 2)
+ assertThat(node.size.width).isEqualTo(130 + MenuElevationInset.toIntPx() * 2)
assertThat(node.size.height).isEqualTo(200 +
- DropdownMenuVerticalPadding.toIntPx() * 2 + MenuElevation.toIntPx() * 2
+ DropdownMenuVerticalPadding.toIntPx() * 2 + MenuElevationInset.toIntPx() * 2
)
}
}
@@ -137,7 +140,7 @@
}
val anchorPosition = IntOffset(100, 200)
val anchorSize = IntSize(10, 20)
- val inset = with(density) { MenuElevation.toIntPx() }
+ val inset = with(density) { MenuElevationInset.toIntPx() }
val offsetX = 20
val offsetY = 40
val popupSize = IntSize(50, 80)
@@ -191,7 +194,7 @@
val anchorPosition = IntOffset(450, 950)
val anchorPositionRtl = IntOffset(50, 950)
val anchorSize = IntSize(10, 20)
- val inset = with(density) { MenuElevation.toIntPx() }
+ val inset = with(density) { MenuElevationInset.toIntPx() }
val offsetX = 20
val offsetY = 40
val popupSize = IntSize(150, 80)
@@ -234,6 +237,51 @@
}
@Test
+ fun menu_positioning_callback() {
+ val screenWidth = 500
+ val screenHeight = 1000
+ val density = Density(1f)
+ val displayMetrics = DisplayMetrics().apply {
+ widthPixels = screenWidth
+ heightPixels = screenHeight
+ }
+ val anchorPosition = IntOffset(100, 200)
+ val anchorSize = IntSize(10, 20)
+ val inset = with(density) { MenuElevationInset.toIntPx() }
+ val offsetX = 20
+ val offsetY = 40
+ val popupSize = IntSize(50, 80)
+
+ var obtainedParentBounds = PxBounds(0f, 0f, 0f, 0f)
+ var obtainedMenuBounds = PxBounds(0f, 0f, 0f, 0f)
+ DropdownMenuPositionProvider(
+ Position(offsetX.dp, offsetY.dp),
+ density,
+ displayMetrics
+ ) { parentBounds, menuBounds ->
+ obtainedParentBounds = parentBounds
+ obtainedMenuBounds = menuBounds
+ }.calculatePosition(
+ anchorPosition,
+ anchorSize,
+ LayoutDirection.Ltr,
+ popupSize
+ )
+
+ assertThat(obtainedParentBounds).isEqualTo(
+ PxBounds(anchorPosition.toOffset(), anchorSize.toSize())
+ )
+ assertThat(obtainedMenuBounds).isEqualTo(
+ PxBounds(
+ anchorPosition.x.toFloat() + anchorSize.width - inset + offsetX,
+ anchorPosition.y.toFloat() + anchorSize.height - inset + offsetY,
+ anchorPosition.x.toFloat() + anchorSize.width - inset + offsetX + popupSize.width,
+ anchorPosition.y.toFloat() + anchorSize.height - inset + offsetY + popupSize.height
+ )
+ )
+ }
+
+ @Test
fun dropdownMenuItem_emphasis() {
var onSurface = Color.Unset
var enabledContentColor = Color.Unset
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
index 23f5c3d..abe539d 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
@@ -29,11 +29,14 @@
import androidx.ui.foundation.Box
import androidx.ui.layout.wrapContentSize
import androidx.ui.test.captureToBitmap
+import androidx.ui.test.center
import androidx.ui.test.createComposeRule
import androidx.ui.test.doClick
+import androidx.ui.test.doPartialGesture
import androidx.ui.test.find
import androidx.ui.test.findByTag
import androidx.ui.test.isInMutuallyExclusiveGroup
+import androidx.ui.test.sendDown
import androidx.ui.test.waitForIdle
import org.junit.Rule
import org.junit.Test
@@ -78,6 +81,19 @@
}
@Test
+ fun radioButtonTest_pressed() {
+ composeTestRule.setMaterialContent {
+ Box(wrap.semantics().testTag(wrapperTestTag)) {
+ RadioButton(selected = false, onClick = {})
+ }
+ }
+ findByTag(wrapperTestTag).doPartialGesture {
+ sendDown(center)
+ }
+ assertSelectableAgainstGolden("radioButton_pressed")
+ }
+
+ @Test
fun radioButtonTest_disabled_selected() {
composeTestRule.setMaterialContent {
Box(wrap.semantics().testTag(wrapperTestTag)) {
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
index fd947c2..7bb9b38 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
@@ -20,35 +20,38 @@
import androidx.compose.Providers
import androidx.test.filters.MediumTest
import androidx.test.filters.SdkSuppress
-import androidx.ui.text.FirstBaseline
-import androidx.ui.text.LastBaseline
-import androidx.ui.core.LayoutCoordinates
import androidx.ui.core.Modifier
-import androidx.ui.core.globalPosition
-import androidx.ui.core.onPositioned
-import androidx.ui.core.positionInParent
import androidx.ui.core.semantics.semantics
import androidx.ui.core.testTag
import androidx.ui.foundation.Text
import androidx.ui.foundation.shape.corner.CutCornerShape
-import androidx.ui.geometry.Offset
import androidx.ui.graphics.Color
import androidx.ui.graphics.compositeOver
import androidx.ui.layout.DpConstraints
import androidx.ui.layout.Stack
+import androidx.ui.test.assertHeightIsEqualTo
+import androidx.ui.test.assertIsEqualTo
+import androidx.ui.test.assertIsNotEqualTo
import androidx.ui.test.assertShape
+import androidx.ui.test.assertTopPositionInRootIsEqualTo
+import androidx.ui.test.assertWidthIsEqualTo
import androidx.ui.test.captureToBitmap
import androidx.ui.test.createComposeRule
import androidx.ui.test.doClick
import androidx.ui.test.findByTag
import androidx.ui.test.findByText
+import androidx.ui.test.getAlignmentLinePosition
+import androidx.ui.test.getBoundsInRoot
+import androidx.ui.text.FirstBaseline
+import androidx.ui.text.LastBaseline
import androidx.ui.unit.dp
+import androidx.ui.unit.height
+import androidx.ui.unit.width
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
-import kotlin.math.roundToInt
@MediumTest
@RunWith(JUnit4::class)
@@ -86,138 +89,100 @@
@Test
fun snackbar_shortTextOnly_sizes() {
- var textCoords: LayoutCoordinates? = null
- val sizes = composeTestRule.setMaterialContentAndCollectSizes(
- parentConstraints = DpConstraints(maxWidth = 300.dp)
- ) {
+ composeTestRule.setMaterialContentWithConstraints(DpConstraints(maxWidth = 300.dp)) {
Snackbar(
+ modifier = Modifier.testTag("snackbar"),
text = {
- Text("Message",
- Modifier.onPositioned { textCoords = it }
- )
+ Text("Message")
}
)
}
- sizes
- .assertHeightEqualsTo(48.dp)
- .assertWidthEqualsTo(300.dp)
- assertThat(textCoords).isNotNull()
- textCoords?.let {
- with(composeTestRule.density) {
- assertThat(it[FirstBaseline]).isNotEqualTo(0)
- assertThat(it[FirstBaseline])
- .isEqualTo(it[LastBaseline])
- assertThat(it.positionInParent.y.roundToInt() + it[FirstBaseline])
- .isEqualTo(30.dp.toIntPx())
- }
- }
+
+ findByTag("snackbar")
+ .assertWidthIsEqualTo(300.dp)
+ .assertHeightIsEqualTo(48.dp)
+
+ val fistBaseLine = findByText("Message").getAlignmentLinePosition(FirstBaseline)
+ val lastBaseLine = findByText("Message").getAlignmentLinePosition(LastBaseline)
+ fistBaseLine.assertIsNotEqualTo(0.dp, "first baseline")
+ fistBaseLine.assertIsEqualTo(lastBaseLine, "first baseline")
+
+ findByText("Message")
+ .assertTopPositionInRootIsEqualTo(30.dp - fistBaseLine)
}
@Test
fun snackbar_shortTextAndButton_alignment() {
- var snackCoords: LayoutCoordinates? = null
- var textCoords: LayoutCoordinates? = null
- var buttonCoords: LayoutCoordinates? = null
- var buttonTextCoords: LayoutCoordinates? = null
- val sizes = composeTestRule.setMaterialContentAndCollectSizes(
- parentConstraints = DpConstraints(maxWidth = 300.dp)
- ) {
+ composeTestRule.setMaterialContentWithConstraints(DpConstraints(maxWidth = 300.dp)) {
Snackbar(
- modifier = Modifier.onPositioned { snackCoords = it },
+ modifier = Modifier.testTag("snackbar"),
text = {
- Text("Message",
- Modifier.onPositioned { textCoords = it }
- )
+ Text("Message")
},
action = {
TextButton(
onClick = {},
- modifier = Modifier.onPositioned { buttonCoords = it }
+ modifier = Modifier.testTag("button")
) {
- Text("Undo",
- Modifier.onPositioned { buttonTextCoords = it }
- )
+ Text("Undo")
}
}
)
}
- sizes
- .assertHeightEqualsTo(48.dp)
- .assertWidthEqualsTo(300.dp)
- assertThat(textCoords).isNotNull()
- assertThat(buttonCoords).isNotNull()
- assertThat(buttonTextCoords).isNotNull()
- assertThat(snackCoords).isNotNull()
- val localTextCoords = textCoords
- val localButtonCoords = buttonCoords
- val localButtonTextCoords = buttonTextCoords
- val localSnackCoords = snackCoords
- if (localTextCoords != null &&
- localButtonCoords != null &&
- localButtonTextCoords != null &&
- localSnackCoords != null
- ) {
- with(composeTestRule.density) {
- val buttonTextPos =
- localSnackCoords.childToLocal(localButtonTextCoords, Offset.Zero)
- assertThat(localTextCoords[FirstBaseline]).isNotEqualTo(0)
- assertThat(localButtonTextCoords[FirstBaseline]).isNotEqualTo(0)
- assertThat(
- localTextCoords.globalPosition.y.roundToInt() + localTextCoords[FirstBaseline]
- ).isEqualTo(30.dp.toIntPx())
- assertThat(
- buttonTextPos.y.roundToInt() + localButtonTextCoords[FirstBaseline]
- ).isEqualTo(30.dp.toIntPx())
- }
- }
+ findByTag("snackbar")
+ .assertWidthIsEqualTo(300.dp)
+ .assertHeightIsEqualTo(48.dp)
+
+ val textBaseLine = findByText("Message").getAlignmentLinePosition(FirstBaseline)
+ val buttonBaseLine = findByTag("button").getAlignmentLinePosition(FirstBaseline)
+ textBaseLine.assertIsNotEqualTo(0.dp, "text baseline")
+ buttonBaseLine.assertIsNotEqualTo(0.dp, "button baseline")
+
+ findByText("Message")
+ .assertTopPositionInRootIsEqualTo(30.dp - textBaseLine)
+
+ findByTag("button")
+ .assertTopPositionInRootIsEqualTo(30.dp - buttonBaseLine)
}
@Test
fun snackbar_longText_sizes() {
- var textCoords: LayoutCoordinates? = null
- val sizes = composeTestRule.setMaterialContentAndCollectSizes(
- parentConstraints = DpConstraints(maxWidth = 300.dp)
- ) {
+ composeTestRule.setMaterialContentWithConstraints(DpConstraints(maxWidth = 300.dp)) {
Snackbar(
+ modifier = Modifier.testTag("snackbar"),
text = {
- Text(longText,
- Modifier.onPositioned { textCoords = it }, maxLines = 2)
+ Text(longText, Modifier.testTag("text"), maxLines = 2)
}
)
}
- sizes
- .assertHeightEqualsTo(68.dp)
- .assertWidthEqualsTo(300.dp)
- assertThat(textCoords).isNotNull()
- textCoords?.let {
- with(composeTestRule.density) {
- assertThat(it[FirstBaseline]).isNotEqualTo(0)
- assertThat(it[LastBaseline]).isNotEqualTo(0)
- assertThat(it[FirstBaseline]).isNotEqualTo(it[LastBaseline])
- assertThat(it.positionInParent.y.roundToInt() + it[FirstBaseline])
- .isEqualTo(30.dp.toIntPx())
- }
- }
+
+ findByTag("snackbar")
+ .assertWidthIsEqualTo(300.dp)
+ .assertHeightIsEqualTo(68.dp)
+
+ val firstBaseline = findByTag("text").getFirstBaselinePosition()
+ val lastBaseline = findByTag("text").getLastBaselinePosition()
+
+ firstBaseline.assertIsNotEqualTo(0.dp, "first baseline")
+ lastBaseline.assertIsNotEqualTo(0.dp, "last baseline")
+ firstBaseline.assertIsNotEqualTo(lastBaseline, "first baseline")
+
+ findByTag("text")
+ .assertTopPositionInRootIsEqualTo(30.dp - firstBaseline)
}
@Test
fun snackbar_longTextAndButton_alignment() {
- var snackCoords: LayoutCoordinates? = null
- var textCoords: LayoutCoordinates? = null
- var buttonCoords: LayoutCoordinates? = null
- val sizes = composeTestRule.setMaterialContentAndCollectSizes(
- parentConstraints = DpConstraints(maxWidth = 300.dp)
- ) {
+ composeTestRule.setMaterialContentWithConstraints(DpConstraints(maxWidth = 300.dp)) {
Snackbar(
- modifier = Modifier.onPositioned { snackCoords = it },
+ modifier = Modifier.testTag("snackbar"),
text = {
- Text(longText,
- Modifier.onPositioned { textCoords = it }, maxLines = 2)
+ Text(longText, Modifier.testTag("text"), maxLines = 2)
},
action = {
TextButton(
- modifier = Modifier.onPositioned { buttonCoords = it },
+ modifier = Modifier.testTag("button"),
onClick = {}
) {
Text("Undo")
@@ -225,58 +190,40 @@
}
)
}
- sizes
- .assertHeightEqualsTo(68.dp)
- .assertWidthEqualsTo(300.dp)
- assertThat(textCoords).isNotNull()
- assertThat(buttonCoords).isNotNull()
- assertThat(snackCoords).isNotNull()
- val localTextCoords = textCoords
- val localButtonCoords = buttonCoords
- val localSnackCoords = snackCoords
- if (localTextCoords != null && localButtonCoords != null && localSnackCoords != null) {
- with(composeTestRule.density) {
- val buttonPositionInSnack =
- localSnackCoords.childToLocal(localButtonCoords, Offset.Zero)
- val buttonCenter =
- buttonPositionInSnack.y.roundToInt() +
- (localButtonCoords.size.height / 2).toFloat()
+ findByTag("snackbar")
+ .assertWidthIsEqualTo(300.dp)
+ .assertHeightIsEqualTo(68.dp)
- assertThat(localTextCoords[FirstBaseline]).isNotEqualTo(0)
- assertThat(localTextCoords[LastBaseline]).isNotEqualTo(0)
- assertThat(localTextCoords[FirstBaseline])
- .isNotEqualTo(localTextCoords[LastBaseline])
- assertThat(
- localTextCoords.globalPosition.y.roundToInt() + localTextCoords[FirstBaseline]
- ).isEqualTo(30.dp.toIntPx())
+ val textFirstBaseLine = findByTag("text").getFirstBaselinePosition()
+ val textLastBaseLine = findByTag("text").getLastBaselinePosition()
- assertThat(buttonCenter).isEqualTo(
- (localSnackCoords.size.height / 2).toFloat()
- )
- }
- }
+ textFirstBaseLine.assertIsNotEqualTo(0.dp, "first baseline")
+ textLastBaseLine.assertIsNotEqualTo(0.dp, "last baseline")
+ textFirstBaseLine.assertIsNotEqualTo(textLastBaseLine, "first baseline")
+
+ findByTag("text")
+ .assertTopPositionInRootIsEqualTo(30.dp - textFirstBaseLine)
+
+ val buttonBounds = findByTag("button").getBoundsInRoot()
+ val snackBounds = findByTag("snackbar").getBoundsInRoot()
+
+ val buttonCenter = buttonBounds.top + (buttonBounds.height / 2)
+ buttonCenter.assertIsEqualTo(snackBounds.height / 2, "button center")
}
@Test
fun snackbar_textAndButtonOnSeparateLine_alignment() {
- var snackCoords: LayoutCoordinates? = null
- var textCoords: LayoutCoordinates? = null
- var buttonCoords: LayoutCoordinates? = null
- composeTestRule.setMaterialContentAndCollectSizes(
- parentConstraints = DpConstraints(maxWidth = 300.dp)
- ) {
+ composeTestRule.setMaterialContentWithConstraints(DpConstraints(maxWidth = 300.dp)) {
Snackbar(
- modifier = Modifier.onPositioned { snackCoords = it },
+ modifier = Modifier.testTag("snackbar"),
text = {
- Text("Message",
- Modifier.onPositioned { textCoords = it }
- )
+ Text("Message")
},
action = {
TextButton(
onClick = {},
- modifier = Modifier.onPositioned { buttonCoords = it }
+ modifier = Modifier.testTag("button")
) {
Text("Undo")
}
@@ -284,41 +231,21 @@
actionOnNewLine = true
)
}
- assertThat(textCoords).isNotNull()
- assertThat(buttonCoords).isNotNull()
- assertThat(snackCoords).isNotNull()
- val localTextCoords = textCoords
- val localButtonCoords = buttonCoords
- val localSnackCoords = snackCoords
- if (localTextCoords != null && localButtonCoords != null && localSnackCoords != null) {
- with(composeTestRule.density) {
- val buttonPositionInSnack =
- localSnackCoords.childToLocal(localButtonCoords, Offset.Zero)
- val textPositionInSnack =
- localSnackCoords.childToLocal(localTextCoords, Offset.Zero)
+ val textFirstBaseLine = findByText("Message").getFirstBaselinePosition()
+ val textLastBaseLine = findByText("Message").getLastBaselinePosition()
+ val textBounds = findByText("Message").getBoundsInRoot()
+ val buttonBounds = findByTag("button").getBoundsInRoot()
- assertThat(
- textPositionInSnack.y.roundToInt() + localTextCoords[FirstBaseline]
- ).isEqualTo(30.dp.toIntPx())
+ findByText("Message")
+ .assertTopPositionInRootIsEqualTo(30.dp - textFirstBaseLine)
- assertThat(
- buttonPositionInSnack.y.roundToInt() -
- textPositionInSnack.y.roundToInt() -
- localTextCoords[LastBaseline]
- ).isEqualTo(18.dp.toIntPx())
+ findByTag("button")
+ .assertTopPositionInRootIsEqualTo(18.dp + textBounds.top + textLastBaseLine)
- assertThat(
- localSnackCoords.size.height - buttonPositionInSnack.y.roundToInt() -
- localButtonCoords.size.height
- ).isEqualTo(8.dp.toIntPx())
-
- assertThat(
- localSnackCoords.size.width - buttonPositionInSnack.x.roundToInt() -
- localButtonCoords.size.width
- ).isEqualTo(8.dp.toIntPx())
- }
- }
+ findByTag("snackbar")
+ .assertHeightIsEqualTo(8.dp + buttonBounds.top + buttonBounds.height)
+ .assertWidthIsEqualTo(8.dp + buttonBounds.left + buttonBounds.width)
}
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt
new file mode 100644
index 0000000..6f2b19d
--- /dev/null
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt
@@ -0,0 +1,183 @@
+/*
+ * Copyright 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 androidx.ui.material
+
+import android.os.Build
+import androidx.compose.state
+import androidx.test.filters.LargeTest
+import androidx.test.filters.SdkSuppress
+import androidx.test.screenshot.AndroidXScreenshotTestRule
+import androidx.test.screenshot.assertAgainstGolden
+import androidx.ui.core.Alignment
+import androidx.ui.core.Modifier
+import androidx.ui.core.testTag
+import androidx.ui.foundation.Box
+import androidx.ui.graphics.Color
+import androidx.ui.layout.wrapContentSize
+import androidx.ui.test.captureToBitmap
+import androidx.ui.test.center
+import androidx.ui.test.createComposeRule
+import androidx.ui.test.doClick
+import androidx.ui.test.doPartialGesture
+import androidx.ui.test.find
+import androidx.ui.test.findByTag
+import androidx.ui.test.isToggleable
+import androidx.ui.test.sendDown
+import androidx.ui.test.waitForIdle
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@LargeTest
+@RunWith(JUnit4::class)
+@SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+class SwitchScreenshotTest {
+
+ @get:Rule
+ val composeTestRule = createComposeRule()
+
+ @get:Rule
+ val screenshotRule = AndroidXScreenshotTestRule(GOLDEN_MATERIAL)
+
+ // TODO: this test tag as well as Boxes inside testa are temporarty, remove then b/157687898
+ // is fixed
+ private val wrapperTestTag = "switchWrapper"
+
+ private val wrapperModifier = Modifier
+ .wrapContentSize(Alignment.TopStart)
+ .testTag(wrapperTestTag)
+
+ @Test
+ fun switchTest_checked() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = true, onCheckedChange = { })
+ }
+ }
+ assertToggeableAgainstGolden("switch_checked")
+ }
+
+ @Test
+ fun switchTest_checked_customColor() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = true, onCheckedChange = { }, color = Color.Red)
+ }
+ }
+ assertToggeableAgainstGolden("switch_checked_customColor")
+ }
+
+ @Test
+ fun switchTest_unchecked() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = false, onCheckedChange = { })
+ }
+ }
+ assertToggeableAgainstGolden("switch_unchecked")
+ }
+
+ @Test
+ fun switchTest_pressed() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = false, enabled = true, onCheckedChange = { })
+ }
+ }
+
+ findByTag(wrapperTestTag).doPartialGesture {
+ sendDown(center)
+ }
+ assertToggeableAgainstGolden("switch_pressed")
+ }
+
+ @Test
+ fun switchTest_disabled_checked() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = true, enabled = false, onCheckedChange = { })
+ }
+ }
+ assertToggeableAgainstGolden("switch_disabled_checked")
+ }
+
+ @Test
+ fun switchTest_disabled_unchecked() {
+ composeTestRule.setMaterialContent {
+ Box(wrapperModifier) {
+ Switch(checked = false, enabled = false, onCheckedChange = { })
+ }
+ }
+ assertToggeableAgainstGolden("switch_disabled_unchecked")
+ }
+
+ @Test
+ fun switchTest_unchecked_animateToChecked() {
+ composeTestRule.setMaterialContent {
+ val isChecked = state { false }
+ Box(wrapperModifier) {
+ Switch(
+ checked = isChecked.value,
+ onCheckedChange = { isChecked.value = it }
+ )
+ }
+ }
+
+ composeTestRule.clockTestRule.pauseClock()
+
+ find(isToggleable())
+ .doClick()
+
+ waitForIdle()
+
+ composeTestRule.clockTestRule.advanceClock(60)
+
+ assertToggeableAgainstGolden("switch_animateToChecked")
+ }
+
+ @Test
+ fun switchTest_checked_animateToUnchecked() {
+ composeTestRule.setMaterialContent {
+ val isChecked = state { true }
+ Box(wrapperModifier) {
+ Switch(
+ checked = isChecked.value,
+ onCheckedChange = { isChecked.value = it }
+ )
+ }
+ }
+
+ composeTestRule.clockTestRule.pauseClock()
+
+ find(isToggleable())
+ .doClick()
+
+ waitForIdle()
+
+ composeTestRule.clockTestRule.advanceClock(60)
+
+ assertToggeableAgainstGolden("switch_animateToUnchecked")
+ }
+
+ private fun assertToggeableAgainstGolden(goldenName: String) {
+ // TODO: replace with find(isToggeable()) after b/157687898 is fixed
+ findByTag(wrapperTestTag)
+ .captureToBitmap()
+ .assertAgainstGolden(screenshotRule, goldenName)
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt
new file mode 100644
index 0000000..9767264
--- /dev/null
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2019 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 androidx.ui.material
+
+import androidx.compose.state
+import androidx.test.filters.MediumTest
+import androidx.ui.core.Modifier
+import androidx.ui.core.testTag
+import androidx.ui.foundation.Strings
+import androidx.ui.layout.Column
+import androidx.ui.layout.Stack
+import androidx.ui.test.assertHasNoClickAction
+import androidx.ui.test.assertIsEnabled
+import androidx.ui.test.assertIsOff
+import androidx.ui.test.assertIsOn
+import androidx.ui.test.assertValueEquals
+import androidx.ui.test.createComposeRule
+import androidx.ui.test.doClick
+import androidx.ui.test.findByTag
+import androidx.ui.unit.dp
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@MediumTest
+@RunWith(JUnit4::class)
+class SwitchTest {
+
+ @get:Rule
+ val composeTestRule = createComposeRule(disableTransitions = true)
+
+ private val defaultSwitchTag = "switch"
+
+ @Test
+ fun switch_defaultSemantics() {
+ composeTestRule.setMaterialContent {
+ Column {
+ Switch(modifier = Modifier.testTag("checked"), checked = true, onCheckedChange = {})
+ Switch(
+ modifier = Modifier.testTag("unchecked"),
+ checked = false,
+ onCheckedChange = {}
+ )
+ }
+ }
+
+ findByTag("checked")
+ .assertIsEnabled()
+ .assertIsOn()
+ .assertValueEquals(Strings.Checked)
+ findByTag("unchecked")
+ .assertIsEnabled()
+ .assertIsOff()
+ .assertValueEquals(Strings.Unchecked)
+ }
+
+ @Test
+ fun switch_toggle() {
+ composeTestRule.setMaterialContent {
+ val (checked, onChecked) = state { false }
+
+ // Stack is needed because otherwise the control will be expanded to fill its parent
+ Stack {
+ Switch(
+ modifier = Modifier.testTag(defaultSwitchTag),
+ checked = checked,
+ onCheckedChange = onChecked
+ )
+ }
+ }
+ findByTag(defaultSwitchTag)
+ .assertIsOff()
+ .doClick()
+ .assertIsOn()
+ }
+
+ @Test
+ fun switch_toggleTwice() {
+ composeTestRule.setMaterialContent {
+ val (checked, onChecked) = state { false }
+
+ // Stack is needed because otherwise the control will be expanded to fill its parent
+ Stack {
+ Switch(
+ modifier = Modifier.testTag(defaultSwitchTag),
+ checked = checked,
+ onCheckedChange = onChecked
+ )
+ }
+ }
+ findByTag(defaultSwitchTag)
+ .assertIsOff()
+ .doClick()
+ .assertIsOn()
+ .doClick()
+ .assertIsOff()
+ }
+
+ @Test
+ fun switch_uncheckableWithNoLambda() {
+ composeTestRule.setMaterialContent {
+ val (checked, _) = state { false }
+ Switch(
+ modifier = Modifier.testTag(defaultSwitchTag),
+ checked = checked,
+ onCheckedChange = {},
+ enabled = false
+ )
+ }
+ findByTag(defaultSwitchTag)
+ .assertHasNoClickAction()
+ }
+
+ @Test
+ fun switch_materialSizes_whenChecked() {
+ materialSizesTestForValue(true)
+ }
+
+ @Test
+ fun switch_materialSizes_whenUnchecked() {
+ materialSizesTestForValue(false)
+ }
+
+ private fun materialSizesTestForValue(checked: Boolean) {
+ composeTestRule
+ .setMaterialContentAndCollectSizes {
+ Switch(checked = checked, onCheckedChange = {}, enabled = false)
+ }
+ .assertWidthEqualsTo { 34.dp.toIntPx() + 2.dp.toIntPx() * 2 }
+ .assertHeightEqualsTo { 20.dp.toIntPx() + 2.dp.toIntPx() * 2 }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchUiTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchUiTest.kt
deleted file mode 100644
index a2c83fb..0000000
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchUiTest.kt
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright 2019 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 androidx.ui.material
-
-import android.os.Build
-import androidx.compose.state
-import androidx.test.filters.MediumTest
-import androidx.test.filters.SdkSuppress
-import androidx.ui.core.DensityAmbient
-import androidx.ui.core.Modifier
-import androidx.ui.core.testTag
-import androidx.ui.foundation.Strings
-import androidx.ui.foundation.drawBackground
-import androidx.ui.graphics.Color
-import androidx.ui.graphics.compositeOver
-import androidx.ui.graphics.toArgb
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
-import androidx.ui.test.assertHasNoClickAction
-import androidx.ui.test.assertIsEnabled
-import androidx.ui.test.assertIsOff
-import androidx.ui.test.assertIsOn
-import androidx.ui.test.assertValueEquals
-import androidx.ui.test.captureToBitmap
-import androidx.ui.test.createComposeRule
-import androidx.ui.test.doClick
-import androidx.ui.test.findByTag
-import androidx.ui.unit.dp
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertNotEquals
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-import kotlin.math.ceil
-import kotlin.math.floor
-import kotlin.math.sqrt
-
-@MediumTest
-@RunWith(JUnit4::class)
-class SwitchUiTest {
-
- @get:Rule
- val composeTestRule = createComposeRule(disableTransitions = true)
-
- private val defaultSwitchTag = "switch"
-
- @Test
- fun switch_defaultSemantics() {
- composeTestRule.setMaterialContent {
- Column {
- Switch(modifier = Modifier.testTag("checked"), checked = true, onCheckedChange = {})
- Switch(
- modifier = Modifier.testTag("unchecked"),
- checked = false,
- onCheckedChange = {}
- )
- }
- }
-
- findByTag("checked")
- .assertIsEnabled()
- .assertIsOn()
- .assertValueEquals(Strings.Checked)
- findByTag("unchecked")
- .assertIsEnabled()
- .assertIsOff()
- .assertValueEquals(Strings.Unchecked)
- }
-
- @Test
- fun switch_toggle() {
- composeTestRule.setMaterialContent {
- val (checked, onChecked) = state { false }
-
- // Stack is needed because otherwise the control will be expanded to fill its parent
- Stack {
- Switch(
- modifier = Modifier.testTag(defaultSwitchTag),
- checked = checked,
- onCheckedChange = onChecked
- )
- }
- }
- findByTag(defaultSwitchTag)
- .assertIsOff()
- .doClick()
- .assertIsOn()
- }
-
- @Test
- fun switch_toggleTwice() {
- composeTestRule.setMaterialContent {
- val (checked, onChecked) = state { false }
-
- // Stack is needed because otherwise the control will be expanded to fill its parent
- Stack {
- Switch(
- modifier = Modifier.testTag(defaultSwitchTag),
- checked = checked,
- onCheckedChange = onChecked
- )
- }
- }
- findByTag(defaultSwitchTag)
- .assertIsOff()
- .doClick()
- .assertIsOn()
- .doClick()
- .assertIsOff()
- }
-
- @Test
- fun switch_uncheckableWithNoLambda() {
- composeTestRule.setMaterialContent {
- val (checked, _) = state { false }
- Switch(
- modifier = Modifier.testTag(defaultSwitchTag),
- checked = checked,
- onCheckedChange = {},
- enabled = false
- )
- }
- findByTag(defaultSwitchTag)
- .assertHasNoClickAction()
- }
-
- @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
- @Test
- fun switch_checkedLeftEndIsRounded() {
- testSwitchEndRounded(true)
- }
-
- @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
- @Test
- fun switch_uncheckedRightEndIsRounded() {
- testSwitchEndRounded(false)
- }
-
- /**
- * Helper method used to verify the ends of the switch opposite the thumb
- * are rounded properly
- */
- private fun testSwitchEndRounded(checked: Boolean) {
- var trackWidthPx = 0
- var strokeWidthPx = 0
- var thumbDiameter = 0
- var surfaceColor = Color.White
- composeTestRule.setMaterialContent {
- with (DensityAmbient.current) {
- trackWidthPx = TrackWidth.toIntPx()
- strokeWidthPx = TrackStrokeWidth.toIntPx()
- thumbDiameter = ThumbDiameter.toIntPx()
- }
- surfaceColor = MaterialTheme.colors.onSurface
- Switch(modifier = Modifier.testTag(defaultSwitchTag).drawBackground(Color.Gray),
- color = Color.Red,
- checked = checked,
- onCheckedChange = {},
- enabled = false
- )
- }
-
- findByTag(defaultSwitchTag).captureToBitmap().apply {
- // Ensure we resolved the physical pixels properly before validating the drawn pixels
- assertNotEquals(0, trackWidthPx)
- assertNotEquals(0, strokeWidthPx)
- assertEquals(height, thumbDiameter)
- assertEquals(width, trackWidthPx)
-
- val hyp = sqrt(2.0) / 2
- val radius = strokeWidthPx / 2
- val left = if (checked) {
- floor(radius - radius * hyp).toInt()
- } else {
- ceil(width - radius + radius * hyp).toInt()
- }
-
- val upper = floor(height / 2 - radius * hyp).toInt()
- val lower = ceil(height / 2 + radius * hyp).toInt()
-
- // sample pixels slightly outside the rounded corner radius
- assertEquals(getPixel(left, upper - 2), Color.Gray.toArgb())
- assertEquals(getPixel(left, lower + 2), Color.Gray.toArgb())
-
- if (checked) {
- val compositedColor =
- Color.Red.copy(alpha = CheckedTrackOpacity).compositeOver(Color.Gray)
-
- val leftUpperPixel = Color(getPixel(left, upper + 3))
- assertEquals(leftUpperPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(leftUpperPixel.red, compositedColor.red, 0.01f)
- assertEquals(leftUpperPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(leftUpperPixel.green, compositedColor.green, 0.01f)
-
- val leftCenterPixel = Color(getPixel(0, height / 2))
- assertEquals(leftCenterPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(leftCenterPixel.red, compositedColor.red, 0.01f)
- assertEquals(leftCenterPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(leftCenterPixel.green, compositedColor.green, 0.01f)
-
- val leftLowerPixel = Color(getPixel(left, lower - 3))
- assertEquals(leftLowerPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(leftLowerPixel.red, compositedColor.red, 0.01f)
- assertEquals(leftLowerPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(leftLowerPixel.green, compositedColor.green, 0.01f)
- } else {
- val compositedColor = surfaceColor.copy(alpha = UncheckedTrackOpacity)
- .compositeOver(Color.Gray)
-
- val rightUpperPixel = Color(getPixel(left, upper + 3))
- assertEquals(rightUpperPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(rightUpperPixel.red, compositedColor.red, 0.01f)
- assertEquals(rightUpperPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(rightUpperPixel.green, compositedColor.green, 0.01f)
-
- val rightCenterPixel = Color(getPixel(width - 1, height / 2))
-
- assertEquals(rightCenterPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(rightCenterPixel.red, compositedColor.red, 0.01f)
- assertEquals(rightCenterPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(rightCenterPixel.green, compositedColor.green, 0.01f)
-
- val rightLowerPixel = Color(getPixel(left, lower - 3))
- assertEquals(rightLowerPixel.alpha, compositedColor.alpha, 0.01f)
- assertEquals(rightLowerPixel.red, compositedColor.red, 0.01f)
- assertEquals(rightLowerPixel.blue, compositedColor.blue, 0.01f)
- assertEquals(rightLowerPixel.green, compositedColor.green, 0.01f)
- }
- }
- }
-
- @Test
- fun switch_materialSizes_whenChecked() {
- materialSizesTestForValue(true)
- }
-
- @Test
- fun switch_materialSizes_whenUnchecked() {
- materialSizesTestForValue(false)
- }
-
- private fun materialSizesTestForValue(checked: Boolean) {
- composeTestRule
- .setMaterialContentAndCollectSizes {
- Switch(checked = checked, onCheckedChange = {}, enabled = false)
- }
- .assertWidthEqualsTo { 34.dp.toIntPx() + 2.dp.toIntPx() * 2 }
- .assertHeightEqualsTo { 20.dp.toIntPx() + 2.dp.toIntPx() * 2 }
- }
-}
\ No newline at end of file
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
index 24f5c3f..568116e 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
@@ -34,6 +34,8 @@
import androidx.ui.material.samples.ScrollingTextTabs
import androidx.ui.material.samples.TextTabs
import androidx.ui.test.assertCountEquals
+import androidx.ui.test.assertHeightIsEqualTo
+import androidx.ui.test.assertIsEqualTo
import androidx.ui.test.assertIsSelected
import androidx.ui.test.assertIsUnselected
import androidx.ui.test.assertPositionInRootIsEqualTo
@@ -41,14 +43,11 @@
import androidx.ui.test.doClick
import androidx.ui.test.findAll
import androidx.ui.test.findByTag
-import androidx.ui.test.getAlignmentLinePosition
import androidx.ui.test.getBoundsInRoot
import androidx.ui.test.isInMutuallyExclusiveGroup
-import androidx.ui.text.LastBaseline
import androidx.ui.unit.dp
import androidx.ui.unit.height
import androidx.ui.unit.width
-import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -68,42 +67,45 @@
@Test
fun textTab_height() {
- composeTestRule
- .setMaterialContentAndCollectSizes {
- Box {
- Tab(text = { Text("Text") }, selected = true, onSelected = {})
- }
+ composeTestRule.setMaterialContent {
+ Box(Modifier.testTag("tab")) {
+ Tab(text = { Text("Text") }, selected = true, onSelected = {})
}
- .assertHeightEqualsTo(ExpectedSmallTabHeight)
+ }
+
+ findByTag("tab")
+ .assertHeightIsEqualTo(ExpectedSmallTabHeight)
}
@Test
fun iconTab_height() {
- composeTestRule
- .setMaterialContentAndCollectSizes {
- Box {
- Tab(icon = { Icon(icon) }, selected = true, onSelected = {})
- }
+ composeTestRule.setMaterialContent {
+ Box(Modifier.testTag("tab")) {
+ Tab(icon = { Icon(icon) }, selected = true, onSelected = {})
}
- .assertHeightEqualsTo(ExpectedSmallTabHeight)
+ }
+
+ findByTag("tab")
+ .assertHeightIsEqualTo(ExpectedSmallTabHeight)
}
@Test
fun textAndIconTab_height() {
- composeTestRule
- .setMaterialContentAndCollectSizes {
- Box {
- Surface {
- Tab(
- text = { Text("Text and Icon") },
- icon = { Icon(icon) },
- selected = true,
- onSelected = {}
- )
- }
+ composeTestRule.setMaterialContent {
+ Box(Modifier.testTag("tab")) {
+ Surface {
+ Tab(
+ text = { Text("Text and Icon") },
+ icon = { Icon(icon) },
+ selected = true,
+ onSelected = {}
+ )
}
}
- .assertHeightEqualsTo(ExpectedLargeTabHeight)
+ }
+
+ findByTag("tab")
+ .assertHeightIsEqualTo(ExpectedLargeTabHeight)
}
@Test
@@ -189,12 +191,11 @@
val tabRowBounds = findByTag("tabRow").getBoundsInRoot()
val textBounds = findByTag("text").getBoundsInRoot()
- val textBaselinePos = findByTag("text").getAlignmentLinePosition(LastBaseline)
+ val textBaselinePos = findByTag("text").getLastBaselinePosition()
val baselinePositionY = textBounds.top + textBaselinePos
val expectedPositionY = tabRowBounds.height - expectedBaselineDistance
-
- assertThat(baselinePositionY.value).isWithin(0.5f).of(expectedPositionY.value)
+ baselinePositionY.assertIsEqualTo(expectedPositionY, "baseline y-position")
}
@Test
@@ -227,11 +228,11 @@
val tabRowBounds = findByTag("tabRow").getBoundsInRoot()
val textBounds = findByTag("text").getBoundsInRoot()
- val textBaselinePos = findByTag("text").getAlignmentLinePosition(LastBaseline)
+ val textBaselinePos = findByTag("text").getLastBaselinePosition()
val baselinePositionY = textBounds.top + textBaselinePos
val expectedPositionY = tabRowBounds.height - expectedBaselineDistance
- assertThat(baselinePositionY).isEqualTo(expectedPositionY)
+ baselinePositionY.assertIsEqualTo(expectedPositionY, "baseline y-position")
}
@Test
@@ -262,13 +263,13 @@
val tabRowBounds = findByTag("tabRow").getBoundsInRoot()
val textBounds = findByTag("text").getBoundsInRoot()
- val textBaselinePos = findByTag("text").getAlignmentLinePosition(LastBaseline)
+ val textBaselinePos = findByTag("text").getLastBaselinePosition()
val expectedBaselineDistance = expectedBaseline + indicatorHeight
val baselinePositionY = textBounds.top + textBaselinePos
val expectedPositionY = (tabRowBounds.height - expectedBaselineDistance)
- assertThat(baselinePositionY.value).isWithin(0.5f).of(expectedPositionY.value)
+ baselinePositionY.assertIsEqualTo(expectedPositionY, "baseline y-position")
}
@Test
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
index 542dba8..01073b1 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
@@ -114,40 +114,35 @@
buttons: @Composable () -> Unit,
shape: Shape = MaterialTheme.shapes.medium
) {
- // TODO: Find a cleaner way to pass the properties of the MaterialTheme
- val currentColors = MaterialTheme.colors
- val currentTypography = MaterialTheme.typography
Dialog(onCloseRequest = onCloseRequest) {
- MaterialTheme(colors = currentColors, typography = currentTypography) {
- Surface(
- modifier = AlertDialogWidth,
- shape = shape
- ) {
- val emphasisLevels = EmphasisAmbient.current
- Column {
- if (title != null) {
- Box(TitlePadding.gravity(Alignment.Start)) {
- ProvideEmphasis(emphasisLevels.high) {
- val textStyle = MaterialTheme.typography.h6
- ProvideTextStyle(textStyle, title)
- }
+ Surface(
+ modifier = AlertDialogWidth,
+ shape = shape
+ ) {
+ val emphasisLevels = EmphasisAmbient.current
+ Column {
+ if (title != null) {
+ Box(TitlePadding.gravity(Alignment.Start)) {
+ ProvideEmphasis(emphasisLevels.high) {
+ val textStyle = MaterialTheme.typography.subtitle1
+ ProvideTextStyle(textStyle, title)
}
- } else {
- // TODO(b/138924683): Temporary until padding for the Text's
- // baseline
- Spacer(NoTitleExtraHeight)
}
+ } else {
+ // TODO(b/138924683): Temporary until padding for the Text's
+ // baseline
+ Spacer(NoTitleExtraHeight)
+ }
- Box(TextPadding.gravity(Alignment.Start)) {
- ProvideEmphasis(emphasisLevels.medium) {
- val textStyle = MaterialTheme.typography.body1
- ProvideTextStyle(textStyle, text)
- }
+ Box(TextPadding.gravity(Alignment.Start)) {
+ ProvideEmphasis(emphasisLevels.medium) {
+ val textStyle = MaterialTheme.typography.body2
+ ProvideTextStyle(textStyle, text)
}
- Spacer(TextToButtonsHeight)
- buttons()
}
}
+ Spacer(TextToButtonsHeight)
+ buttons()
}
}
}
@@ -194,7 +189,7 @@
}
}
-private val AlertDialogWidth = Modifier.preferredWidth(280.dp)
+private val AlertDialogWidth = Modifier.preferredWidth(312.dp)
private val ButtonsBoxModifier = Modifier.fillMaxWidth().padding(all = 8.dp)
private val ButtonsWidthSpace = Modifier.preferredWidth(8.dp)
private val ButtonsHeightSpace = Modifier.preferredHeight(12.dp)
@@ -205,4 +200,4 @@
private val TitlePadding = Modifier.padding(start = 24.dp, top = 24.dp, end = 24.dp, bottom = 0.dp)
// The height difference of the padding between a Dialog with a title and one without a title
private val NoTitleExtraHeight = Modifier.preferredHeight(2.dp)
-private val TextToButtonsHeight = Modifier.preferredHeight(28.dp)
\ No newline at end of file
+private val TextToButtonsHeight = Modifier.preferredHeight(28.dp)
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
index 660fbaa..7d8312c 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
@@ -16,10 +16,8 @@
package androidx.ui.material
import androidx.compose.Composable
-import androidx.ui.core.DensityAmbient
import androidx.ui.core.Modifier
import androidx.ui.core.semantics.semantics
-import androidx.ui.foundation.Box
import androidx.ui.foundation.ContentGravity
import androidx.ui.foundation.ProvideTextStyle
import androidx.ui.foundation.shape.corner.CircleShape
@@ -43,14 +41,11 @@
import androidx.ui.layout.padding
import androidx.ui.layout.preferredHeight
import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.relativePaddingFrom
-import androidx.ui.text.LastBaseline
import androidx.ui.unit.Density
import androidx.ui.unit.Dp
import androidx.ui.unit.PxBounds
import androidx.ui.unit.dp
import androidx.ui.unit.height
-import androidx.ui.unit.sp
import androidx.ui.unit.width
import kotlin.math.sqrt
@@ -58,8 +53,10 @@
* A TopAppBar displays information and actions relating to the current screen and is placed at the
* top of the screen.
*
- * This TopAppBar has slots for a title, navigation icon, and actions. Use the other TopAppBar
- * overload for a generic TopAppBar with no restriction on content.
+ * This TopAppBar has slots for a title, navigation icon, and actions. Note that the [title] slot
+ * is inset from the start according to spec - for custom use cases such as horizontally
+ * centering the title, use the other TopAppBar overload for a generic TopAppBar with no
+ * restriction on content.
*
* @sample androidx.ui.material.samples.SimpleTopAppBar
*
@@ -95,12 +92,12 @@
}
}
- Box(Modifier.fillMaxHeight().weight(1f).semantics(), gravity = ContentGravity.BottomStart) {
+ Row(
+ Modifier.fillMaxHeight().weight(1f).semantics(),
+ verticalGravity = ContentGravity.CenterVertically
+ ) {
ProvideTextStyle(value = MaterialTheme.typography.h6) {
- val baselineOffset = with(DensityAmbient.current) { TitleBaselineOffset.toDp() }
- Row(Modifier.relativePaddingFrom(LastBaseline, after = baselineOffset)) {
- ProvideEmphasis(emphasisLevels.high, title)
- }
+ ProvideEmphasis(emphasisLevels.high, title)
}
}
@@ -168,6 +165,7 @@
* should typically be the same shape used inside the [FloatingActionButton], when [BottomAppBar]
* and [FloatingActionButton] are being used together in [Scaffold]. This shape will be drawn with
* an offset around all sides. If null, where will be no cutout.
+ * @param elevation the elevation of this BottomAppBar.
* @param content the content of this BottomAppBar. The default layout here is a [Row],
* so content inside will be placed horizontally.
*/
@@ -177,6 +175,7 @@
backgroundColor: Color = MaterialTheme.colors.primarySurface,
contentColor: Color = contentColorFor(backgroundColor),
cutoutShape: Shape? = null,
+ elevation: Dp = BottomAppBarElevation,
content: @Composable RowScope.() -> Unit
) {
val scaffoldGeometry = ScaffoldGeometryAmbient.current
@@ -186,7 +185,7 @@
} else {
RectangleShape
}
- AppBar(backgroundColor, contentColor, BottomAppBarElevation, shape, modifier) {
+ AppBar(backgroundColor, contentColor, elevation, shape, modifier) {
// TODO: b/150609566 clarify emphasis for children
Row(
Modifier.fillMaxSize(),
@@ -463,8 +462,6 @@
// Start inset for the title when there is a navigation icon provided
private val TitleIconModifier = Modifier.fillMaxHeight()
.preferredWidth(72.dp - AppBarHorizontalPadding)
-// The baseline distance for the title from the bottom of the app bar
-private val TitleBaselineOffset = 20.sp
private val BottomAppBarElevation = 8.dp
// TODO: clarify elevation in surface mapping - spec says 0.dp but it appears to have an
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt b/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
index 1b94f32..c2d0d77 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
@@ -16,8 +16,9 @@
package androidx.ui.material
+import androidx.animation.VectorizedAnimationSpec
import androidx.animation.FastOutSlowInEasing
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.annotation.FloatRange
import androidx.compose.Composable
import androidx.compose.Providers
@@ -48,7 +49,6 @@
import androidx.ui.text.style.TextAlign
import androidx.ui.unit.Dp
import androidx.ui.unit.dp
-import androidx.ui.unit.max
import kotlin.math.max
import kotlin.math.roundToInt
@@ -181,7 +181,7 @@
) {
val animationProgress = animate(
target = if (selected) 1f else 0f,
- animBuilder = BottomNavigationAnimationBuilder
+ animSpec = BottomNavigationAnimationSpec
)
val color = lerp(inactiveColor, activeColor, animationProgress)
@@ -217,7 +217,7 @@
children = text
)
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val iconPlaceable = measurables.first { it.id == "icon" }.measure(constraints)
val textPlaceable = measurables.first { it.id == "text" }.measure(
@@ -321,13 +321,13 @@
}
/**
- * [AnimationBuilder] controlling the transition between unselected and selected
+ * [VectorizedAnimationSpec] controlling the transition between unselected and selected
* [BottomNavigationItem]s.
*/
-private val BottomNavigationAnimationBuilder = TweenBuilder<Float>().apply {
- duration = 300
+private val BottomNavigationAnimationSpec = TweenSpec<Float>(
+ durationMillis = 300,
easing = FastOutSlowInEasing
-}
+)
/**
* Height of a [BottomNavigation] component
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt b/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
index 927aa89..85eb316 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
@@ -19,7 +19,10 @@
import android.graphics.PathMeasure
import androidx.animation.FloatPropKey
import androidx.animation.TransitionSpec
+import androidx.animation.keyframes
+import androidx.animation.snap
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.Immutable
import androidx.compose.remember
@@ -131,7 +134,7 @@
state = state,
onClick = onClick,
enabled = enabled,
- indication = RippleIndication(bounded = false)
+ indication = RippleIndication(bounded = false, radius = CheckboxRippleRadius)
)
.padding(CheckboxDefaultPadding),
enabled = enabled,
@@ -311,9 +314,9 @@
ToggleableState.On to ToggleableState.Indeterminate,
ToggleableState.Indeterminate to ToggleableState.On
) {
- CheckCenterGravitationShiftFraction using tween {
- duration = CheckAnimationDuration
- }
+ CheckCenterGravitationShiftFraction using tween(
+ durationMillis = CheckAnimationDuration
+ )
}
transition(
ToggleableState.Indeterminate to ToggleableState.Off,
@@ -325,43 +328,44 @@
private fun TransitionSpec<ToggleableState>.boxTransitionToChecked() {
CheckCenterGravitationShiftFraction using snap()
- BoxBorderColor using tween {
- duration = BoxInDuration
- }
- BoxOpacityFraction using tween {
- duration = BoxInDuration
- }
- CheckOpacityFraction using tween {
- duration = BoxInDuration
- }
- CheckDrawFraction using tween {
- duration = CheckAnimationDuration
- }
+ BoxBorderColor using tween(
+ durationMillis = BoxInDuration
+ )
+ BoxOpacityFraction using tween(
+ durationMillis = BoxInDuration
+ )
+ CheckOpacityFraction using tween(
+ durationMillis = BoxInDuration
+ )
+ CheckDrawFraction using tween(
+ durationMillis = CheckAnimationDuration
+ )
}
private fun TransitionSpec<ToggleableState>.checkboxTransitionToUnchecked() {
- BoxBorderColor using tween {
- duration = BoxOutDuration
- }
- BoxOpacityFraction using tween {
- duration = BoxOutDuration
- }
- CheckOpacityFraction using tween {
- duration = BoxOutDuration
- }
+ BoxBorderColor using tween(
+ durationMillis = BoxOutDuration
+ )
+ BoxOpacityFraction using tween(
+ durationMillis = BoxOutDuration
+ )
+ CheckOpacityFraction using tween(
+ durationMillis = BoxOutDuration
+ )
// TODO: emulate delayed snap and replace when actual API is available b/158189074
CheckDrawFraction using keyframes {
- duration = BoxOutDuration
+ durationMillis = BoxOutDuration
1f at 0
1f at BoxOutDuration - 1
0f at BoxOutDuration
}
- CheckCenterGravitationShiftFraction using tween {
- duration = 1
- delay = BoxOutDuration - 1
- }
+ CheckCenterGravitationShiftFraction using tween(
+ durationMillis = 1,
+ delayMillis = BoxOutDuration - 1
+ )
}
+private val CheckboxRippleRadius = 24.dp
private val CheckboxDefaultPadding = 2.dp
private val CheckboxSize = 20.dp
private val StrokeWidth = 2.dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Color.kt b/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
index eae3e7c..b469e36 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
@@ -18,13 +18,13 @@
import androidx.compose.Ambient
import androidx.compose.Composable
-import androidx.compose.StructurallyEqual
import androidx.compose.mutableStateOf
import androidx.compose.Providers
import androidx.compose.getValue
import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.staticAmbientOf
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.foundation.contentColor
import androidx.ui.graphics.Color
import androidx.ui.graphics.useOrElse
@@ -256,19 +256,19 @@
isLight = colorPalette.isLight
)
- override var primary by mutableStateOf(primary, StructurallyEqual)
- override var primaryVariant by mutableStateOf(primaryVariant, StructurallyEqual)
- override var secondary by mutableStateOf(secondary, StructurallyEqual)
- override var secondaryVariant by mutableStateOf(secondaryVariant, StructurallyEqual)
- override var background by mutableStateOf(background, StructurallyEqual)
- override var surface by mutableStateOf(surface, StructurallyEqual)
- override var error by mutableStateOf(error, StructurallyEqual)
- override var onPrimary by mutableStateOf(onPrimary, StructurallyEqual)
- override var onSecondary by mutableStateOf(onSecondary, StructurallyEqual)
- override var onBackground by mutableStateOf(onBackground, StructurallyEqual)
- override var onSurface by mutableStateOf(onSurface, StructurallyEqual)
- override var onError by mutableStateOf(onError, StructurallyEqual)
- override var isLight by mutableStateOf(isLight, StructurallyEqual)
+ override var primary by mutableStateOf(primary, structuralEqualityPolicy())
+ override var primaryVariant by mutableStateOf(primaryVariant, structuralEqualityPolicy())
+ override var secondary by mutableStateOf(secondary, structuralEqualityPolicy())
+ override var secondaryVariant by mutableStateOf(secondaryVariant, structuralEqualityPolicy())
+ override var background by mutableStateOf(background, structuralEqualityPolicy())
+ override var surface by mutableStateOf(surface, structuralEqualityPolicy())
+ override var error by mutableStateOf(error, structuralEqualityPolicy())
+ override var onPrimary by mutableStateOf(onPrimary, structuralEqualityPolicy())
+ override var onSecondary by mutableStateOf(onSecondary, structuralEqualityPolicy())
+ override var onBackground by mutableStateOf(onBackground, structuralEqualityPolicy())
+ override var onSurface by mutableStateOf(onSurface, structuralEqualityPolicy())
+ override var onError by mutableStateOf(onError, structuralEqualityPolicy())
+ override var isLight by mutableStateOf(isLight, structuralEqualityPolicy())
}
/**
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt b/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
index 0338451..2d0e159 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
@@ -16,7 +16,7 @@
package androidx.ui.material
-import androidx.animation.PhysicsBuilder
+import androidx.animation.SpringSpec
import androidx.compose.Composable
import androidx.compose.State
import androidx.compose.state
@@ -104,7 +104,7 @@
state = drawerState,
onStateChange = onStateChange,
anchorsToState = anchors,
- animationBuilder = AnimationBuilder,
+ animationSpec = AnimationSpec,
dragDirection = DragDirection.Horizontal,
minValue = minValue,
maxValue = maxValue,
@@ -194,7 +194,7 @@
state = drawerState,
onStateChange = onStateChange,
anchorsToState = anchors,
- animationBuilder = AnimationBuilder,
+ animationSpec = AnimationSpec,
dragDirection = DragDirection.Vertical,
minValue = minValue,
maxValue = maxValue,
@@ -292,9 +292,6 @@
private const val DrawerStiffness = 1000f
-private val AnimationBuilder =
- PhysicsBuilder<Float>().apply {
- stiffness = DrawerStiffness
- }
+private val AnimationSpec = SpringSpec<Float>(stiffness = DrawerStiffness)
internal const val BottomDrawerOpenFraction = 0.5f
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
index c144b18..4e16de0 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
@@ -411,7 +411,7 @@
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
- Layout(content, modifier) { measurables, constraints, _ ->
+ Layout(content, modifier) { measurables, constraints ->
val childConstraints = constraints.copy(minHeight = 0, maxHeight = Constraints.Infinity)
val placeables = measurables.map { it.measure(childConstraints) }
@@ -453,7 +453,7 @@
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
- Layout(content, modifier) { measurables, constraints, _ ->
+ Layout(content, modifier) { measurables, constraints ->
val placeable = measurables[0].measure(constraints.copy(minHeight = 0))
val baseline = placeable[FirstBaseline]
val y: Int
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt b/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
index 7290df1..e0690d0 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
@@ -20,25 +20,28 @@
import androidx.animation.FloatPropKey
import androidx.animation.LinearOutSlowInEasing
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.Immutable
import androidx.compose.getValue
+import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.state
import androidx.ui.animation.Transition
import androidx.ui.core.ContextAmbient
import androidx.ui.core.DensityAmbient
+import androidx.ui.core.DrawLayerModifier
import androidx.ui.core.LayoutDirection
import androidx.ui.core.Modifier
import androidx.ui.core.Popup
import androidx.ui.core.PopupPositionProvider
+import androidx.ui.core.TransformOrigin
import androidx.ui.unit.Position
-import androidx.ui.core.drawLayer
import androidx.ui.foundation.Box
import androidx.ui.foundation.ContentGravity
import androidx.ui.foundation.ProvideTextStyle
+import androidx.ui.foundation.VerticalScroller
import androidx.ui.foundation.clickable
-import androidx.ui.layout.Column
import androidx.ui.layout.ColumnScope
import androidx.ui.layout.ExperimentalLayout
import androidx.ui.layout.IntrinsicSize
@@ -50,7 +53,15 @@
import androidx.ui.unit.Density
import androidx.ui.unit.IntOffset
import androidx.ui.unit.IntSize
+import androidx.ui.unit.PxBounds
import androidx.ui.unit.dp
+import androidx.ui.unit.height
+import androidx.ui.unit.toOffset
+import androidx.ui.unit.toSize
+import androidx.ui.unit.width
+import kotlin.math.max
+import kotlin.math.min
+
/**
* A Material Design [dropdown menu](https://material.io/components/menus#dropdown-menu).
*
@@ -94,11 +105,15 @@
toggle()
if (visibleMenu) {
+ var transformOrigin by state { TransformOrigin.Center }
+ val density = DensityAmbient.current
val popupPositionProvider = DropdownMenuPositionProvider(
dropdownOffset,
- DensityAmbient.current,
+ density,
ContextAmbient.current.resources.displayMetrics
- )
+ ) { parentBounds, menuBounds ->
+ transformOrigin = calculateTransformOrigin(parentBounds, menuBounds, density)
+ }
Popup(
isFocusable = true,
@@ -113,18 +128,25 @@
visibleMenu = it
}
) { state ->
- val scale = state[Scale]
- val alpha = state[Alpha]
+ val drawLayer = remember {
+ MenuDrawLayerModifier(
+ { state[Scale] },
+ { state[Alpha] },
+ { transformOrigin }
+ )
+ }
Card(
- modifier = Modifier
- .drawLayer(scaleX = scale, scaleY = scale, alpha = alpha, clip = true)
- // Padding to account for the elevation, otherwise it is clipped.
- .padding(MenuElevation),
+ modifier = drawLayer
+ // MenuVerticalMargin corresponds to the one Material row margin
+ // required between the menu and the display edges. The
+ // MenuElevationInset is needed for drawing the elevation,
+ // otherwise it is clipped. TODO(popam): remove it after b/156890315
+ .padding(MenuElevationInset, MenuVerticalMargin),
elevation = MenuElevation
) {
@OptIn(ExperimentalLayout::class)
- Column(
- dropdownModifier
+ VerticalScroller(
+ modifier = dropdownModifier
.padding(vertical = DropdownMenuVerticalPadding)
.preferredWidth(IntrinsicSize.Max),
children = dropdownContent
@@ -181,18 +203,20 @@
}
// Size constants.
-internal val MenuElevation = 8.dp
-internal val DropdownMenuHorizontalPadding = 16.dp
+private val MenuElevation = 8.dp
+internal val MenuElevationInset = 32.dp
+private val MenuVerticalMargin = 32.dp
+private val DropdownMenuHorizontalPadding = 16.dp
internal val DropdownMenuVerticalPadding = 8.dp
-internal val DropdownMenuItemDefaultMinWidth = 112.dp
-internal val DropdownMenuItemDefaultMaxWidth = 280.dp
-internal val DropdownMenuItemDefaultMinHeight = 48.dp
+private val DropdownMenuItemDefaultMinWidth = 112.dp
+private val DropdownMenuItemDefaultMaxWidth = 280.dp
+private val DropdownMenuItemDefaultMinHeight = 48.dp
// Menu open/close animation.
private val Scale = FloatPropKey()
private val Alpha = FloatPropKey()
-internal val InTransitionDuration = 120
-internal val OutTransitionDuration = 75
+internal const val InTransitionDuration = 120
+internal const val OutTransitionDuration = 75
private val DropdownMenuOpenCloseTransition = transitionDefinition {
state(false) {
@@ -207,24 +231,71 @@
}
transition(false, true) {
// Dismissed to expanded.
- Scale using tween {
- duration = InTransitionDuration
+ Scale using tween(
+ durationMillis = InTransitionDuration,
easing = LinearOutSlowInEasing
- }
- Alpha using tween {
- duration = 30
- }
+ )
+ Alpha using tween(
+ durationMillis = 30
+ )
}
transition(true, false) {
// Expanded to dismissed.
- Scale using tween {
- duration = 1
- delay = OutTransitionDuration - 1
- }
- Alpha using tween {
- duration = OutTransitionDuration
+ Scale using tween(
+ durationMillis = 1,
+ delayMillis = OutTransitionDuration - 1
+ )
+ Alpha using tween(
+ durationMillis = OutTransitionDuration
+ )
+ }
+}
+
+private class MenuDrawLayerModifier(
+ val scaleProvider: () -> Float,
+ val alphaProvider: () -> Float,
+ val transformOriginProvider: () -> TransformOrigin
+) : DrawLayerModifier {
+ override val scaleX: Float get() = scaleProvider()
+ override val scaleY: Float get() = scaleProvider()
+ override val alpha: Float get() = alphaProvider()
+ override val transformOrigin: TransformOrigin get() = transformOriginProvider()
+ override val clip: Boolean = true
+}
+
+private fun calculateTransformOrigin(
+ parentBounds: PxBounds,
+ menuBounds: PxBounds,
+ density: Density
+): TransformOrigin {
+ val inset = with(density) { MenuElevationInset.toPx() }
+ val realMenuBounds = PxBounds(
+ menuBounds.left + inset,
+ menuBounds.top + inset,
+ menuBounds.right - inset,
+ menuBounds.bottom - inset
+ )
+ val pivotX = when {
+ realMenuBounds.left >= parentBounds.right -> 0f
+ realMenuBounds.right <= parentBounds.left -> 1f
+ else -> {
+ val intersectionCenter =
+ (max(parentBounds.left, realMenuBounds.left) +
+ min(parentBounds.right, realMenuBounds.right)) / 2
+ (intersectionCenter + inset - menuBounds.left) / menuBounds.width
}
}
+ val pivotY = when {
+ realMenuBounds.top >= parentBounds.bottom -> 0f
+ realMenuBounds.bottom <= parentBounds.top -> 1f
+ else -> {
+ val intersectionCenter =
+ (max(parentBounds.top, realMenuBounds.top) +
+ min(parentBounds.bottom, realMenuBounds.bottom)) / 2
+ (intersectionCenter + inset - menuBounds.top) / menuBounds.height
+ }
+ }
+ return TransformOrigin(pivotX, pivotY)
}
// Menu positioning.
@@ -237,7 +308,8 @@
internal data class DropdownMenuPositionProvider(
val contentOffset: Position,
val density: Density,
- val displayMetrics: DisplayMetrics
+ val displayMetrics: DisplayMetrics,
+ val onPositionCalculated: (PxBounds, PxBounds) -> Unit = { _, _ -> }
) : PopupPositionProvider {
override fun calculatePosition(
parentLayoutPosition: IntOffset,
@@ -245,8 +317,10 @@
layoutDirection: LayoutDirection,
popupSize: IntSize
): IntOffset {
+ // The min margin above and below the menu, relative to the screen.
+ val verticalMargin = with(density) { MenuVerticalMargin.toIntPx() }
// The padding inset that accommodates elevation, needs to be taken into account.
- val inset = with(density) { MenuElevation.toIntPx() }
+ val inset = with(density) { MenuElevationInset.toIntPx() }
val realPopupWidth = popupSize.width - inset * 2
val realPopupHeight = popupSize.height - inset * 2
val contentOffsetX = with(density) { contentOffset.x.toIntPx() }
@@ -271,11 +345,22 @@
val toBottom = parentBottom + contentOffsetY
val toTop = parentLayoutPosition.y - contentOffsetY - realPopupHeight
val toCenter = parentLayoutPosition.y - realPopupHeight / 2
- val toDisplayBottom = displayMetrics.heightPixels - realPopupHeight
+ val toDisplayBottom = displayMetrics.heightPixels - realPopupHeight - verticalMargin
val y = sequenceOf(toBottom, toTop, toCenter, toDisplayBottom).firstOrNull {
- it >= 0 && it + realPopupHeight <= displayMetrics.heightPixels
+ it >= verticalMargin &&
+ it + realPopupHeight <= displayMetrics.heightPixels - verticalMargin
} ?: toTop
+ // TODO(popam, b/159596546): we should probably have androidx.ui.unit.IntBounds instead
+ onPositionCalculated(
+ PxBounds(parentLayoutPosition.toOffset(), parentLayoutSize.toSize()),
+ PxBounds(
+ x.toFloat() - inset,
+ y.toFloat() - inset,
+ x.toFloat() + inset + realPopupWidth,
+ y.toFloat() + inset + realPopupHeight
+ )
+ )
return IntOffset(x - inset, y - inset)
}
}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt b/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
index 03fd0db..79381dd 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
@@ -16,12 +16,15 @@
package androidx.ui.material
+import androidx.animation.AnimationConstants.Infinite
import androidx.animation.CubicBezierEasing
import androidx.animation.FloatPropKey
-import androidx.animation.Infinite
import androidx.animation.IntPropKey
import androidx.animation.LinearEasing
+import androidx.animation.keyframes
+import androidx.animation.repeatable
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.annotation.FloatRange
import androidx.compose.Composable
import androidx.ui.animation.Transition
@@ -347,38 +350,38 @@
}
transition(fromState = 0, toState = 1) {
- FirstLineHeadProp using repeatable {
- iterations = Infinite
+ FirstLineHeadProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = LinearAnimationDuration
+ durationMillis = LinearAnimationDuration
0f at FirstLineHeadDelay with FirstLineHeadEasing
1f at FirstLineHeadDuration + FirstLineHeadDelay
}
- }
- FirstLineTailProp using repeatable {
- iterations = Infinite
+ )
+ FirstLineTailProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = LinearAnimationDuration
+ durationMillis = LinearAnimationDuration
0f at FirstLineTailDelay with FirstLineTailEasing
1f at FirstLineTailDuration + FirstLineTailDelay
}
- }
- SecondLineHeadProp using repeatable {
- iterations = Infinite
+ )
+ SecondLineHeadProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = LinearAnimationDuration
+ durationMillis = LinearAnimationDuration
0f at SecondLineHeadDelay with SecondLineHeadEasing
1f at SecondLineHeadDuration + SecondLineHeadDelay
}
- }
- SecondLineTailProp using repeatable {
- iterations = Infinite
+ )
+ SecondLineTailProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = LinearAnimationDuration
+ durationMillis = LinearAnimationDuration
0f at SecondLineTailDelay with SecondLineTailEasing
1f at SecondLineTailDuration + SecondLineTailDelay
}
- }
+ )
}
}
@@ -436,35 +439,35 @@
}
transition(fromState = 0, toState = 1) {
- IterationProp using repeatable {
- iterations = Infinite
- animation = tween {
- duration = RotationDuration * RotationsPerCycle
+ IterationProp using repeatable(
+ iterations = Infinite,
+ animation = tween(
+ durationMillis = RotationDuration * RotationsPerCycle,
easing = LinearEasing
- }
- }
- BaseRotationProp using repeatable {
- iterations = Infinite
- animation = tween {
- duration = RotationDuration
+ )
+ )
+ BaseRotationProp using repeatable(
+ iterations = Infinite,
+ animation = tween(
+ durationMillis = RotationDuration,
easing = LinearEasing
- }
- }
- HeadRotationProp using repeatable {
- iterations = Infinite
+ )
+ )
+ HeadRotationProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = HeadAndTailAnimationDuration + HeadAndTailDelayDuration
+ durationMillis = HeadAndTailAnimationDuration + HeadAndTailDelayDuration
0f at 0 with CircularEasing
JumpRotationAngle at HeadAndTailAnimationDuration
}
- }
- TailRotationProp using repeatable {
- iterations = Infinite
+ )
+ TailRotationProp using repeatable(
+ iterations = Infinite,
animation = keyframes {
- duration = HeadAndTailAnimationDuration + HeadAndTailDelayDuration
+ durationMillis = HeadAndTailAnimationDuration + HeadAndTailDelayDuration
0f at HeadAndTailDelayDuration with CircularEasing
- JumpRotationAngle at duration
+ JumpRotationAngle at durationMillis
}
- }
+ )
}
}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
index 41a3ffe..03b2950 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
@@ -17,6 +17,7 @@
package androidx.ui.material
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.Stable
import androidx.compose.remember
@@ -339,7 +340,7 @@
selected = selected,
onClick = onClick,
enabled = enabled,
- indication = RippleIndication(bounded = false)
+ indication = RippleIndication(bounded = false, radius = RadioButtonRippleRadius)
)
.wrapContentSize(Alignment.Center)
.padding(RadioButtonPadding)
@@ -400,15 +401,16 @@
this[ColorProp] = selectedColor
}
transition {
- ColorProp using tween {
- duration = RadioAnimationDuration
- }
- DotRadiusProp using tween {
- duration = RadioAnimationDuration
- }
+ ColorProp using tween(
+ durationMillis = RadioAnimationDuration
+ )
+ DotRadiusProp using tween(
+ durationMillis = RadioAnimationDuration
+ )
}
}
+private val RadioButtonRippleRadius = 24.dp
private val RadioButtonPadding = 2.dp
private val RadioButtonSize = 20.dp
private val RadioRadius = RadioButtonSize / 2
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt b/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
index bf358a4..a6f6076 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
@@ -19,13 +19,13 @@
import androidx.compose.Composable
import androidx.compose.Providers
import androidx.compose.Stable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.onDispose
import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.staticAmbientOf
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.Alignment
import androidx.ui.core.DensityAmbient
import androidx.ui.core.Layout
@@ -102,9 +102,9 @@
@Stable
internal class ScaffoldGeometry {
- var topBarBounds by mutableStateOf<PxBounds?>(null, StructurallyEqual)
- var bottomBarBounds by mutableStateOf<PxBounds?>(null, StructurallyEqual)
- var fabBounds by mutableStateOf<PxBounds?>(null, StructurallyEqual)
+ var topBarBounds by mutableStateOf<PxBounds?>(null, structuralEqualityPolicy())
+ var bottomBarBounds by mutableStateOf<PxBounds?>(null, structuralEqualityPolicy())
+ var fabBounds by mutableStateOf<PxBounds?>(null, structuralEqualityPolicy())
var isFabDocked by mutableStateOf(false)
}
@@ -275,7 +275,7 @@
children = {
bottomBar()
fab()
- }) { measurables, constraints, _ ->
+ }) { measurables, constraints ->
val (appBarPlaceable, fabPlaceable) = measurables.map { it.measure(constraints) }
val layoutWidth = appBarPlaceable.width
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt b/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
index 8425445..95ee9da 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
@@ -21,7 +21,7 @@
import androidx.animation.AnimationClockObservable
import androidx.animation.AnimationEndReason
import androidx.animation.TargetAnimation
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.annotation.IntRange
import androidx.compose.Composable
import androidx.compose.remember
@@ -469,4 +469,4 @@
// Internal to be referred to in tests
internal val InactiveTrackColorAlpha = 0.24f
private val TickColorAlpha = 0.54f
-private val SliderToTickAnimation = TweenBuilder<Float>().apply { duration = 100 }
+private val SliderToTickAnimation = TweenSpec<Float>(durationMillis = 100)
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt b/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
index ee4921c..1772eaa 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
@@ -100,7 +100,7 @@
Layout(
text,
modifier = Modifier.padding(start = HorizontalSpacing, end = HorizontalSpacing)
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
require(measurables.size == 1) {
"text for Snackbar expected to have exactly only one child"
}
@@ -155,7 +155,7 @@
Box(Modifier.layoutId(actionTag), children = action)
},
modifier = Modifier.padding(start = HorizontalSpacing, end = HorizontalSpacingButtonSide)
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val buttonPlaceable = measurables.first { it.id == actionTag }.measure(constraints)
val textMaxWidth =
(constraints.maxWidth - buttonPlaceable.width - TextEndExtraSpacing.toIntPx())
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Surface.kt b/ui/ui-material/src/main/java/androidx/ui/material/Surface.kt
index ddb46bb..1c471f4 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Surface.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Surface.kt
@@ -119,7 +119,7 @@
// TODO("Andrey: Should be replaced with some basic layout implementation when we have it")
@Composable
private fun SurfaceLayout(modifier: Modifier = Modifier, children: @Composable () -> Unit) {
- Layout(children, modifier) { measurables, constraints, _ ->
+ Layout(children, modifier) { measurables, constraints ->
if (measurables.size > 1) {
throw IllegalStateException("Surface can have only one direct measurable child!")
}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt b/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
index b8a2500..a1b4cd1 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
@@ -16,23 +16,38 @@
package androidx.ui.material
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.compose.Composable
import androidx.compose.State
+import androidx.compose.remember
import androidx.compose.state
+import androidx.ui.core.Alignment
import androidx.ui.core.DensityAmbient
import androidx.ui.core.Modifier
import androidx.ui.core.semantics.semantics
-import androidx.ui.foundation.Box
import androidx.ui.foundation.Canvas
+import androidx.ui.foundation.Interaction
+import androidx.ui.foundation.InteractionState
import androidx.ui.foundation.gestures.DragDirection
+import androidx.ui.foundation.indication
import androidx.ui.foundation.selection.toggleable
+import androidx.ui.foundation.shape.corner.CircleShape
import androidx.ui.geometry.Offset
import androidx.ui.graphics.Color
import androidx.ui.graphics.StrokeCap
+import androidx.ui.graphics.compositeOver
import androidx.ui.graphics.drawscope.DrawScope
+import androidx.ui.layout.Stack
+import androidx.ui.layout.StackScope
+import androidx.ui.layout.offsetPx
import androidx.ui.layout.padding
import androidx.ui.layout.preferredSize
+import androidx.ui.material.SwitchDefaults.disabledUncheckedThumbColor
+import androidx.ui.material.SwitchDefaults.disabledUncheckedTrackColor
+import androidx.ui.material.SwitchDefaults.makeDisabledCheckedThumbColor
+import androidx.ui.material.SwitchDefaults.makeDisabledCheckedTrackColor
+import androidx.ui.material.SwitchDefaults.uncheckedThumbColor
+import androidx.ui.material.SwitchDefaults.uncheckedTrackColor
import androidx.ui.material.internal.stateDraggable
import androidx.ui.material.ripple.RippleIndication
import androidx.ui.unit.dp
@@ -47,7 +62,7 @@
* therefore the change of checked state is requested.
* @param modifier Modifier to be applied to the switch layout
* @param enabled whether or not components is enabled and can be clicked to request state change
- * @param color active color for Switch
+ * @param color main color of the track and trumb when the Switch is checked
*/
@Composable
fun Switch(
@@ -60,52 +75,75 @@
val minBound = 0f
val maxBound = with(DensityAmbient.current) { ThumbPathLength.toPx() }
val thumbPosition = state { if (checked) maxBound else minBound }
- Box(
+ val interactionState = remember { InteractionState() }
+ Stack(
modifier
.semantics(mergeAllDescendants = true)
.toggleable(
value = checked,
onValueChange = onCheckedChange,
enabled = enabled,
- indication = RippleIndication(bounded = false)
+ interactionState = interactionState,
+ indication = null
)
.stateDraggable(
state = checked,
onStateChange = onCheckedChange,
anchorsToState = listOf(minBound to false, maxBound to true),
- animationBuilder = AnimationBuilder,
+ animationSpec = AnimationSpec,
dragDirection = DragDirection.Horizontal,
minValue = minBound,
maxValue = maxBound,
+ enabled = enabled,
+ interactionState = interactionState,
onNewValue = { thumbPosition.value = it }
)
.padding(DefaultSwitchPadding)
) {
- DrawSwitch(
+ SwitchImpl(
checked = checked,
- checkedThumbColor = color,
- thumbValue = thumbPosition
+ enabled = enabled,
+ checkedColor = color,
+ thumbValue = thumbPosition,
+ interactionState = interactionState
)
}
}
@Composable
-private fun DrawSwitch(
+private fun StackScope.SwitchImpl(
checked: Boolean,
- checkedThumbColor: Color,
- thumbValue: State<Float>
+ enabled: Boolean,
+ checkedColor: Color,
+ thumbValue: State<Float>,
+ interactionState: InteractionState
) {
- val thumbColor = if (checked) checkedThumbColor else MaterialTheme.colors.surface
- val trackColor = if (checked) {
- checkedThumbColor.copy(alpha = CheckedTrackOpacity)
- } else {
- MaterialTheme.colors.onSurface.copy(alpha = UncheckedTrackOpacity)
- }
-
- Canvas(Modifier.preferredSize(SwitchWidth, SwitchHeight)) {
+ val hasInteraction =
+ Interaction.Pressed in interactionState || Interaction.Dragged in interactionState
+ val elevation =
+ if (hasInteraction) {
+ SwitchDefaults.ThumbPressedElevation
+ } else {
+ SwitchDefaults.ThumbDefaultElevation
+ }
+ val trackColor = SwitchDefaults.resolveTrackColor(checked, enabled, checkedColor)
+ val thumbColor = SwitchDefaults.resolveThumbColor(checked, enabled, checkedColor)
+ Canvas(Modifier.gravity(Alignment.Center).preferredSize(SwitchWidth, SwitchHeight)) {
drawTrack(trackColor, TrackWidth.toPx(), TrackStrokeWidth.toPx())
- drawThumb(thumbValue.value, ThumbDiameter.toPx(), thumbColor)
}
+ Surface(
+ shape = CircleShape,
+ color = thumbColor,
+ elevation = elevation,
+ modifier = Modifier
+ .gravity(Alignment.CenterStart)
+ .offsetPx(x = thumbValue)
+ .indication(
+ interactionState = interactionState,
+ indication = RippleIndication(radius = ThumbRippleRadius, bounded = false)
+ )
+ .preferredSize(ThumbDiameter)
+ ) {}
}
private fun DrawScope.drawTrack(trackColor: Color, trackWidth: Float, strokeWidth: Float) {
@@ -119,26 +157,74 @@
)
}
-private fun DrawScope.drawThumb(position: Float, thumbDiameter: Float, thumbColor: Color) {
- val thumbRadius = thumbDiameter / 2
- val x = position + thumbRadius
- drawCircle(thumbColor, thumbRadius, Offset(x, center.y))
-}
-
-// Internal to be referred to in tests
-internal const val CheckedTrackOpacity = 0.54f
-internal const val UncheckedTrackOpacity = 0.38f
-
-// Internal to be referred to in tests
internal val TrackWidth = 34.dp
internal val TrackStrokeWidth = 14.dp
-
internal val ThumbDiameter = 20.dp
-// TODO(malkov): clarify this padding for Switch
+private val ThumbRippleRadius = 24.dp
+
private val DefaultSwitchPadding = 2.dp
private val SwitchWidth = TrackWidth
private val SwitchHeight = ThumbDiameter
private val ThumbPathLength = TrackWidth - ThumbDiameter
-private val AnimationBuilder = TweenBuilder<Float>().apply { duration = 100 }
+private val AnimationSpec = TweenSpec<Float>(durationMillis = 100)
+
+internal object SwitchDefaults {
+
+ const val CheckedTrackOpacity = 0.54f
+ const val UncheckedTrackOpacity = 0.38f
+
+ val ThumbDefaultElevation = 1.dp
+ val ThumbPressedElevation = 6.dp
+
+ @Composable
+ private val uncheckedTrackColor
+ get() = MaterialTheme.colors.onSurface
+
+ @Composable
+ private fun makeDisabledCheckedTrackColor(checkedColor: Color) = EmphasisAmbient.current
+ .disabled
+ .applyEmphasis(checkedColor)
+ .compositeOver(MaterialTheme.colors.surface)
+
+ @Composable
+ private val disabledUncheckedTrackColor
+ get() = EmphasisAmbient.current.disabled.applyEmphasis(MaterialTheme.colors.onSurface)
+ .compositeOver(MaterialTheme.colors.surface)
+
+ @Composable
+ private val uncheckedThumbColor
+ get() = MaterialTheme.colors.surface
+
+ @Composable
+ private fun makeDisabledCheckedThumbColor(checkedColor: Color) = EmphasisAmbient.current
+ .disabled
+ .applyEmphasis(checkedColor)
+ .compositeOver(MaterialTheme.colors.surface)
+
+ @Composable
+ private val disabledUncheckedThumbColor
+ get() = EmphasisAmbient.current.disabled.applyEmphasis(MaterialTheme.colors.surface)
+ .compositeOver(MaterialTheme.colors.surface)
+
+ @Composable
+ internal fun resolveTrackColor(checked: Boolean, enabled: Boolean, checkedColor: Color): Color {
+ return if (checked) {
+ val color = if (enabled) checkedColor else makeDisabledCheckedTrackColor(checkedColor)
+ color.copy(alpha = CheckedTrackOpacity)
+ } else {
+ val color = if (enabled) uncheckedTrackColor else disabledUncheckedTrackColor
+ color.copy(alpha = UncheckedTrackOpacity)
+ }
+ }
+
+ @Composable
+ internal fun resolveThumbColor(checked: Boolean, enabled: Boolean, checkedColor: Color): Color {
+ return if (checked) {
+ if (enabled) checkedColor else makeDisabledCheckedThumbColor(checkedColor)
+ } else {
+ if (enabled) uncheckedThumbColor else disabledUncheckedThumbColor
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
index 47cb534..ded28c6 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
@@ -19,6 +19,7 @@
import androidx.animation.FastOutSlowInEasing
import androidx.animation.LinearEasing
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.Immutable
import androidx.compose.Providers
@@ -251,7 +252,7 @@
Box(Modifier.layoutId(indicatorTag), children = indicator)
Box(Modifier.layoutId(dividerTag), children = divider)
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val tabPlaceables = mutableListOf<Pair<Placeable, Int>>()
val minTabWidth = ScrollableTabRowMinimumTabWidth.toIntPx()
@@ -453,10 +454,10 @@
}
transition {
- IndicatorOffset using tween {
- duration = 250
+ IndicatorOffset using tween(
+ durationMillis = 250,
easing = FastOutSlowInEasing
- }
+ )
}
}
}
@@ -561,18 +562,18 @@
}
transition(toState = false, fromState = true) {
- TabTintColor using tween {
- duration = TabFadeInAnimationDuration
- delay = TabFadeInAnimationDelay
+ TabTintColor using tween(
+ durationMillis = TabFadeInAnimationDuration,
+ delayMillis = TabFadeInAnimationDelay,
easing = LinearEasing
- }
+ )
}
transition(fromState = true, toState = false) {
- TabTintColor using tween {
- duration = TabFadeOutAnimationDuration
+ TabTintColor using tween(
+ durationMillis = TabFadeOutAnimationDuration,
easing = LinearEasing
- }
+ )
}
}
}
@@ -601,7 +602,7 @@
)
Box(Modifier.layoutId("icon"), children = icon)
}
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val textPlaceable = measurables.first { it.id == "text" }.measure(
// Measure with loose constraints for height as we don't want the text to take up more
// space than it needs
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt b/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
index 323d931..1e726ed 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
@@ -18,19 +18,19 @@
import androidx.animation.FloatPropKey
import androidx.animation.TransitionSpec
-import androidx.animation.TweenBuilder
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.annotation.VisibleForTesting
import androidx.compose.Composable
import androidx.compose.Providers
import androidx.compose.Stable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.state
import androidx.compose.stateFor
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.animation.ColorPropKey
import androidx.ui.animation.DpPropKey
import androidx.ui.animation.Transition
@@ -943,7 +943,7 @@
enabled = scrollerPosition.maximum != 0f
),
children = textField,
- measureBlock = { measurables, constraints, _ ->
+ measureBlock = { measurables, constraints ->
val childConstraints = constraints.copy(maxHeight = Constraints.Infinity)
val placeable = measurables.first().measure(childConstraints)
val height = min(placeable.height, constraints.maxHeight)
@@ -963,8 +963,8 @@
@VisibleForTesting
@Stable
internal class TextFieldScrollerPosition(private val initial: Float = 0f) {
- var current by mutableStateOf(initial, StructurallyEqual)
- var maximum by mutableStateOf(Float.POSITIVE_INFINITY, StructurallyEqual)
+ var current by mutableStateOf(initial, structuralEqualityPolicy())
+ var maximum by mutableStateOf(Float.POSITIVE_INFINITY, structuralEqualityPolicy())
companion object {
val Saver = Saver<TextFieldScrollerPosition, Float>(
@@ -1020,7 +1020,7 @@
textField(Modifier.layoutId(TextFieldId))
},
modifier = modifier
- ) { measurables, constraints, _ ->
+ ) { measurables, constraints ->
val placeholderPlaceable =
measurables.find { it.id == PlaceholderId }?.measure(constraints)
@@ -1105,7 +1105,7 @@
textField()
},
modifier = modifier
- ) { measurables, incomingConstraints, _ ->
+ ) { measurables, incomingConstraints ->
val constraints =
incomingConstraints.copy(minWidth = 0, minHeight = 0)
var occupiedSpace = 0
@@ -1250,7 +1250,7 @@
Box(modifier = Modifier.layoutId(LabelId), children = label)
},
modifier = modifier
- ) { measurables, incomingConstraints, _ ->
+ ) { measurables, incomingConstraints ->
// used to calculate the constraints for measuring elements that will be placed in a row
var occupiedSpaceHorizontally = 0
val bottomPadding = TextFieldPadding.toIntPx()
@@ -1637,16 +1637,14 @@
}
private fun TransitionSpec<InputPhase>.indicatorTransition() {
- IndicatorColorProp using tweenAnimation()
- IndicatorWidthProp using tweenAnimation()
+ IndicatorColorProp using tween(durationMillis = AnimationDuration)
+ IndicatorWidthProp using tween(durationMillis = AnimationDuration)
}
private fun TransitionSpec<InputPhase>.labelTransition() {
- LabelColorProp using tweenAnimation()
- LabelProgressProp using tweenAnimation()
+ LabelColorProp using tween(durationMillis = AnimationDuration)
+ LabelProgressProp using tween(durationMillis = AnimationDuration)
}
-
- private fun <T> tweenAnimation() = TweenBuilder<T>().apply { duration = AnimationDuration }
}
/**
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt b/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
index 11b3813..e9eb49b 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
@@ -17,9 +17,9 @@
package androidx.ui.material.internal
import androidx.animation.AnimatedFloat
-import androidx.animation.AnimationBuilder
import androidx.animation.AnimationClockObservable
import androidx.animation.AnimationEndReason
+import androidx.animation.AnimationSpec
import androidx.animation.Spring
import androidx.compose.onCommit
import androidx.compose.remember
@@ -53,7 +53,7 @@
* @param state current state to represent Float value with
* @param onStateChange callback to update call site's state
* @param anchorsToState pairs of anchors to states to map anchors to state and vise versa
- * @param animationBuilder animation which will be used for animations
+ * @param animationSpec animation which will be used for animations
* @param dragDirection direction in which drag should be happening.
* Either [DragDirection.Vertical] or [DragDirection.Horizontal]
* @param enabled whether or not this Draggable is enabled and should consume events
@@ -66,7 +66,7 @@
state: T,
onStateChange: (T) -> Unit,
anchorsToState: List<Pair<Float, T>>,
- animationBuilder: AnimationBuilder<Float>,
+ animationSpec: AnimationSpec<Float>,
dragDirection: DragDirection,
enabled: Boolean = true,
minValue: Float = Float.MIN_VALUE,
@@ -79,7 +79,7 @@
val anchors = remember(anchorsToState) { anchorsToState.map { it.first } }
val currentValue = anchorsToState.fastFirstOrNull { it.second == state }!!.first
val flingConfig =
- AnchorsFlingConfig(anchors, animationBuilder, onAnimationEnd = { reason, finalValue, _ ->
+ AnchorsFlingConfig(anchors, animationSpec, onAnimationEnd = { reason, finalValue, _ ->
if (reason != AnimationEndReason.Interrupted) {
val newState = anchorsToState.firstOrNull { it.first == finalValue }?.second
if (newState != null && newState != state) {
@@ -99,7 +99,7 @@
// This state is to force this component to be recomposed and trigger onCommit below
// This is needed to stay in sync with drag state that caller side holds
onCommit(currentValue, forceAnimationCheck.value) {
- position.animateTo(currentValue, animationBuilder)
+ position.animateTo(currentValue, animationSpec)
}
Modifier.draggable(
dragDirection = dragDirection,
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ripple/Ripple.kt b/ui/ui-material/src/main/java/androidx/ui/material/ripple/Ripple.kt
index 11f3a96..be09870 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ripple/Ripple.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ripple/Ripple.kt
@@ -20,12 +20,12 @@
import androidx.animation.AnimationClockObservable
import androidx.compose.CompositionLifecycleObserver
-import androidx.compose.StructurallyEqual
-import androidx.compose.frames.modelListOf
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.mutableStateListOf
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.animation.asDisposableClock
import androidx.ui.animation.transitionsEnabled
import androidx.ui.core.AnimationClockAmbient
@@ -101,10 +101,10 @@
private class RippleModifier : DrawModifier, LayoutModifier, CompositionLifecycleObserver {
- var color: Color by mutableStateOf(Color.Transparent, StructurallyEqual)
+ var color: Color by mutableStateOf(Color.Transparent, structuralEqualityPolicy())
private var size: IntSize = IntSize(0, 0)
- private var effects = modelListOf<RippleAnimation>()
+ private var effects = mutableStateListOf<RippleAnimation>()
private var currentEffect: RippleAnimation? = null
override fun MeasureScope.measure(
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleAnimation.kt b/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleAnimation.kt
index 7d23d22..e688b0f 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleAnimation.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleAnimation.kt
@@ -22,19 +22,19 @@
import androidx.animation.InterruptionHandling
import androidx.animation.LinearEasing
import androidx.animation.TransitionAnimation
-import androidx.animation.TweenBuilder
import androidx.animation.createAnimation
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.setValue
-import androidx.ui.animation.PxPositionPropKey
+import androidx.ui.animation.OffsetPropKey
+import androidx.ui.geometry.Offset
+import androidx.ui.geometry.Size
import androidx.ui.graphics.Color
import androidx.ui.graphics.drawscope.DrawScope
import androidx.ui.graphics.drawscope.clipRect
import androidx.ui.unit.Density
-import androidx.ui.geometry.Offset
-import androidx.ui.geometry.Size
import androidx.ui.unit.dp
import androidx.ui.unit.inMilliseconds
import androidx.ui.unit.milliseconds
@@ -151,7 +151,7 @@
val Alpha = FloatPropKey()
val Radius = FloatPropKey()
- val Center = PxPositionPropKey()
+ val Center = OffsetPropKey()
fun definition(
startRadius: Float,
@@ -176,29 +176,31 @@
this[Center] = endCenter
}
transition(State.Initial to State.Revealed) {
- Alpha using tween {
- duration = FadeInDuration.inMilliseconds().toInt()
+ Alpha using tween(
+ durationMillis = FadeInDuration.inMilliseconds().toInt(),
easing = LinearEasing
- }
- Radius using tween {
- duration = RadiusDuration.inMilliseconds().toInt()
+ )
+ Radius using tween(
+ durationMillis = RadiusDuration.inMilliseconds().toInt(),
easing = FastOutSlowInEasing
- }
- Center using tween {
- duration = RadiusDuration.inMilliseconds().toInt()
+ )
+ Center using tween(
+ durationMillis = RadiusDuration.inMilliseconds().toInt(),
easing = LinearEasing
- }
+ )
// we need to always finish the radius animation before starting fading out
interruptionHandling = InterruptionHandling.UNINTERRUPTIBLE
}
transition(State.Revealed to State.Finished) {
- fun <T> TweenBuilder<T>.toFinished() {
- duration = FadeOutDuration.inMilliseconds().toInt()
- easing = LinearEasing
- }
- Alpha using tween { toFinished() }
- Radius using tween { toFinished() }
- Center using tween { toFinished() }
+ fun <T> toFinished() =
+ tween<T>(
+ durationMillis = FadeOutDuration.inMilliseconds().toInt(),
+ easing = LinearEasing
+ )
+
+ Alpha using toFinished()
+ Radius using toFinished()
+ Center using toFinished()
}
}
}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleIndication.kt b/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleIndication.kt
index be088f1..df30a73 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleIndication.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ripple/RippleIndication.kt
@@ -16,33 +16,33 @@
package androidx.ui.material.ripple
-import androidx.animation.AnimationBuilder
import androidx.animation.AnimationClockObservable
+import androidx.animation.AnimationSpec
import androidx.animation.LinearEasing
-import androidx.animation.TweenBuilder
+import androidx.animation.TweenSpec
import androidx.compose.Composable
import androidx.compose.Stable
import androidx.compose.State
-import androidx.compose.StructurallyEqual
-import androidx.compose.frames.modelListOf
import androidx.compose.remember
+import androidx.compose.mutableStateListOf
import androidx.compose.state
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.animation.AnimatedFloatModel
import androidx.ui.animation.asDisposableClock
import androidx.ui.core.AnimationClockAmbient
import androidx.ui.core.ContentDrawScope
-import androidx.ui.foundation.IndicationInstance
import androidx.ui.foundation.Indication
+import androidx.ui.foundation.IndicationInstance
import androidx.ui.foundation.Interaction
import androidx.ui.foundation.InteractionState
+import androidx.ui.geometry.Offset
+import androidx.ui.geometry.Size
import androidx.ui.graphics.Color
import androidx.ui.graphics.drawscope.DrawScope
import androidx.ui.graphics.drawscope.clipRect
import androidx.ui.graphics.useOrElse
import androidx.ui.material.MaterialTheme
import androidx.ui.unit.Dp
-import androidx.ui.geometry.Offset
-import androidx.ui.geometry.Size
import androidx.ui.util.fastForEach
/**
@@ -77,7 +77,7 @@
val theme = RippleThemeAmbient.current
val clock = AnimationClockAmbient.current.asDisposableClock()
val resolvedColor = color.useOrElse { theme.defaultColor() }
- val colorState = state(StructurallyEqual) { resolvedColor }
+ val colorState = state(structuralEqualityPolicy()) { resolvedColor }
colorState.value = resolvedColor
val interactionOpacity = theme.rippleOpacity()
return remember(bounded, radius, theme, clock) {
@@ -148,7 +148,7 @@
private val stateLayer = StateLayer(clock, bounded, rippleOpacity)
- private val ripples = modelListOf<RippleAnimation>()
+ private val ripples = mutableStateListOf<RippleAnimation>()
private var currentPressPosition: Offset? = null
private var currentRipple: RippleAnimation? = null
@@ -243,10 +243,10 @@
val targetOpacity = rippleOpacity.opacityForInteraction(interaction)
if (targetOpacity == 0f) continue
- val animationBuilder = animationBuilderForInteraction(interaction)
+ val animationSpec = animationSpecForInteraction(interaction)
animatedOpacity.animateTo(
targetOpacity,
- animationBuilder
+ animationSpec
)
lastDrawnInteraction = interaction
@@ -259,7 +259,7 @@
if (previousInteraction != null && previousInteraction !in currentInteractions) {
animatedOpacity.animateTo(
0f,
- animationBuilderForInteraction(previousInteraction)
+ animationSpecForInteraction(previousInteraction)
)
lastDrawnInteraction = null
@@ -287,10 +287,12 @@
* TODO: handle [interaction] for hover / focus states
*/
@Suppress("UNUSED_PARAMETER")
- private fun animationBuilderForInteraction(interaction: Interaction): AnimationBuilder<Float> {
- return TweenBuilder<Float>().apply {
- duration = 15
+ private fun animationSpecForInteraction(
+ interaction: Interaction
+ ): AnimationSpec<Float> {
+ return TweenSpec(
+ durationMillis = 15,
easing = LinearEasing
- }
+ )
}
}
diff --git a/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt b/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
index ffab1e3..d5443f5 100644
--- a/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
+++ b/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
@@ -17,7 +17,6 @@
package androidx.ui.rxjava2
import androidx.compose.Composable
-import androidx.compose.FrameManager
import androidx.compose.State
import androidx.compose.onPreCommit
import androidx.compose.state
@@ -190,7 +189,7 @@
val state = state { initial }
onPreCommit(this) {
val disposable = subscribe {
- FrameManager.framed { state.value = it }
+ state.value = it
}
onDispose { disposable.dispose() }
}
diff --git a/ui/ui-saved-instance-state/api/0.1.0-dev15.txt b/ui/ui-saved-instance-state/api/0.1.0-dev15.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/0.1.0-dev15.txt
+++ b/ui/ui-saved-instance-state/api/0.1.0-dev15.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/api/api_lint.ignore b/ui/ui-saved-instance-state/api/api_lint.ignore
index d93bfb5..8e314f1 100644
--- a/ui/ui-saved-instance-state/api/api_lint.ignore
+++ b/ui/ui-saved-instance-state/api/api_lint.ignore
@@ -1,5 +1,5 @@
// Baseline format: 1.0
ArrayReturn: androidx.ui.savedinstancestate.RememberSavedInstanceStateKt#rememberSavedInstanceState(Object[], androidx.ui.savedinstancestate.Saver<T,?>, String, kotlin.jvm.functions.Function0<? extends T>) parameter #0:
Method parameter should be Collection<Object> (or subclass) instead of raw array; was `java.lang.Object[]`
-ArrayReturn: androidx.ui.savedinstancestate.SavedInstanceStateKt#savedInstanceState(Object[], androidx.ui.savedinstancestate.Saver<T,?>, String, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean>, kotlin.jvm.functions.Function0<? extends T>) parameter #0:
+ArrayReturn: androidx.ui.savedinstancestate.SavedInstanceStateKt#savedInstanceState(Object[], androidx.ui.savedinstancestate.Saver<T,?>, String, androidx.compose.SnapshotMutationPolicy<T>, kotlin.jvm.functions.Function0<? extends T>) parameter #0:
Method parameter should be Collection<Object> (or subclass) instead of raw array; was `java.lang.Object[]`
diff --git a/ui/ui-saved-instance-state/api/current.txt b/ui/ui-saved-instance-state/api/current.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/current.txt
+++ b/ui/ui-saved-instance-state/api/current.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-saved-instance-state/api/public_plus_experimental_0.1.0-dev15.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-saved-instance-state/api/public_plus_experimental_0.1.0-dev15.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/api/public_plus_experimental_current.txt b/ui/ui-saved-instance-state/api/public_plus_experimental_current.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/public_plus_experimental_current.txt
+++ b/ui/ui-saved-instance-state/api/public_plus_experimental_current.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/api/restricted_0.1.0-dev15.txt b/ui/ui-saved-instance-state/api/restricted_0.1.0-dev15.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-saved-instance-state/api/restricted_0.1.0-dev15.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/api/restricted_current.txt b/ui/ui-saved-instance-state/api/restricted_current.txt
index e3e4a91..16fe0d1 100644
--- a/ui/ui-saved-instance-state/api/restricted_current.txt
+++ b/ui/ui-saved-instance-state/api/restricted_current.txt
@@ -14,7 +14,7 @@
}
public final class SavedInstanceStateKt {
- method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, kotlin.jvm.functions.Function2<? super T,? super T,java.lang.Boolean> areEquivalent = androidx.compose.MutableStateKt.ReferentiallyEqual, kotlin.jvm.functions.Function0<? extends T> init);
+ method @androidx.compose.Composable public static <T> androidx.compose.MutableState<T> savedInstanceState(Object![]? inputs, androidx.ui.savedinstancestate.Saver<T,?> saver = autoSaver(), String? key = null, androidx.compose.SnapshotMutationPolicy<T> policy = referentialEqualityPolicy(), kotlin.jvm.functions.Function0<? extends T> init);
}
public interface Saver<Original, Saveable> {
diff --git a/ui/ui-saved-instance-state/src/commonMain/kotlin/androidx/ui/savedinstancestate/SavedInstanceState.kt b/ui/ui-saved-instance-state/src/commonMain/kotlin/androidx/ui/savedinstancestate/SavedInstanceState.kt
index 6e193a8..c4cb6dd 100644
--- a/ui/ui-saved-instance-state/src/commonMain/kotlin/androidx/ui/savedinstancestate/SavedInstanceState.kt
+++ b/ui/ui-saved-instance-state/src/commonMain/kotlin/androidx/ui/savedinstancestate/SavedInstanceState.kt
@@ -18,9 +18,9 @@
import androidx.compose.Composable
import androidx.compose.MutableState
-import androidx.compose.ReferentiallyEqual
-import androidx.compose.StructurallyEqual
+import androidx.compose.SnapshotMutationPolicy
import androidx.compose.mutableStateOf
+import androidx.compose.referentialEqualityPolicy
import androidx.compose.state
/**
@@ -48,9 +48,9 @@
* @param key An optional key to be used as a key for the saved value. If not provided we use the
* automatically generated by the Compose runtime which is unique for the every exact code location
* in the composition tree
- * @param areEquivalent a callback to compare the previous and new instance of [T] when
- * [MutableState.value] is written to. If this returns true, then no recomposition will be
- * scheduled. See [ReferentiallyEqual] and [StructurallyEqual] for simple implementations.
+ * @param policy a callback to compare the previous and new instance of [T] when
+ * [MutableState.value] is written to. The policy is used to determine how composition should be
+ * scheduled. See [SnapshotMutationPolicy].
* @param init A factory function to create the initial value of this state
*/
@Composable
@@ -58,18 +58,18 @@
vararg inputs: Any?,
saver: Saver<T, out Any> = autoSaver(),
key: String? = null,
- areEquivalent: (old: T, new: T) -> Boolean = ReferentiallyEqual,
+ policy: SnapshotMutationPolicy<T> = referentialEqualityPolicy(),
init: () -> T
): MutableState<T> = rememberSavedInstanceState(
*inputs,
- saver = mutableStateSaver(saver, areEquivalent),
+ saver = mutableStateSaver(saver, policy),
key = key,
- init = { mutableStateOf(init(), areEquivalent) }
+ init = { mutableStateOf(init(), policy) }
)
private fun <T> mutableStateSaver(
inner: Saver<T, out Any>,
- areEquivalent: (old: T, new: T) -> Boolean
+ policy: SnapshotMutationPolicy<T>
) = Saver<MutableState<T>, Any>(
save = { state ->
with(inner) {
@@ -87,7 +87,7 @@
} else {
(inner as Saver<T, Any>).restore(it)
}
- mutableStateOf(restored as T, areEquivalent)
+ mutableStateOf(restored as T, policy)
}
)
diff --git a/ui/ui-test/api/0.1.0-dev06.txt b/ui/ui-test/api/0.1.0-dev06.txt
index 66c61de..076201e 100644
--- a/ui/ui-test/api/0.1.0-dev06.txt
+++ b/ui/ui-test/api/0.1.0-dev06.txt
@@ -213,7 +213,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev07.txt b/ui/ui-test/api/0.1.0-dev07.txt
index 9889574..acc87df 100644
--- a/ui/ui-test/api/0.1.0-dev07.txt
+++ b/ui/ui-test/api/0.1.0-dev07.txt
@@ -232,7 +232,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev08.txt b/ui/ui-test/api/0.1.0-dev08.txt
index 682df42..31e35eb 100644
--- a/ui/ui-test/api/0.1.0-dev08.txt
+++ b/ui/ui-test/api/0.1.0-dev08.txt
@@ -233,7 +233,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev09.txt b/ui/ui-test/api/0.1.0-dev09.txt
index 418daca..b062330 100644
--- a/ui/ui-test/api/0.1.0-dev09.txt
+++ b/ui/ui-test/api/0.1.0-dev09.txt
@@ -227,7 +227,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev10.txt b/ui/ui-test/api/0.1.0-dev10.txt
index 5f2ddea..6e38399 100644
--- a/ui/ui-test/api/0.1.0-dev10.txt
+++ b/ui/ui-test/api/0.1.0-dev10.txt
@@ -229,7 +229,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev11.txt b/ui/ui-test/api/0.1.0-dev11.txt
index 662dec6..4fb8654 100644
--- a/ui/ui-test/api/0.1.0-dev11.txt
+++ b/ui/ui-test/api/0.1.0-dev11.txt
@@ -257,7 +257,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev12.txt b/ui/ui-test/api/0.1.0-dev12.txt
index 1a3db67..ba37216 100644
--- a/ui/ui-test/api/0.1.0-dev12.txt
+++ b/ui/ui-test/api/0.1.0-dev12.txt
@@ -261,7 +261,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev14.txt b/ui/ui-test/api/0.1.0-dev14.txt
index 7959c86..5ef556f 100644
--- a/ui/ui-test/api/0.1.0-dev14.txt
+++ b/ui/ui-test/api/0.1.0-dev14.txt
@@ -61,13 +61,6 @@
method public static boolean contains(androidx.ui.graphics.Path, androidx.ui.geometry.Offset offset);
}
- public final class BoundsAssertionsKt {
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
- }
-
public final class CollectedSizes {
ctor public CollectedSizes(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
method public androidx.ui.test.CollectedSizes assertHeightEqualsTo(kotlin.jvm.functions.Function1<? super androidx.ui.unit.Density,java.lang.Integer> expectedHeightPx);
@@ -297,7 +290,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/0.1.0-dev15.txt b/ui/ui-test/api/0.1.0-dev15.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/0.1.0-dev15.txt
+++ b/ui/ui-test/api/0.1.0-dev15.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/current.txt b/ui/ui-test/api/current.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/current.txt
+++ b/ui/ui-test/api/current.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev06.txt
index 66c61de..076201e 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev06.txt
@@ -213,7 +213,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev07.txt
index 9889574..acc87df 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev07.txt
@@ -232,7 +232,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev08.txt
index 682df42..31e35eb 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev08.txt
@@ -233,7 +233,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev09.txt
index 418daca..b062330 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev09.txt
@@ -227,7 +227,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev10.txt
index 5f2ddea..6e38399 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev10.txt
@@ -229,7 +229,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev11.txt
index 662dec6..4fb8654 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev11.txt
@@ -257,7 +257,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev12.txt
index 1a3db67..ba37216 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev12.txt
@@ -261,7 +261,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev14.txt
index 7959c86..5ef556f 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev14.txt
@@ -61,13 +61,6 @@
method public static boolean contains(androidx.ui.graphics.Path, androidx.ui.geometry.Offset offset);
}
- public final class BoundsAssertionsKt {
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
- }
-
public final class CollectedSizes {
ctor public CollectedSizes(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
method public androidx.ui.test.CollectedSizes assertHeightEqualsTo(kotlin.jvm.functions.Function1<? super androidx.ui.unit.Density,java.lang.Integer> expectedHeightPx);
@@ -297,7 +290,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-test/api/public_plus_experimental_0.1.0-dev15.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-test/api/public_plus_experimental_0.1.0-dev15.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/public_plus_experimental_current.txt b/ui/ui-test/api/public_plus_experimental_current.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/public_plus_experimental_current.txt
+++ b/ui/ui-test/api/public_plus_experimental_current.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev06.txt b/ui/ui-test/api/restricted_0.1.0-dev06.txt
index 66c61de..076201e 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev06.txt
@@ -213,7 +213,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev07.txt b/ui/ui-test/api/restricted_0.1.0-dev07.txt
index 9889574..acc87df 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev07.txt
@@ -232,7 +232,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev08.txt b/ui/ui-test/api/restricted_0.1.0-dev08.txt
index 682df42..31e35eb 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev08.txt
@@ -233,7 +233,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev09.txt b/ui/ui-test/api/restricted_0.1.0-dev09.txt
index 418daca..b062330 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev09.txt
@@ -227,7 +227,7 @@
method public String getDescription();
method public operator androidx.ui.test.SemanticsPredicate not();
method public infix androidx.ui.test.SemanticsPredicate or(androidx.ui.test.SemanticsPredicate other);
- field public static final androidx.ui.test.SemanticsPredicate.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsPredicate.Companion Companion;
}
public static final class SemanticsPredicate.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev10.txt b/ui/ui-test/api/restricted_0.1.0-dev10.txt
index 35d1b37..f8e55e5 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev10.txt
@@ -230,7 +230,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev11.txt b/ui/ui-test/api/restricted_0.1.0-dev11.txt
index 662dec6..4fb8654 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev11.txt
@@ -257,7 +257,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev12.txt b/ui/ui-test/api/restricted_0.1.0-dev12.txt
index 1a3db67..ba37216 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev12.txt
@@ -261,7 +261,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev14.txt b/ui/ui-test/api/restricted_0.1.0-dev14.txt
index 7959c86..5ef556f 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev14.txt
@@ -61,13 +61,6 @@
method public static boolean contains(androidx.ui.graphics.Path, androidx.ui.geometry.Offset offset);
}
- public final class BoundsAssertionsKt {
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
- method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
- }
-
public final class CollectedSizes {
ctor public CollectedSizes(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
method public androidx.ui.test.CollectedSizes assertHeightEqualsTo(kotlin.jvm.functions.Function1<? super androidx.ui.unit.Density,java.lang.Integer> expectedHeightPx);
@@ -297,7 +290,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_0.1.0-dev15.txt b/ui/ui-test/api/restricted_0.1.0-dev15.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-test/api/restricted_0.1.0-dev15.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/api/restricted_current.txt b/ui/ui-test/api/restricted_current.txt
index ca50fe9..eb16d6d 100644
--- a/ui/ui-test/api/restricted_current.txt
+++ b/ui/ui-test/api/restricted_current.txt
@@ -64,7 +64,11 @@
public final class BoundsAssertionsKt {
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinHeight);
method public static androidx.ui.test.SemanticsNodeInteraction assertHeightIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedHeight);
+ method public static void assertIsEqualTo-552lcfo(float, float expected, String subject = "", float tolerance = null(0.5));
+ method public static void assertIsNotEqualTo-552lcfo(float, float unexpected, String subject = "", float tolerance = null(0.5));
+ method public static androidx.ui.test.SemanticsNodeInteraction assertLeftPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertPositionInRootIsEqualTo-jINh5Q8(androidx.ui.test.SemanticsNodeInteraction, float expectedLeft, float expectedTop);
+ method public static androidx.ui.test.SemanticsNodeInteraction assertTopPositionInRootIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedTop);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsAtLeast-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedMinWidth);
method public static androidx.ui.test.SemanticsNodeInteraction assertWidthIsEqualTo-Gf70O4E(androidx.ui.test.SemanticsNodeInteraction, float expectedWidth);
method public static float getAlignmentLinePosition(androidx.ui.test.SemanticsNodeInteraction, androidx.ui.core.AlignmentLine line);
@@ -300,7 +304,7 @@
method public boolean matchesAny(Iterable<androidx.ui.core.semantics.SemanticsNode> nodes);
method public operator androidx.ui.test.SemanticsMatcher not();
method public infix androidx.ui.test.SemanticsMatcher or(androidx.ui.test.SemanticsMatcher other);
- field public static final androidx.ui.test.SemanticsMatcher.Companion! Companion;
+ field public static final androidx.ui.test.SemanticsMatcher.Companion Companion;
}
public static final class SemanticsMatcher.Companion {
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/ActivityWithActionBar.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/ActivityWithActionBar.kt
index 4946a2c..a9585e3 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/ActivityWithActionBar.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/ActivityWithActionBar.kt
@@ -43,6 +43,6 @@
}
fun setContent(composable: @Composable () -> Unit) {
- composeHolder.setContent(Recomposer.current(), composable)
+ composeHolder.setContent(Recomposer.current(), null, composable)
}
}
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
index b4ddc24..5897055 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
@@ -20,7 +20,9 @@
import android.os.Looper
import androidx.animation.FloatPropKey
import androidx.animation.LinearEasing
+import androidx.animation.snap
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.State
import androidx.compose.mutableStateOf
@@ -207,10 +209,10 @@
this[x] = animateToX
}
transition(AnimationStates.From to AnimationStates.To) {
- x using tween {
- easing = LinearEasing
- duration = nonIdleDuration.toInt()
- }
+ x using tween(
+ easing = LinearEasing,
+ durationMillis = nonIdleDuration.toInt()
+ )
}
transition(AnimationStates.To to AnimationStates.From) {
x using snap()
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
index 38de5030..d2eef00 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
@@ -93,7 +93,7 @@
@Composable
fun PlaceConditionally(place: Boolean, child: @Composable () -> Unit) {
- Layout(children = child) { measurables, constraints, _ ->
+ Layout(children = child) { measurables, constraints ->
if (place) {
val placeable = measurables[0].measure(constraints)
layout(placeable.width, placeable.height) {
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
index 433b068..e802f1c 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
@@ -18,14 +18,16 @@
import androidx.animation.FloatPropKey
import androidx.animation.LinearEasing
+import androidx.animation.snap
import androidx.animation.transitionDefinition
+import androidx.animation.tween
import androidx.compose.Composable
import androidx.compose.ExperimentalComposeApi
-import androidx.compose.FrameManager
import androidx.compose.Recomposer
import androidx.compose.State
import androidx.compose.currentComposer
import androidx.compose.mutableStateOf
+import androidx.compose.snapshots.Snapshot
import androidx.test.espresso.Espresso.onIdle
import androidx.test.filters.MediumTest
import androidx.ui.animation.Transition
@@ -142,7 +144,8 @@
assertThat(ComposeIdlingResource.isIdle()).isFalse()
// Force model changes down the pipeline
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
recomposer.awaitIdle()
@@ -157,7 +160,8 @@
// Avoid synchronization steps when doing this: if we would synchronize, we would never
// know it if advanceClock didn't work.
runOnUiThread {
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
recomposer.awaitIdle()
@@ -212,10 +216,10 @@
this[x] = 50f
}
transition(AnimationStates.From to AnimationStates.To) {
- x using tween {
- easing = LinearEasing
- duration = 1000L.toInt()
- }
+ x using tween(
+ easing = LinearEasing,
+ durationMillis = 1000
+ )
}
transition(AnimationStates.To to AnimationStates.From) {
x using snap()
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
index 64a2ccd..c4234df 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
@@ -29,7 +29,11 @@
import androidx.ui.layout.wrapContentSize
import androidx.ui.test.assertHeightIsAtLeast
import androidx.ui.test.assertHeightIsEqualTo
+import androidx.ui.test.assertIsEqualTo
+import androidx.ui.test.assertIsNotEqualTo
+import androidx.ui.test.assertLeftPositionInRootIsEqualTo
import androidx.ui.test.assertPositionInRootIsEqualTo
+import androidx.ui.test.assertTopPositionInRootIsEqualTo
import androidx.ui.test.assertWidthIsAtLeast
import androidx.ui.test.assertWidthIsEqualTo
import androidx.ui.test.createComposeRule
@@ -68,6 +72,33 @@
}
@Test
+ fun dp_assertEquals() {
+ 5.dp.assertIsEqualTo(5.dp)
+ 5.dp.assertIsEqualTo(4.6.dp)
+ 5.dp.assertIsEqualTo(5.4.dp)
+ }
+
+ @Test
+ fun dp_assertNotEquals() {
+ 5.dp.assertIsNotEqualTo(6.dp)
+ }
+
+ @Test
+ fun dp_assertEquals_fail() {
+ expectError<AssertionError> {
+ 5.dp.assertIsEqualTo(6.dp)
+ }
+ }
+
+ @Test
+ fun dp_assertNotEquals_fail() {
+ expectError<AssertionError> {
+ 5.dp.assertIsNotEqualTo(5.dp)
+ 5.dp.assertIsNotEqualTo(5.4.dp)
+ }
+ }
+
+ @Test
fun assertEquals() {
composeBox()
@@ -123,6 +154,8 @@
findByTag(tag)
.assertPositionInRootIsEqualTo(expectedLeft = 50.dp, expectedTop = 100.dp)
+ .assertLeftPositionInRootIsEqualTo(50.dp)
+ .assertTopPositionInRootIsEqualTo(100.dp)
}
@Test
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/BoundsAssertions.kt b/ui/ui-test/src/main/java/androidx/ui/test/BoundsAssertions.kt
index a16fd1f..07895a3 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/BoundsAssertions.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/BoundsAssertions.kt
@@ -36,7 +36,7 @@
*/
fun SemanticsNodeInteraction.assertWidthIsEqualTo(expectedWidth: Dp): SemanticsNodeInteraction {
return withBoundsInRoot {
- areEqualOrThrow("width", it.width, expectedWidth)
+ it.width.toDp().assertIsEqualTo(expectedWidth, "width")
}
}
@@ -47,7 +47,7 @@
*/
fun SemanticsNodeInteraction.assertHeightIsEqualTo(expectedHeight: Dp): SemanticsNodeInteraction {
return withBoundsInRoot {
- areEqualOrThrow("height", it.height, expectedHeight)
+ it.height.toDp().assertIsEqualTo(expectedHeight, "height")
}
}
/**
@@ -104,8 +104,40 @@
expectedTop: Dp
): SemanticsNodeInteraction {
return withBoundsInRoot {
- areEqualOrThrow("left", it.left, expectedLeft)
- areEqualOrThrow("top", it.top, expectedTop)
+ it.left.toDp().assertIsEqualTo(expectedLeft, "left")
+ it.top.toDp().assertIsEqualTo(expectedTop, "top")
+ }
+}
+
+/**
+ * Asserts that the layout of this node has the top position in the root composable that is equal to
+ * the given position.
+ *
+ * @param expectedTop The top (y) position to assert.
+ *
+ * @throws AssertionError if comparison fails.
+ */
+fun SemanticsNodeInteraction.assertTopPositionInRootIsEqualTo(
+ expectedTop: Dp
+): SemanticsNodeInteraction {
+ return withBoundsInRoot {
+ it.top.toDp().assertIsEqualTo(expectedTop, "top")
+ }
+}
+
+/**
+ * Asserts that the layout of this node has the left position in the root composable that is
+ * equal to the given position.
+ *
+ * @param expectedTop The left (x) position to assert.
+ *
+ * @throws AssertionError if comparison fails.
+ */
+fun SemanticsNodeInteraction.assertLeftPositionInRootIsEqualTo(
+ expectedTop: Dp
+): SemanticsNodeInteraction {
+ return withBoundsInRoot {
+ it.left.toDp().assertIsEqualTo(expectedTop, "left")
}
}
@@ -124,6 +156,54 @@
}
}
+/**
+ * Asserts that this value is equal to the given [expected] value.
+ *
+ * Performs the comparison with the given [tolerance] or the default one if none is provided. It is
+ * recommended to use tolerance when comparing positions and size coming from the framework as there
+ * can be rounding operation performed by individual layouts so the values can be slightly off from
+ * the expected ones.
+ *
+ * @param expected The expected value to which this one should be equal to.
+ * @param subject Used in the error message to identify which item this assertion failed on.
+ * @param tolerance The tolerance within which the values should be treated as equal.
+ *
+ * @throws AssertionError if comparison fails.
+ */
+fun Dp.assertIsEqualTo(expected: Dp, subject: String = "", tolerance: Dp = Dp(.5f)) {
+ val diff = (this - expected).value.absoluteValue
+ if (diff > tolerance.value) {
+ // Comparison failed, report the error in DPs
+ throw AssertionError(
+ "Actual $subject is $this, expected $expected (tolerance: $tolerance)")
+ }
+}
+
+/**
+ * Asserts that this value is not equal to the given [unexpected] value.
+ *
+ * Performs the comparison with the given [tolerance] or the default one if none is provided. It is
+ * recommended to use tolerance when comparing positions and size coming from the framework as there
+ * can be rounding operation performed by individual layouts so the values can be slightly off from
+ * the expected ones.
+ *
+ * @param unexpected The value to which this one should not be equal to.
+ * @param subject Used in the error message to identify which item this assertion failed on.
+ * @param tolerance The tolerance that is expected to be greater than the difference between the
+ * given values to treat them as non-equal.
+ *
+ * @throws AssertionError if comparison fails.
+ */
+fun Dp.assertIsNotEqualTo(unexpected: Dp, subject: String = "", tolerance: Dp = Dp(.5f)) {
+ val diff = (this - unexpected).value.absoluteValue
+ if (diff <= tolerance.value) {
+ // Comparison failed, report the error in DPs
+ throw AssertionError(
+ "Actual $subject is $this, not expected to be equal to $unexpected within a " +
+ "tolerance of $tolerance")
+ }
+}
+
private fun <R> SemanticsNodeInteraction.withDensity(
operation: Density.(SemanticsNode) -> R
): R {
@@ -142,19 +222,6 @@
return this
}
-private fun Density.areEqualOrThrow(
- subject: String,
- actualPx: Float,
- expected: Dp
-) {
- val diff = (actualPx - expected.toPx()).absoluteValue
- if (diff > floatTolerance) {
- // Comparison failed, report the error in DPs
- throw AssertionError(
- "Actual $subject is ${actualPx.toDp()}, expected $expected")
- }
-}
-
private fun Density.isAtLeastOrThrow(
subject: String,
actualPx: Float,
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt b/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
index deba7ae..0abb9eb 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/android/AndroidComposeTestCaseRunner.kt
@@ -30,11 +30,10 @@
import android.widget.ImageView
import androidx.activity.ComponentActivity
import androidx.compose.Composition
-import androidx.compose.FrameManager
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Recomposer
import androidx.compose.dispatch.MonotonicFrameClock
-import androidx.compose.frames.currentFrame
-import androidx.compose.frames.inFrame
+import androidx.compose.snapshots.Snapshot
import androidx.ui.core.AndroidOwner
import androidx.ui.core.setContent
import androidx.ui.test.ComposeBenchmarkScope
@@ -127,14 +126,16 @@
// We will emulate the restoration of the empty state to trigger the real composition.
ownerView.restoreHierarchyState(SparseArray())
view = ownerView
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.notifyObjectsInitialized()
simulationState = SimulationState.EmitContentDone
}
- // TODO: This method may advance the current frame and should be just a getter
+ // TODO: This method may advance the global snapshot and should be just a getter
override fun hasPendingChanges(): Boolean {
if (recomposer.hasPendingChanges() || hasPendingChangesInFrame()) {
- FrameManager.nextFrame()
+ @OptIn(ExperimentalComposeApi::class)
+ Snapshot.sendApplyNotifications()
}
return recomposer.hasPendingChanges()
@@ -147,7 +148,8 @@
* need to recompose.
*/
private fun hasPendingChangesInFrame(): Boolean {
- return inFrame && currentFrame().hasPendingChanges()
+ @OptIn(ExperimentalComposeApi::class)
+ return Snapshot.current.hasPendingChanges()
}
override fun measure() {
@@ -209,8 +211,8 @@
override fun recompose() {
if (hasPendingChanges()) {
didLastRecomposeHaveChanges = true
- runBlocking {
- recomposer.recomposeAndApplyChanges(this, frameClock, 1)
+ runBlocking(frameClock) {
+ recomposer.recomposeAndApplyChanges(this, 1)
}
} else {
didLastRecomposeHaveChanges = false
@@ -218,9 +220,10 @@
simulationState = SimulationState.RecomposeDone
}
- override fun launchRecomposeIn(coroutineScope: CoroutineScope): Job = coroutineScope.launch {
- recomposer.runRecomposeAndApplyChanges(frameClock)
- }
+ override fun launchRecomposeIn(coroutineScope: CoroutineScope): Job =
+ coroutineScope.launch(frameClock) {
+ recomposer.runRecomposeAndApplyChanges()
+ }
override fun doFrame() {
if (view == null) {
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/android/ComposeIdlingResource.kt b/ui/ui-test/src/main/java/androidx/ui/test/android/ComposeIdlingResource.kt
index fada546..1f38ed2 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/android/ComposeIdlingResource.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/android/ComposeIdlingResource.kt
@@ -18,9 +18,9 @@
import android.os.Handler
import android.os.Looper
+import androidx.compose.ExperimentalComposeApi
import androidx.compose.Recomposer
-import androidx.compose.frames.currentFrame
-import androidx.compose.frames.inFrame
+import androidx.compose.snapshots.Snapshot
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.IdlingResource
import androidx.ui.test.TestAnimationClock
@@ -83,9 +83,10 @@
/**
* Returns whether or not Compose is idle, without starting to poll if it is not.
*/
+ @OptIn(ExperimentalComposeApi::class)
fun isIdle(): Boolean {
return runOnUiThread {
- !(inFrame && currentFrame().hasPendingChanges()) &&
+ !(Snapshot.current.hasPendingChanges()) &&
!Recomposer.current().hasPendingChanges() &&
areAllClocksIdle()
}
diff --git a/ui/ui-text-android/api/0.1.0-dev14.txt b/ui/ui-text-android/api/0.1.0-dev14.txt
index ddc6f37..d904b8c 100644
--- a/ui/ui-text-android/api/0.1.0-dev14.txt
+++ b/ui/ui-text-android/api/0.1.0-dev14.txt
@@ -4,9 +4,6 @@
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.ERROR, message="This is internal API that may change frequently and without warning.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalPlatformTextApi {
}
- public final class LayoutCompatKt {
- }
-
public final class LayoutIntrinsicsKt {
}
diff --git a/ui/ui-text-android/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-text-android/api/public_plus_experimental_0.1.0-dev14.txt
index ddc6f37..d904b8c 100644
--- a/ui/ui-text-android/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-text-android/api/public_plus_experimental_0.1.0-dev14.txt
@@ -4,9 +4,6 @@
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.ERROR, message="This is internal API that may change frequently and without warning.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalPlatformTextApi {
}
- public final class LayoutCompatKt {
- }
-
public final class LayoutIntrinsicsKt {
}
diff --git a/ui/ui-text-android/api/restricted_0.1.0-dev09.txt b/ui/ui-text-android/api/restricted_0.1.0-dev09.txt
index 7d5f536..e7a3d59 100644
--- a/ui/ui-text-android/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-text-android/api/restricted_0.1.0-dev09.txt
@@ -119,7 +119,7 @@
field public static final int ALIGN_TEXT_CENTER = 6; // 0x6
field public static final int ALIGN_TEXT_TOP = 4; // 0x4
field public static final int ALIGN_TOP = 1; // 0x1
- field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion! Companion;
+ field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion Companion;
field public static final int UNIT_EM = 1; // 0x1
field public static final int UNIT_INHERIT = 2; // 0x2
field public static final int UNIT_SP = 0; // 0x0
diff --git a/ui/ui-text-android/api/restricted_0.1.0-dev10.txt b/ui/ui-text-android/api/restricted_0.1.0-dev10.txt
index 4d862c7..27f9c7a 100644
--- a/ui/ui-text-android/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-text-android/api/restricted_0.1.0-dev10.txt
@@ -123,7 +123,7 @@
field public static final int ALIGN_TEXT_CENTER = 6; // 0x6
field public static final int ALIGN_TEXT_TOP = 4; // 0x4
field public static final int ALIGN_TOP = 1; // 0x1
- field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion! Companion;
+ field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion Companion;
field public static final int UNIT_EM = 1; // 0x1
field public static final int UNIT_INHERIT = 2; // 0x2
field public static final int UNIT_SP = 0; // 0x0
diff --git a/ui/ui-text-android/api/restricted_0.1.0-dev11.txt b/ui/ui-text-android/api/restricted_0.1.0-dev11.txt
index 4d862c7..27f9c7a 100644
--- a/ui/ui-text-android/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-text-android/api/restricted_0.1.0-dev11.txt
@@ -123,7 +123,7 @@
field public static final int ALIGN_TEXT_CENTER = 6; // 0x6
field public static final int ALIGN_TEXT_TOP = 4; // 0x4
field public static final int ALIGN_TOP = 1; // 0x1
- field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion! Companion;
+ field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion Companion;
field public static final int UNIT_EM = 1; // 0x1
field public static final int UNIT_INHERIT = 2; // 0x2
field public static final int UNIT_SP = 0; // 0x0
diff --git a/ui/ui-text-android/api/restricted_0.1.0-dev12.txt b/ui/ui-text-android/api/restricted_0.1.0-dev12.txt
index 01d0e25..a734059 100644
--- a/ui/ui-text-android/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-text-android/api/restricted_0.1.0-dev12.txt
@@ -98,7 +98,7 @@
method public int getWeight();
method public void updateDrawState(android.text.TextPaint textPaint);
method public void updateMeasureState(android.text.TextPaint textPaint);
- field public static final androidx.ui.text.platform.style.FontWeightStyleSpan.Companion! Companion;
+ field public static final androidx.ui.text.platform.style.FontWeightStyleSpan.Companion Companion;
field public static final int STYLE_ITALIC = 2; // 0x2
field public static final int STYLE_NONE = -1; // 0xffffffff
field public static final int STYLE_NORMAL = 0; // 0x0
@@ -148,7 +148,7 @@
field public static final int ALIGN_TEXT_CENTER = 6; // 0x6
field public static final int ALIGN_TEXT_TOP = 4; // 0x4
field public static final int ALIGN_TOP = 1; // 0x1
- field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion! Companion;
+ field public static final androidx.ui.text.platform.style.PlaceholderSpan.Companion Companion;
field public static final int UNIT_EM = 1; // 0x1
field public static final int UNIT_INHERIT = 2; // 0x2
field public static final int UNIT_SP = 0; // 0x0
diff --git a/ui/ui-text-android/api/restricted_0.1.0-dev14.txt b/ui/ui-text-android/api/restricted_0.1.0-dev14.txt
index ddc6f37..d904b8c 100644
--- a/ui/ui-text-android/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-text-android/api/restricted_0.1.0-dev14.txt
@@ -4,9 +4,6 @@
@kotlin.RequiresOptIn(level=RequiresOptIn.Level.ERROR, message="This is internal API that may change frequently and without warning.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalPlatformTextApi {
}
- public final class LayoutCompatKt {
- }
-
public final class LayoutIntrinsicsKt {
}
diff --git a/ui/ui-text-core/api/0.1.0-dev09.txt b/ui/ui-text-core/api/0.1.0-dev09.txt
index 7da9ec0..0e04150 100644
--- a/ui/ui-text-core/api/0.1.0-dev09.txt
+++ b/ui/ui-text-core/api/0.1.0-dev09.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -260,7 +264,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -282,7 +286,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -438,6 +442,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -557,7 +563,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -629,7 +635,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -671,7 +677,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -717,11 +723,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -731,7 +741,7 @@
@androidx.compose.Immutable public final class FontWeight implements java.lang.Comparable<androidx.ui.text.font.FontWeight> {
method public int compareTo(androidx.ui.text.font.FontWeight other);
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -824,7 +834,7 @@
method public float component1();
method @androidx.compose.Immutable public androidx.ui.text.style.BaselineShift copy(float multiplier);
method public float getMultiplier();
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -841,6 +851,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -854,7 +866,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -868,11 +880,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -887,7 +903,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -905,7 +921,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy(androidx.ui.unit.TextUnit firstLine, androidx.ui.unit.TextUnit restLine);
method public androidx.ui.unit.TextUnit getFirstLine();
method public androidx.ui.unit.TextUnit getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -918,6 +934,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/0.1.0-dev10.txt b/ui/ui-text-core/api/0.1.0-dev10.txt
index 8e5dce7..0dfb2f6 100644
--- a/ui/ui-text-core/api/0.1.0-dev10.txt
+++ b/ui/ui-text-core/api/0.1.0-dev10.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -260,7 +264,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -282,7 +286,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -443,6 +447,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -563,7 +569,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -633,7 +639,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -675,7 +681,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -721,11 +727,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -738,7 +748,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -834,7 +844,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -851,6 +861,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -864,7 +876,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -878,11 +890,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -897,7 +913,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -913,7 +929,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -926,6 +942,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/0.1.0-dev11.txt b/ui/ui-text-core/api/0.1.0-dev11.txt
index 15a74ba..c41985c 100644
--- a/ui/ui-text-core/api/0.1.0-dev11.txt
+++ b/ui/ui-text-core/api/0.1.0-dev11.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -183,7 +187,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -266,7 +270,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -288,7 +292,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -450,6 +454,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -578,7 +584,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -651,7 +657,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -693,7 +699,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -739,11 +745,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -756,7 +766,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -852,7 +862,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -869,6 +879,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -882,7 +894,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -896,11 +908,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -915,7 +931,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -931,7 +947,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -944,6 +960,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/0.1.0-dev12.txt b/ui/ui-text-core/api/0.1.0-dev12.txt
index 6e82306..7cd3598 100644
--- a/ui/ui-text-core/api/0.1.0-dev12.txt
+++ b/ui/ui-text-core/api/0.1.0-dev12.txt
@@ -71,6 +71,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -87,6 +89,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -108,7 +112,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -188,7 +192,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -272,7 +276,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -294,7 +298,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -456,6 +460,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -584,7 +590,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -657,7 +663,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -699,7 +705,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -745,11 +751,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -762,7 +772,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -858,7 +868,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -875,6 +885,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -888,7 +900,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -902,11 +914,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -921,7 +937,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -937,7 +953,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -950,6 +966,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/0.1.0-dev14.txt b/ui/ui-text-core/api/0.1.0-dev14.txt
index b3f847a..b9c1d45 100644
--- a/ui/ui-text-core/api/0.1.0-dev14.txt
+++ b/ui/ui-text-core/api/0.1.0-dev14.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -653,7 +659,7 @@
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -712,7 +718,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +756,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +802,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +823,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -892,21 +902,14 @@
}
public final class AndroidParagraphIntrinsicsKt {
- method @Deprecated public static kotlin.jvm.functions.Function6<java.lang.String,androidx.ui.text.TextStyle,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,androidx.ui.unit.Density,androidx.ui.text.font.Font.ResourceLoader,androidx.ui.text.ParagraphIntrinsics> getParagraphIntrinsicsActualFactory();
- method @Deprecated public static void setParagraphIntrinsicsActualFactory(kotlin.jvm.functions.Function6<? super java.lang.String,? super androidx.ui.text.TextStyle,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,? super androidx.ui.unit.Density,? super androidx.ui.text.font.Font.ResourceLoader,? extends androidx.ui.text.ParagraphIntrinsics> p);
}
public final class AndroidParagraphKt {
- method @Deprecated public static kotlin.jvm.functions.Function4<androidx.ui.text.ParagraphIntrinsics,java.lang.Integer,java.lang.Boolean,androidx.ui.text.ParagraphConstraints,androidx.ui.text.Paragraph> getParagraphActualFactory();
- method @Deprecated public static void setParagraphActualFactory(kotlin.jvm.functions.Function4<? super androidx.ui.text.ParagraphIntrinsics,? super java.lang.Integer,? super java.lang.Boolean,? super androidx.ui.text.ParagraphConstraints,? extends androidx.ui.text.Paragraph> p);
}
public final class AndroidStringDelegateKt {
}
- @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalTextApi {
- }
-
public final class TypefaceAdapterKt {
method public static androidx.ui.text.Typeface typefaceFromFontFamily(android.content.Context context, androidx.ui.text.font.FontFamily fontFamily, java.util.List<? extends kotlin.Pair<androidx.ui.text.font.FontWeight,? extends androidx.ui.text.font.FontStyle>>? necessaryStyles = null);
}
@@ -923,7 +926,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -940,6 +943,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -953,7 +958,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -967,11 +972,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -986,7 +995,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -1002,7 +1011,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1015,6 +1024,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/0.1.0-dev15.txt b/ui/ui-text-core/api/0.1.0-dev15.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/0.1.0-dev15.txt
+++ b/ui/ui-text-core/api/0.1.0-dev15.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/current.txt b/ui/ui-text-core/api/current.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/current.txt
+++ b/ui/ui-text-core/api/current.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev09.txt
index 7da9ec0..0e04150 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev09.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -260,7 +264,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -282,7 +286,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -438,6 +442,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -557,7 +563,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -629,7 +635,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -671,7 +677,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -717,11 +723,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -731,7 +741,7 @@
@androidx.compose.Immutable public final class FontWeight implements java.lang.Comparable<androidx.ui.text.font.FontWeight> {
method public int compareTo(androidx.ui.text.font.FontWeight other);
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -824,7 +834,7 @@
method public float component1();
method @androidx.compose.Immutable public androidx.ui.text.style.BaselineShift copy(float multiplier);
method public float getMultiplier();
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -841,6 +851,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -854,7 +866,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -868,11 +880,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -887,7 +903,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -905,7 +921,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy(androidx.ui.unit.TextUnit firstLine, androidx.ui.unit.TextUnit restLine);
method public androidx.ui.unit.TextUnit getFirstLine();
method public androidx.ui.unit.TextUnit getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -918,6 +934,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev10.txt
index 8e5dce7..0dfb2f6 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev10.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -260,7 +264,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -282,7 +286,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -443,6 +447,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -563,7 +569,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -633,7 +639,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -675,7 +681,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -721,11 +727,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -738,7 +748,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -834,7 +844,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -851,6 +861,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -864,7 +876,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -878,11 +890,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -897,7 +913,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -913,7 +929,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -926,6 +942,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev11.txt
index 15a74ba..c41985c 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev11.txt
@@ -66,6 +66,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -82,6 +84,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -103,7 +107,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -183,7 +187,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -266,7 +270,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -288,7 +292,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -450,6 +454,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -578,7 +584,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -651,7 +657,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -693,7 +699,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -739,11 +745,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -756,7 +766,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -852,7 +862,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -869,6 +879,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -882,7 +894,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -896,11 +908,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -915,7 +931,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -931,7 +947,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -944,6 +960,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev12.txt
index 6e82306..7cd3598 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -71,6 +71,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -87,6 +89,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -108,7 +112,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -188,7 +192,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -272,7 +276,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -294,7 +298,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -456,6 +460,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -584,7 +590,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -657,7 +663,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -699,7 +705,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -745,11 +751,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -762,7 +772,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -858,7 +868,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -875,6 +885,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -888,7 +900,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -902,11 +914,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -921,7 +937,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -937,7 +953,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -950,6 +966,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev14.txt
index b3f847a..b9c1d45 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev14.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -653,7 +659,7 @@
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -712,7 +718,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +756,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +802,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +823,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -892,21 +902,14 @@
}
public final class AndroidParagraphIntrinsicsKt {
- method @Deprecated public static kotlin.jvm.functions.Function6<java.lang.String,androidx.ui.text.TextStyle,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,androidx.ui.unit.Density,androidx.ui.text.font.Font.ResourceLoader,androidx.ui.text.ParagraphIntrinsics> getParagraphIntrinsicsActualFactory();
- method @Deprecated public static void setParagraphIntrinsicsActualFactory(kotlin.jvm.functions.Function6<? super java.lang.String,? super androidx.ui.text.TextStyle,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,? super androidx.ui.unit.Density,? super androidx.ui.text.font.Font.ResourceLoader,? extends androidx.ui.text.ParagraphIntrinsics> p);
}
public final class AndroidParagraphKt {
- method @Deprecated public static kotlin.jvm.functions.Function4<androidx.ui.text.ParagraphIntrinsics,java.lang.Integer,java.lang.Boolean,androidx.ui.text.ParagraphConstraints,androidx.ui.text.Paragraph> getParagraphActualFactory();
- method @Deprecated public static void setParagraphActualFactory(kotlin.jvm.functions.Function4<? super androidx.ui.text.ParagraphIntrinsics,? super java.lang.Integer,? super java.lang.Boolean,? super androidx.ui.text.ParagraphConstraints,? extends androidx.ui.text.Paragraph> p);
}
public final class AndroidStringDelegateKt {
}
- @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalTextApi {
- }
-
public final class TypefaceAdapterKt {
method public static androidx.ui.text.Typeface typefaceFromFontFamily(android.content.Context context, androidx.ui.text.font.FontFamily fontFamily, java.util.List<? extends kotlin.Pair<androidx.ui.text.font.FontWeight,? extends androidx.ui.text.font.FontStyle>>? necessaryStyles = null);
}
@@ -923,7 +926,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -940,6 +943,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -953,7 +958,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -967,11 +972,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -986,7 +995,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -1002,7 +1011,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1015,6 +1024,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev15.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/public_plus_experimental_current.txt b/ui/ui-text-core/api/public_plus_experimental_current.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-text-core/api/public_plus_experimental_current.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev09.txt b/ui/ui-text-core/api/restricted_0.1.0-dev09.txt
index e753420..e704aa2 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev09.txt
@@ -71,6 +71,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -87,6 +89,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -108,7 +112,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -265,7 +269,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -287,7 +291,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -443,6 +447,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -518,7 +524,7 @@
method public void layoutIntrinsics(androidx.ui.core.LayoutDirection layoutDirection);
property public final androidx.ui.unit.IntPx maxIntrinsicWidth;
property public final androidx.ui.unit.IntPx minIntrinsicWidth;
- field public static final androidx.ui.text.TextDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextDelegate.Companion Companion;
}
public static final class TextDelegate.Companion {
@@ -586,7 +592,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -658,7 +664,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -700,7 +706,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -746,11 +752,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -760,7 +770,7 @@
@androidx.compose.Immutable public final class FontWeight implements java.lang.Comparable<androidx.ui.text.font.FontWeight> {
method public int compareTo(androidx.ui.text.font.FontWeight other);
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -853,7 +863,7 @@
method public float component1();
method @androidx.compose.Immutable public androidx.ui.text.style.BaselineShift copy(float multiplier);
method public float getMultiplier();
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -870,6 +880,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -883,7 +895,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -897,11 +909,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -916,7 +932,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -934,7 +950,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy(androidx.ui.unit.TextUnit firstLine, androidx.ui.unit.TextUnit restLine);
method public androidx.ui.unit.TextUnit getFirstLine();
method public androidx.ui.unit.TextUnit getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -947,6 +963,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev10.txt b/ui/ui-text-core/api/restricted_0.1.0-dev10.txt
index 73dab08..d2a711c 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev10.txt
@@ -71,6 +71,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -87,6 +89,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -108,7 +112,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -265,7 +269,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -287,7 +291,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -448,6 +452,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -521,7 +527,7 @@
method public void layoutIntrinsics(androidx.ui.core.LayoutDirection layoutDirection);
property public final int maxIntrinsicWidth;
property public final int minIntrinsicWidth;
- field public static final androidx.ui.text.TextDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextDelegate.Companion Companion;
}
public static final class TextDelegate.Companion {
@@ -592,7 +598,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -662,7 +668,7 @@
method public androidx.ui.text.TextStyle merge(androidx.ui.text.ParagraphStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -704,7 +710,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -750,11 +756,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -767,7 +777,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -863,7 +873,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -880,6 +890,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -893,7 +905,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -907,11 +919,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -926,7 +942,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -942,7 +958,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -955,6 +971,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev11.txt b/ui/ui-text-core/api/restricted_0.1.0-dev11.txt
index 2f204b6..db34b4d 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev11.txt
@@ -71,6 +71,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -87,6 +89,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -108,7 +112,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -188,7 +192,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -271,7 +275,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -293,7 +297,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -455,6 +459,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -536,7 +542,7 @@
method public void layoutIntrinsics(androidx.ui.core.LayoutDirection layoutDirection);
property public final int maxIntrinsicWidth;
property public final int minIntrinsicWidth;
- field public static final androidx.ui.text.TextDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextDelegate.Companion Companion;
}
public static final class TextDelegate.Companion {
@@ -607,7 +613,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -680,7 +686,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -722,7 +728,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -768,11 +774,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -785,7 +795,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -881,7 +891,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -898,6 +908,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -911,7 +923,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -925,11 +937,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -944,7 +960,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -960,7 +976,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -973,6 +989,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev12.txt b/ui/ui-text-core/api/restricted_0.1.0-dev12.txt
index 751e996..6874835 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev12.txt
@@ -76,6 +76,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -92,6 +94,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -113,7 +117,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -193,7 +197,7 @@
public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -277,7 +281,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.text.Locale.Companion! Companion;
+ field public static final androidx.ui.text.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -299,7 +303,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.text.Locale> iterator();
property public int size;
- field public static final androidx.ui.text.LocaleList.Companion! Companion;
+ field public static final androidx.ui.text.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -461,6 +465,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -542,7 +548,7 @@
method public void layoutIntrinsics(androidx.ui.core.LayoutDirection layoutDirection);
property public final int maxIntrinsicWidth;
property public final int minIntrinsicWidth;
- field public static final androidx.ui.text.TextDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextDelegate.Companion Companion;
}
public static final class TextDelegate.Companion {
@@ -613,7 +619,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
public final class TextRange {
@@ -686,7 +692,7 @@
method public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method public androidx.ui.text.ParagraphStyle toParagraphStyle();
method public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -728,7 +734,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -774,11 +780,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -791,7 +801,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -887,7 +897,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -904,6 +914,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -917,7 +929,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -931,11 +943,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -950,7 +966,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -966,7 +982,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -979,6 +995,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev14.txt b/ui/ui-text-core/api/restricted_0.1.0-dev14.txt
index b3f847a..b9c1d45 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev14.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -653,7 +659,7 @@
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -712,7 +718,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +756,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +802,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +823,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -892,21 +902,14 @@
}
public final class AndroidParagraphIntrinsicsKt {
- method @Deprecated public static kotlin.jvm.functions.Function6<java.lang.String,androidx.ui.text.TextStyle,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,androidx.ui.unit.Density,androidx.ui.text.font.Font.ResourceLoader,androidx.ui.text.ParagraphIntrinsics> getParagraphIntrinsicsActualFactory();
- method @Deprecated public static void setParagraphIntrinsicsActualFactory(kotlin.jvm.functions.Function6<? super java.lang.String,? super androidx.ui.text.TextStyle,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.SpanStyle>>,? super java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>>,? super androidx.ui.unit.Density,? super androidx.ui.text.font.Font.ResourceLoader,? extends androidx.ui.text.ParagraphIntrinsics> p);
}
public final class AndroidParagraphKt {
- method @Deprecated public static kotlin.jvm.functions.Function4<androidx.ui.text.ParagraphIntrinsics,java.lang.Integer,java.lang.Boolean,androidx.ui.text.ParagraphConstraints,androidx.ui.text.Paragraph> getParagraphActualFactory();
- method @Deprecated public static void setParagraphActualFactory(kotlin.jvm.functions.Function4<? super androidx.ui.text.ParagraphIntrinsics,? super java.lang.Integer,? super java.lang.Boolean,? super androidx.ui.text.ParagraphConstraints,? extends androidx.ui.text.Paragraph> p);
}
public final class AndroidStringDelegateKt {
}
- @kotlin.RequiresOptIn(message="This API is internal to library.") @kotlin.annotation.Target(allowedTargets={AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) public @interface InternalTextApi {
- }
-
public final class TypefaceAdapterKt {
method public static androidx.ui.text.Typeface typefaceFromFontFamily(android.content.Context context, androidx.ui.text.font.FontFamily fontFamily, java.util.List<? extends kotlin.Pair<androidx.ui.text.font.FontWeight,? extends androidx.ui.text.font.FontStyle>>? necessaryStyles = null);
}
@@ -923,7 +926,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -940,6 +943,8 @@
}
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -953,7 +958,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -967,11 +972,15 @@
}
public enum TextDirection {
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
}
public enum TextDirectionAlgorithm {
+ method public static androidx.ui.text.style.TextDirectionAlgorithm valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirectionAlgorithm[] values();
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
@@ -986,7 +995,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -1002,7 +1011,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1015,6 +1024,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_0.1.0-dev15.txt b/ui/ui-text-core/api/restricted_0.1.0-dev15.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-text-core/api/restricted_0.1.0-dev15.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/api/restricted_current.txt b/ui/ui-text-core/api/restricted_current.txt
index 7dab49a..3c083a3 100644
--- a/ui/ui-text-core/api/restricted_current.txt
+++ b/ui/ui-text-core/api/restricted_current.txt
@@ -74,6 +74,8 @@
}
public enum ImeAction {
+ method public static androidx.ui.input.ImeAction valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.ImeAction[] values();
enum_constant public static final androidx.ui.input.ImeAction Done;
enum_constant public static final androidx.ui.input.ImeAction Go;
enum_constant public static final androidx.ui.input.ImeAction Next;
@@ -90,6 +92,8 @@
}
public enum KeyboardType {
+ method public static androidx.ui.input.KeyboardType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.input.KeyboardType[] values();
enum_constant public static final androidx.ui.input.KeyboardType Ascii;
enum_constant public static final androidx.ui.input.KeyboardType Email;
enum_constant public static final androidx.ui.input.KeyboardType Number;
@@ -111,7 +115,7 @@
public interface OffsetMap {
method public int originalToTransformed(int offset);
method public int transformedToOriginal(int offset);
- field public static final androidx.ui.input.OffsetMap.Companion! Companion;
+ field public static final androidx.ui.input.OffsetMap.Companion Companion;
}
public static final class OffsetMap.Companion {
@@ -177,7 +181,7 @@
method public androidx.ui.text.TextRange? getComposition();
method public androidx.ui.text.TextRange getSelection();
method public String getText();
- field public static final androidx.ui.input.TextFieldValue.Companion! Companion;
+ field public static final androidx.ui.input.TextFieldValue.Companion Companion;
}
public static final class TextFieldValue.Companion {
@@ -219,7 +223,7 @@
@androidx.compose.Immutable public interface VisualTransformation {
method public androidx.ui.input.TransformedText filter(androidx.ui.text.AnnotatedString text);
- field public static final androidx.ui.input.VisualTransformation.Companion! Companion;
+ field public static final androidx.ui.input.VisualTransformation.Companion Companion;
}
public static final class VisualTransformation.Companion {
@@ -243,7 +247,7 @@
property public final String language;
property public final String region;
property public final String script;
- field public static final androidx.ui.intl.Locale.Companion! Companion;
+ field public static final androidx.ui.intl.Locale.Companion Companion;
}
public static final class Locale.Companion {
@@ -265,7 +269,7 @@
method public boolean isEmpty();
method public java.util.Iterator<androidx.ui.intl.Locale> iterator();
property public int size;
- field public static final androidx.ui.intl.LocaleList.Companion! Companion;
+ field public static final androidx.ui.intl.LocaleList.Companion Companion;
}
public static final class LocaleList.Companion {
@@ -353,7 +357,7 @@
public final class MultiParagraph {
ctor public MultiParagraph(androidx.ui.text.MultiParagraphIntrinsics intrinsics, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints);
ctor public MultiParagraph(androidx.ui.text.AnnotatedString annotatedString, androidx.ui.text.TextStyle style, java.util.List<androidx.ui.text.AnnotatedString.Range<androidx.ui.text.Placeholder>> placeholders, int maxLines, boolean ellipsis, androidx.ui.text.ParagraphConstraints constraints, androidx.ui.unit.Density density, androidx.ui.text.font.Font.ResourceLoader resourceLoader);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -378,7 +382,7 @@
method public int getMaxLines();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -412,7 +416,7 @@
}
public interface Paragraph {
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidExceedMaxLines();
@@ -435,7 +439,7 @@
method public float getMaxIntrinsicWidth();
method public float getMinIntrinsicWidth();
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public float getWidth();
@@ -477,13 +481,13 @@
@androidx.compose.Immutable public final class ParagraphStyle {
method public androidx.ui.text.style.TextAlign? component1();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component2();
+ method public androidx.ui.text.style.TextDirection? component2();
method public long component3();
method public androidx.ui.text.style.TextIndent? component4();
- method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-ffQossE(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.ParagraphStyle copy-JVmhFNw(androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getLineHeight();
method public androidx.ui.text.style.TextAlign? getTextAlign();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle merge(androidx.ui.text.ParagraphStyle? other = null);
method @androidx.compose.Stable public operator androidx.ui.text.ParagraphStyle plus(androidx.ui.text.ParagraphStyle other);
@@ -504,6 +508,8 @@
}
public enum PlaceholderVerticalAlign {
+ method public static androidx.ui.text.PlaceholderVerticalAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.PlaceholderVerticalAlign[] values();
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign AboveBaseline;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Bottom;
enum_constant public static final androidx.ui.text.PlaceholderVerticalAlign Center;
@@ -601,7 +607,7 @@
method public androidx.ui.text.TextLayoutInput component1();
method public androidx.ui.unit.IntSize component3();
method public androidx.ui.text.TextLayoutResult copy(androidx.ui.text.TextLayoutInput layoutInput, androidx.ui.text.MultiParagraph multiParagraph, androidx.ui.unit.IntSize size);
- method public androidx.ui.text.style.TextDirection getBidiRunDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getBidiRunDirection(int offset);
method public androidx.ui.geometry.Rect getBoundingBox(int offset);
method public androidx.ui.geometry.Rect getCursorRect(int offset);
method public boolean getDidOverflowHeight();
@@ -617,7 +623,7 @@
method public int getLineStart(int lineIndex);
method public float getLineTop(int lineIndex);
method public int getOffsetForPosition(androidx.ui.geometry.Offset position);
- method public androidx.ui.text.style.TextDirection getParagraphDirection(int offset);
+ method public androidx.ui.text.style.ResolvedTextDirection getParagraphDirection(int offset);
method public androidx.ui.graphics.Path getPathForRange(int start, int end);
method public java.util.List<androidx.ui.geometry.Rect> getPlaceholderRects();
method public androidx.ui.unit.IntSize getSize();
@@ -632,7 +638,7 @@
public final class TextPainter {
method public void paint(androidx.ui.graphics.Canvas canvas, androidx.ui.text.TextLayoutResult textLayoutResult);
- field public static final androidx.ui.text.TextPainter! INSTANCE;
+ field public static final androidx.ui.text.TextPainter INSTANCE;
}
@androidx.compose.Immutable public final class TextRange {
@@ -647,13 +653,15 @@
method public int getLength();
method public int getMax();
method public int getMin();
+ method public boolean getReversed();
method public int getStart();
method public boolean intersects(androidx.ui.text.TextRange other);
property public final boolean collapsed;
property public final int length;
property public final int max;
property public final int min;
- field public static final androidx.ui.text.TextRange.Companion! Companion;
+ property public final boolean reversed;
+ field public static final androidx.ui.text.TextRange.Companion Companion;
}
public static final class TextRange.Companion {
@@ -674,7 +682,7 @@
method public androidx.ui.text.style.TextDecoration? component13();
method public androidx.ui.graphics.Shadow? component14();
method public androidx.ui.text.style.TextAlign? component15();
- method public androidx.ui.text.style.TextDirectionAlgorithm? component16();
+ method public androidx.ui.text.style.TextDirection? component16();
method public long component17();
method public androidx.ui.text.style.TextIndent? component18();
method public long component2();
@@ -685,7 +693,7 @@
method public String? component7();
method public long component8();
method public androidx.ui.text.style.BaselineShift? component9();
- method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-bPwzXGo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirectionAlgorithm? textDirectionAlgorithm, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
+ method @androidx.compose.Immutable public androidx.ui.text.TextStyle copy-7aJ7aFo(long color, long fontSize, androidx.ui.text.font.FontWeight? fontWeight, androidx.ui.text.font.FontStyle? fontStyle, androidx.ui.text.font.FontSynthesis? fontSynthesis, androidx.ui.text.font.FontFamily? fontFamily, String? fontFeatureSettings, long letterSpacing, androidx.ui.text.style.BaselineShift? baselineShift, androidx.ui.text.style.TextGeometricTransform? textGeometricTransform, androidx.ui.intl.LocaleList? localeList, long background, androidx.ui.text.style.TextDecoration? textDecoration, androidx.ui.graphics.Shadow? shadow, androidx.ui.text.style.TextAlign? textAlign, androidx.ui.text.style.TextDirection? textDirection, long lineHeight, androidx.ui.text.style.TextIndent? textIndent);
method public long getBackground();
method public androidx.ui.text.style.BaselineShift? getBaselineShift();
method public long getColor();
@@ -701,7 +709,7 @@
method public androidx.ui.graphics.Shadow? getShadow();
method public androidx.ui.text.style.TextAlign? getTextAlign();
method public androidx.ui.text.style.TextDecoration? getTextDecoration();
- method public androidx.ui.text.style.TextDirectionAlgorithm? getTextDirectionAlgorithm();
+ method public androidx.ui.text.style.TextDirection? getTextDirection();
method public androidx.ui.text.style.TextGeometricTransform? getTextGeometricTransform();
method public androidx.ui.text.style.TextIndent? getTextIndent();
method @androidx.compose.Stable public androidx.ui.text.TextStyle merge(androidx.ui.text.TextStyle? other = null);
@@ -712,7 +720,7 @@
method @androidx.compose.Stable public operator androidx.ui.text.TextStyle plus(androidx.ui.text.SpanStyle other);
method @androidx.compose.Stable public androidx.ui.text.ParagraphStyle toParagraphStyle();
method @androidx.compose.Stable public androidx.ui.text.SpanStyle toSpanStyle();
- field public static final androidx.ui.text.TextStyle.Companion! Companion;
+ field public static final androidx.ui.text.TextStyle.Companion Companion;
}
public static final class TextStyle.Companion {
@@ -750,7 +758,7 @@
@androidx.compose.Immutable public abstract sealed class FontFamily {
method public final boolean getCanLoadSynchronously();
- field public static final androidx.ui.text.font.FontFamily.Companion! Companion;
+ field public static final androidx.ui.text.font.FontFamily.Companion Companion;
}
public static final class FontFamily.Companion {
@@ -796,11 +804,15 @@
}
public enum FontStyle {
+ method public static androidx.ui.text.font.FontStyle valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontStyle[] values();
enum_constant public static final androidx.ui.text.font.FontStyle Italic;
enum_constant public static final androidx.ui.text.font.FontStyle Normal;
}
public enum FontSynthesis {
+ method public static androidx.ui.text.font.FontSynthesis valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.font.FontSynthesis[] values();
enum_constant public static final androidx.ui.text.font.FontSynthesis All;
enum_constant public static final androidx.ui.text.font.FontSynthesis None;
enum_constant public static final androidx.ui.text.font.FontSynthesis Style;
@@ -813,7 +825,7 @@
method public int component1();
method @androidx.compose.Immutable public androidx.ui.text.font.FontWeight copy(int weight);
method public int getWeight();
- field public static final androidx.ui.text.font.FontWeight.Companion! Companion;
+ field public static final androidx.ui.text.font.FontWeight.Companion Companion;
}
public static final class FontWeight.Companion {
@@ -910,6 +922,22 @@
}
+package androidx.ui.text.platform.extensions {
+
+ public final class LocaleExtensionsKt {
+ }
+
+ public final class PlaceholderExtensionsKt {
+ }
+
+ public final class SpannableExtensionsKt {
+ }
+
+ public final class TextPaintExtensionsKt {
+ }
+
+}
+
package androidx.ui.text.style {
@androidx.compose.Immutable public final inline class BaselineShift {
@@ -920,7 +948,7 @@
method public float getMultiplier();
method @androidx.compose.Immutable public static inline int hashCode-impl(float p);
method @androidx.compose.Immutable public static inline String! toString-impl(float p);
- field public static final androidx.ui.text.style.BaselineShift.Companion! Companion;
+ field public static final androidx.ui.text.style.BaselineShift.Companion Companion;
}
public static final class BaselineShift.Companion {
@@ -936,7 +964,16 @@
method @androidx.compose.Stable public static float lerp-7csQwvo(float start, float stop, float fraction);
}
+ public enum ResolvedTextDirection {
+ method public static androidx.ui.text.style.ResolvedTextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.ResolvedTextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Ltr;
+ enum_constant public static final androidx.ui.text.style.ResolvedTextDirection Rtl;
+ }
+
public enum TextAlign {
+ method public static androidx.ui.text.style.TextAlign valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextAlign[] values();
enum_constant public static final androidx.ui.text.style.TextAlign Center;
enum_constant public static final androidx.ui.text.style.TextAlign End;
enum_constant public static final androidx.ui.text.style.TextAlign Justify;
@@ -950,7 +987,7 @@
method public boolean contains(androidx.ui.text.style.TextDecoration other);
method @androidx.compose.Immutable public androidx.ui.text.style.TextDecoration copy(int mask);
method public int getMask();
- field public static final androidx.ui.text.style.TextDecoration.Companion! Companion;
+ field public static final androidx.ui.text.style.TextDecoration.Companion Companion;
}
public static final class TextDecoration.Companion {
@@ -964,15 +1001,12 @@
}
public enum TextDirection {
- enum_constant public static final androidx.ui.text.style.TextDirection Ltr;
- enum_constant public static final androidx.ui.text.style.TextDirection Rtl;
- }
-
- public enum TextDirectionAlgorithm {
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ContentOrRtl;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceLtr;
- enum_constant public static final androidx.ui.text.style.TextDirectionAlgorithm ForceRtl;
+ method public static androidx.ui.text.style.TextDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextDirection[] values();
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ContentOrRtl;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceLtr;
+ enum_constant public static final androidx.ui.text.style.TextDirection ForceRtl;
}
@androidx.compose.Immutable public final class TextGeometricTransform {
@@ -983,7 +1017,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextGeometricTransform copy(float scaleX, float skewX);
method public float getScaleX();
method public float getSkewX();
- field public static final androidx.ui.text.style.TextGeometricTransform.Companion! Companion;
+ field public static final androidx.ui.text.style.TextGeometricTransform.Companion Companion;
}
public static final class TextGeometricTransform.Companion {
@@ -999,7 +1033,7 @@
method @androidx.compose.Immutable public androidx.ui.text.style.TextIndent copy-gL_aCS0(long firstLine, long restLine);
method public long getFirstLine();
method public long getRestLine();
- field public static final androidx.ui.text.style.TextIndent.Companion! Companion;
+ field public static final androidx.ui.text.style.TextIndent.Companion Companion;
}
public static final class TextIndent.Companion {
@@ -1012,6 +1046,8 @@
}
public enum TextOverflow {
+ method public static androidx.ui.text.style.TextOverflow valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.text.style.TextOverflow[] values();
enum_constant public static final androidx.ui.text.style.TextOverflow Clip;
enum_constant public static final androidx.ui.text.style.TextOverflow Ellipsis;
}
diff --git a/ui/ui-text-core/samples/src/main/java/androidx/ui/text/samples/ParagraphStyleSamples.kt b/ui/ui-text-core/samples/src/main/java/androidx/ui/text/samples/ParagraphStyleSamples.kt
index bb35e5a3..9527f36 100644
--- a/ui/ui-text-core/samples/src/main/java/androidx/ui/text/samples/ParagraphStyleSamples.kt
+++ b/ui/ui-text-core/samples/src/main/java/androidx/ui/text/samples/ParagraphStyleSamples.kt
@@ -23,7 +23,7 @@
import androidx.ui.text.TextStyle
import androidx.ui.text.annotatedString
import androidx.ui.text.style.TextAlign
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.sp
@@ -51,12 +51,12 @@
"nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
val paragraphStyle1 = ParagraphStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr,
+ textDirection = TextDirection.ContentOrLtr,
textIndent = TextIndent(firstLine = 14.sp)
)
val paragraphStyle2 = ParagraphStyle(
lineHeight = 30.sp,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
)
Text(
diff --git a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/MultiParagraphIntegrationTest.kt b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/MultiParagraphIntegrationTest.kt
index 0429bfb..4a431fe 100644
--- a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/MultiParagraphIntegrationTest.kt
+++ b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/MultiParagraphIntegrationTest.kt
@@ -25,8 +25,8 @@
import androidx.ui.text.FontTestData.Companion.BASIC_MEASURE_FONT
import androidx.ui.text.font.asFontFamily
import androidx.ui.text.style.TextAlign
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.text.style.TextDirection
-import androidx.ui.text.style.TextDirectionAlgorithm
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.Density
import androidx.ui.geometry.Offset
@@ -332,10 +332,10 @@
val text = createAnnotatedString("a", "\u05D0", " ")
val paragraph = simpleMultiParagraph(text = text)
- assertThat(paragraph.getParagraphDirection(0)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getParagraphDirection(1)).isEqualTo(TextDirection.Rtl)
- assertThat(paragraph.getParagraphDirection(2)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getParagraphDirection(3)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(0)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(1)).isEqualTo(ResolvedTextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(2)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(3)).isEqualTo(ResolvedTextDirection.Ltr)
}
@Test
@@ -344,13 +344,13 @@
val paragraph = simpleMultiParagraph(
text = text,
style = TextStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
)
)
- assertThat(paragraph.getParagraphDirection(0)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getParagraphDirection(1)).isEqualTo(TextDirection.Rtl)
- assertThat(paragraph.getParagraphDirection(2)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getParagraphDirection(3)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(0)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(1)).isEqualTo(ResolvedTextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(2)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(3)).isEqualTo(ResolvedTextDirection.Ltr)
}
@Test
@@ -359,13 +359,13 @@
val paragraph = simpleMultiParagraph(
text = text,
style = TextStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrRtl
+ textDirection = TextDirection.ContentOrRtl
)
)
- assertThat(paragraph.getParagraphDirection(0)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getParagraphDirection(1)).isEqualTo(TextDirection.Rtl)
- assertThat(paragraph.getParagraphDirection(2)).isEqualTo(TextDirection.Rtl)
- assertThat(paragraph.getParagraphDirection(3)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(0)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(1)).isEqualTo(ResolvedTextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(2)).isEqualTo(ResolvedTextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(3)).isEqualTo(ResolvedTextDirection.Rtl)
}
@Test
@@ -374,13 +374,13 @@
val paragraph = simpleMultiParagraph(
text = text,
style = TextStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
)
)
for (i in 0..text.length) {
assertWithMessage("getParagraphDirection($i) failed")
- .that(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Ltr)
+ .that(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
@@ -390,13 +390,13 @@
val paragraph = simpleMultiParagraph(
text = text,
style = TextStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
)
)
for (i in 0..text.length) {
assertWithMessage("getParagraphDirection($i) failed")
- .that(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Rtl)
+ .that(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
@@ -422,11 +422,11 @@
val text = createAnnotatedString("a\u05D0", "\u05D0a")
val paragraph = simpleMultiParagraph(text = text)
- assertThat(paragraph.getBidiRunDirection(0)).isEqualTo(TextDirection.Ltr)
- assertThat(paragraph.getBidiRunDirection(1)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(0)).isEqualTo(ResolvedTextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(1)).isEqualTo(ResolvedTextDirection.Rtl)
- assertThat(paragraph.getBidiRunDirection(2)).isEqualTo(TextDirection.Rtl)
- assertThat(paragraph.getBidiRunDirection(3)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(2)).isEqualTo(ResolvedTextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(3)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
@@ -1016,7 +1016,7 @@
val paragraph = simpleMultiParagraph(
text = text,
fontSize = fontSize,
- style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ style = TextStyle(textDirection = TextDirection.ContentOrLtr),
width = width
)
@@ -1048,7 +1048,7 @@
val paragraph = simpleMultiParagraph(
text = text,
fontSize = fontSize,
- style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrRtl),
+ style = TextStyle(textDirection = TextDirection.ContentOrRtl),
width = width
)
@@ -1080,7 +1080,7 @@
val paragraph = simpleMultiParagraph(
text = text,
fontSize = fontSize,
- style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr),
+ style = TextStyle(textDirection = TextDirection.ForceLtr),
width = width
)
@@ -1112,7 +1112,7 @@
val paragraph = simpleMultiParagraph(
text = text,
fontSize = fontSize,
- style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl),
+ style = TextStyle(textDirection = TextDirection.ForceRtl),
width = width
)
@@ -1225,14 +1225,14 @@
@Test
fun annotatedString_haveParagraphStyle_withoutTextDirection() {
- val textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ val textDirectionAlgorithm = TextDirection.ForceRtl
// Provide an LTR text
val text = AnnotatedString(
text = "ab",
paragraphStyles = listOf(
ParagraphStyleRange(
item = ParagraphStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
start = 0,
end = "a".length
@@ -1249,17 +1249,17 @@
val paragraph = MultiParagraph(
annotatedString = text,
- style = TextStyle(textDirectionAlgorithm = textDirectionAlgorithm),
+ style = TextStyle(textDirection = textDirectionAlgorithm),
constraints = ParagraphConstraints(Float.MAX_VALUE),
density = defaultDensity,
resourceLoader = TestFontResourceLoader(context)
)
// the first character uses TextDirectionAlgorithm.ContentOrLtr
- assertThat(paragraph.getParagraphDirection(0)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(0)).isEqualTo(ResolvedTextDirection.Ltr)
// the second character should use TextDirectionAlgorithm.ForceRtlsince it should inherit
// from main [ParagraphStyle]
- assertThat(paragraph.getParagraphDirection(1)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(1)).isEqualTo(ResolvedTextDirection.Rtl)
}
@Test
@@ -1280,7 +1280,7 @@
style = TextStyle(
fontSize = fontSize.sp,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
constraints = ParagraphConstraints(Float.MAX_VALUE),
@@ -1312,7 +1312,7 @@
style = TextStyle(
fontSize = fontSize.sp,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
constraints = ParagraphConstraints(Float.MAX_VALUE),
@@ -1345,7 +1345,7 @@
style = TextStyle(
fontSize = fontSize.sp,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
constraints = ParagraphConstraints(Float.MAX_VALUE),
@@ -1388,7 +1388,7 @@
style = TextStyle(
fontSize = fontSize.sp,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
constraints = ParagraphConstraints(Float.MAX_VALUE),
@@ -1434,7 +1434,7 @@
style = TextStyle(
fontSize = fontSize.sp,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
constraints = ParagraphConstraints(Float.MAX_VALUE),
@@ -1472,7 +1472,7 @@
style = TextStyle(
fontFamily = fontFamilyMeasureFont,
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
placeholders = placeholders,
density = defaultDensity,
@@ -1492,7 +1492,7 @@
style = TextStyle(
fontFamily = fontFamilyMeasureFont,
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
).merge(style),
maxLines = maxLines,
constraints = ParagraphConstraints(width),
@@ -1513,7 +1513,7 @@
style = TextStyle(
fontFamily = fontFamilyMeasureFont,
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
).merge(style),
maxLines = maxLines,
constraints = ParagraphConstraints(width),
diff --git a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntegrationTest.kt b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntegrationTest.kt
index 2802196..6c7757f 100644
--- a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntegrationTest.kt
+++ b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntegrationTest.kt
@@ -36,8 +36,8 @@
import androidx.ui.text.matchers.assertThat
import androidx.ui.text.matchers.isZero
import androidx.ui.text.style.TextAlign
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.text.style.TextDirection
-import androidx.ui.text.style.TextDirectionAlgorithm
import androidx.ui.text.style.TextGeometricTransform
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.Density
@@ -823,7 +823,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -850,7 +850,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -880,7 +880,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -913,7 +913,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -979,7 +979,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -1000,7 +1000,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -1086,7 +1086,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -1114,7 +1114,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -1143,7 +1143,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -1176,7 +1176,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -1243,7 +1243,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
@@ -1264,7 +1264,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
@@ -1287,7 +1287,7 @@
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1303,13 +1303,13 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1328,7 +1328,7 @@
)
for (i in text.indices) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1344,13 +1344,13 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1371,7 +1371,7 @@
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1389,13 +1389,13 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1413,13 +1413,13 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
for (i in 0..text.length) {
- assertThat(paragraph.getParagraphDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getParagraphDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1438,7 +1438,7 @@
)
for (i in 0..text.length) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1454,13 +1454,13 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
for (i in 0..text.length) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
}
}
@@ -1479,7 +1479,7 @@
)
for (i in text.indices) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1495,15 +1495,17 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
for (i in 0 until text.length - 1) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
- assertThat(paragraph.getBidiRunDirection(text.length - 1)).isEqualTo(TextDirection.Ltr)
+ assertThat(
+ paragraph.getBidiRunDirection(text.length - 1)
+ ).isEqualTo(ResolvedTextDirection.Ltr)
}
}
@@ -1523,11 +1525,11 @@
)
for (i in ltrText.indices) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
for (i in ltrText.length until text.length) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1545,17 +1547,17 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width)
)
for (i in ltrText.indices) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
for (i in ltrText.length until text.length) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1573,17 +1575,17 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width)
)
for (i in ltrText.indices) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Ltr)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Ltr)
}
for (i in ltrText.length until text.length) {
- assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(TextDirection.Rtl)
+ assertThat(paragraph.getBidiRunDirection(i)).isEqualTo(ResolvedTextDirection.Rtl)
}
}
}
@@ -1609,7 +1611,7 @@
style = TextStyle(
fontSize = fontSize,
localeList = localeList,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
density = defaultDensity,
resourceLoader = resourceLoader,
@@ -2202,7 +2204,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr
+ textDirection = TextDirection.ForceLtr
),
constraints = ParagraphConstraints(width = layoutWidth)
)
@@ -2226,7 +2228,7 @@
text = text,
style = TextStyle(
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
),
constraints = ParagraphConstraints(width = layoutWidth)
)
@@ -3858,7 +3860,7 @@
style = TextStyle(
fontSize = fontSize,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
),
spanStyles = listOf(),
density = defaultDensity,
@@ -3879,7 +3881,7 @@
fun nullTextDirectionAlgorithm_throwsException() {
Paragraph(
text = "",
- style = TextStyle(textDirectionAlgorithm = null),
+ style = TextStyle(textDirection = null),
constraints = ParagraphConstraints(Float.MAX_VALUE),
density = defaultDensity,
resourceLoader = resourceLoader
@@ -3909,7 +3911,7 @@
spanStyles = spanStyles,
style = TextStyle(
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
).merge(style),
maxLines = maxLines,
ellipsis = ellipsis,
diff --git a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntrinsicIntegrationTest.kt b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntrinsicIntegrationTest.kt
index b1a175e..d723fd8 100644
--- a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntrinsicIntegrationTest.kt
+++ b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphIntrinsicIntegrationTest.kt
@@ -19,7 +19,7 @@
import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import androidx.ui.text.font.asFontFamily
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.unit.Density
import androidx.ui.unit.TextUnit
import androidx.ui.unit.sp
@@ -208,7 +208,7 @@
style = TextStyle(
fontFamily = fontFamilyMeasureFont,
fontSize = fontSize,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
).merge(style),
density = defaultDensity,
resourceLoader = TestFontResourceLoader(context)
diff --git a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphPlaceholderIntegrationTest.kt b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphPlaceholderIntegrationTest.kt
index a4845f6..5a4b51a 100644
--- a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphPlaceholderIntegrationTest.kt
+++ b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/ParagraphPlaceholderIntegrationTest.kt
@@ -18,7 +18,7 @@
import androidx.test.platform.app.InstrumentationRegistry
import androidx.ui.text.font.asFontFamily
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.unit.Density
import androidx.ui.unit.TextUnit
import androidx.ui.unit.em
@@ -372,7 +372,7 @@
placeholders = listOf(AnnotatedString.Range(placeholder, 1, 2)),
fontSize = fontSize.sp,
width = paragraphWidth,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrRtl
+ textDirection = TextDirection.ContentOrRtl
)
val placeholderRects = paragraph.placeholderRects
assertThat(placeholderRects.size).isEqualTo(1)
@@ -402,7 +402,7 @@
placeholders = listOf(AnnotatedString.Range(placeholder, 1, 2)),
fontSize = fontSize.sp,
width = paragraphWidth,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
)
val placeholderRects = paragraph.placeholderRects
assertThat(placeholderRects.size).isEqualTo(1)
@@ -432,7 +432,7 @@
placeholders = listOf(AnnotatedString.Range(placeholder, 2, 3)),
fontSize = fontSize.sp,
width = paragraphWidth,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
)
val placeholderRects = paragraph.placeholderRects
assertThat(placeholderRects.size).isEqualTo(1)
@@ -462,7 +462,7 @@
placeholders = listOf(AnnotatedString.Range(placeholder, 1, 3)),
fontSize = fontSize.sp,
width = paragraphWidth,
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
)
val placeholderRects = paragraph.placeholderRects
assertThat(placeholderRects.size).isEqualTo(1)
@@ -513,7 +513,7 @@
spanStyles: List<AnnotatedString.Range<SpanStyle>> = listOf(),
placeholders: List<AnnotatedString.Range<Placeholder>> = listOf(),
width: Float = Float.MAX_VALUE,
- textDirectionAlgorithm: TextDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr,
+ textDirection: TextDirection = TextDirection.ContentOrLtr,
maxLines: Int = Int.MAX_VALUE,
ellipsis: Boolean = false
): Paragraph {
@@ -522,7 +522,7 @@
style = TextStyle(
fontSize = fontSize,
fontFamily = fontFamilyMeasureFont,
- textDirectionAlgorithm = textDirectionAlgorithm
+ textDirection = textDirection
),
spanStyles = spanStyles,
placeholders = placeholders,
diff --git a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/platform/AndroidParagraphTest.kt b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/platform/AndroidParagraphTest.kt
index 8702081..8e2e3b0 100644
--- a/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/platform/AndroidParagraphTest.kt
+++ b/ui/ui-text-core/src/androidAndroidTest/kotlin/androidx/ui/text/platform/AndroidParagraphTest.kt
@@ -40,7 +40,7 @@
import androidx.ui.text.style.BaselineShift
import androidx.ui.text.style.TextAlign
import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextGeometricTransform
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.Density
@@ -1218,7 +1218,7 @@
spanStyles: List<AnnotatedString.Range<SpanStyle>> = listOf(),
textIndent: TextIndent? = null,
textAlign: TextAlign? = null,
- textDirectionAlgorithm: TextDirectionAlgorithm? = TextDirectionAlgorithm.ContentOrLtr,
+ textDirection: TextDirection? = TextDirection.ContentOrLtr,
ellipsis: Boolean = false,
maxLines: Int = Int.MAX_VALUE,
constraints: ParagraphConstraints,
@@ -1233,7 +1233,7 @@
style = TextStyle(
textAlign = textAlign,
textIndent = textIndent,
- textDirectionAlgorithm = textDirectionAlgorithm
+ textDirection = textDirection
).merge(style),
maxLines = maxLines,
ellipsis = ellipsis,
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraph.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraph.kt
index b79162c..c13d22a 100644
--- a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraph.kt
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraph.kt
@@ -43,7 +43,7 @@
import androidx.ui.text.platform.selection.WordBoundary
import androidx.ui.text.platform.style.PlaceholderSpan
import androidx.ui.text.style.TextAlign
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Density
import androidx.ui.geometry.Offset
import androidx.ui.util.annotation.VisibleForTesting
@@ -167,9 +167,9 @@
val direction = getBidiRunDirection(start)
val left = when (direction) {
- TextDirection.Ltr ->
+ ResolvedTextDirection.Ltr ->
getHorizontalPosition(start, true)
- TextDirection.Rtl ->
+ ResolvedTextDirection.Rtl ->
getHorizontalPosition(start, true) - span.widthPx
}
val right = left + span.widthPx
@@ -295,14 +295,17 @@
layout.getSecondaryHorizontal(offset)
}
- override fun getParagraphDirection(offset: Int): TextDirection {
+ override fun getParagraphDirection(offset: Int): ResolvedTextDirection {
val lineIndex = layout.getLineForOffset(offset)
val direction = layout.getParagraphDirection(lineIndex)
- return if (direction == 1) TextDirection.Ltr else TextDirection.Rtl
+ return if (direction == 1) ResolvedTextDirection.Ltr else ResolvedTextDirection.Rtl
}
- override fun getBidiRunDirection(offset: Int): TextDirection {
- return if (layout.isRtlCharAt(offset)) TextDirection.Rtl else TextDirection.Ltr
+ override fun getBidiRunDirection(offset: Int): ResolvedTextDirection {
+ return if (layout.isRtlCharAt(offset))
+ ResolvedTextDirection.Rtl
+ else
+ ResolvedTextDirection.Ltr
}
/**
@@ -338,7 +341,8 @@
else -> DEFAULT_ALIGNMENT
}
-// TODO(b/159152328): temporary workaround for ui-desktop. remove when full support of MPP will be in-place
+// TODO(b/159152328): temporary workaround for ui-desktop. remove when full support of MPP will
+// be in-place
@Deprecated(
"Temporary workaround. Supposed to be used only in ui-desktop before MPP",
level = DeprecationLevel.ERROR
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphHelper.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphHelper.kt
index cc49eac..6b12724 100644
--- a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphHelper.kt
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphHelper.kt
@@ -16,179 +16,20 @@
package androidx.ui.text.platform
-import android.graphics.Typeface
-import android.os.Build
import android.text.SpannableString
-import android.text.Spanned
-import android.text.TextPaint
-import android.text.style.AbsoluteSizeSpan
-import android.text.style.BackgroundColorSpan
-import android.text.style.ForegroundColorSpan
-import android.text.style.LeadingMarginSpan
-import android.text.style.LocaleSpan
-import android.text.style.RelativeSizeSpan
-import android.text.style.ScaleXSpan
-import android.text.style.StrikethroughSpan
-import android.text.style.UnderlineSpan
-import androidx.annotation.RequiresApi
-import androidx.ui.graphics.Color
-import androidx.ui.graphics.Shadow
-import androidx.ui.graphics.isSet
-import androidx.ui.graphics.toArgb
-import androidx.ui.intl.AndroidLocale
-import androidx.ui.intl.Locale
-import androidx.ui.intl.LocaleList
import androidx.ui.text.AnnotatedString
import androidx.ui.text.Placeholder
-import androidx.ui.text.PlaceholderVerticalAlign
import androidx.ui.text.SpanStyle
-import androidx.ui.text.font.FontFamily
-import androidx.ui.text.font.FontListFontFamily
-import androidx.ui.text.font.FontStyle
-import androidx.ui.text.font.FontSynthesis
-import androidx.ui.text.font.FontWeight
-import androidx.ui.text.platform.style.BaselineShiftSpan
-import androidx.ui.text.platform.style.FontFeatureSpan
-import androidx.ui.text.platform.style.FontSpan
-import androidx.ui.text.platform.style.FontWeightStyleSpan
-import androidx.ui.text.platform.style.LetterSpacingSpanEm
-import androidx.ui.text.platform.style.LetterSpacingSpanPx
-import androidx.ui.text.platform.style.LineHeightSpan
-import androidx.ui.text.platform.style.PlaceholderSpan
-import androidx.ui.text.platform.style.ShadowSpan
-import androidx.ui.text.platform.style.SkewXSpan
-import androidx.ui.text.style.BaselineShift
-import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
-import androidx.ui.text.style.TextGeometricTransform
+import androidx.ui.text.platform.extensions.setLineHeight
+import androidx.ui.text.platform.extensions.setPlaceholders
+import androidx.ui.text.platform.extensions.setSpanStyles
+import androidx.ui.text.platform.extensions.setTextIndent
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.Density
import androidx.ui.unit.TextUnit
-import androidx.ui.unit.TextUnitType
-import androidx.ui.unit.sp
-import androidx.ui.util.fastForEach
-import kotlin.math.ceil
-import kotlin.math.roundToInt
-import android.os.LocaleList as AndroidLocaleList
-import java.util.Locale as JavaLocale
-
-internal fun TextPaint.applySpanStyle(
- style: SpanStyle,
- typefaceAdapter: TypefaceAdapter,
- density: Density
-): SpanStyle {
- when (style.fontSize.type) {
- TextUnitType.Sp -> with(density) {
- textSize = style.fontSize.toPx()
- }
- TextUnitType.Em -> {
- textSize *= style.fontSize.value
- }
- TextUnitType.Inherit -> {} // Do nothing
- }
-
- if (style.hasFontAttributes()) {
- typeface = createTypeface(style, typefaceAdapter)
- }
-
- if (style.localeList != null && style.localeList != LocaleList.current) {
- if (Build.VERSION.SDK_INT >= 24) {
- textLocales = style.localeList.toAndroidLocaleList()
- } else {
- val locale = if (style.localeList.isEmpty()) {
- Locale.current
- } else {
- style.localeList[0]
- }
- textLocale = locale.toJavaLocale()
- }
- }
-
- if (style.color.isSet) {
- color = style.color.toArgb()
- }
-
- when (style.letterSpacing.type) {
- TextUnitType.Em -> { letterSpacing = style.letterSpacing.value }
- TextUnitType.Sp -> {} // Sp will be handled by applying a span
- TextUnitType.Inherit -> {} // Do nothing
- }
-
- if (style.fontFeatureSettings != null && style.fontFeatureSettings != "") {
- fontFeatureSettings = style.fontFeatureSettings
- }
-
- if (style.textGeometricTransform != null &&
- style.textGeometricTransform != TextGeometricTransform.None
- ) {
- textScaleX *= style.textGeometricTransform.scaleX
- textSkewX += style.textGeometricTransform.skewX
- }
-
- if (style.shadow != null && style.shadow != Shadow.None) {
- setShadowLayer(
- style.shadow.blurRadius,
- style.shadow.offset.x,
- style.shadow.offset.y,
- style.shadow.color.toArgb()
- )
- }
-
- if (style.textDecoration != null && style.textDecoration != TextDecoration.None) {
- if (style.textDecoration.contains(TextDecoration.Underline)) {
- isUnderlineText = true
- }
- if (style.textDecoration.contains(TextDecoration.LineThrough)) {
- isStrikeThruText = true
- }
- }
-
- // When FontFamily is a custom font(FontListFontFamily), it needs to be applied on Paint to
- // compute empty paragraph height. Meanwhile, we also need a FontSpan for
- // FontStyle/FontWeight span to work correctly.
- // letterSpacing with unit Sp needs to be handled by span.
- // baselineShift and bgColor is reset in the Android Layout constructor,
- // therefore we cannot apply them on paint, have to use spans.
- return SpanStyle(
- fontFamily = if (style.fontFamily != null && style.fontFamily is FontListFontFamily) {
- style.fontFamily
- } else {
- null
- },
- letterSpacing = if (style.letterSpacing.type == TextUnitType.Sp &&
- style.letterSpacing.value != 0f) {
- style.letterSpacing
- } else {
- TextUnit.Inherit
- },
- background = if (style.background == Color.Transparent) {
- Color.Unset // No need to add transparent background for default text style.
- } else {
- style.background
- },
- baselineShift = if (style.baselineShift == BaselineShift.None) {
- null
- } else {
- style.baselineShift
- }
- )
-}
-
-private data class SpanRange(
- val span: Any,
- val start: Int,
- val end: Int,
- val priority: Int
-)
-
-// FontSpan and LetterSpacingSpanPx/LetterSpacingSpanSP has lower priority than normal spans. So
-// they have negative priority.
-// Meanwhile, FontSpan needs to be applied before LetterSpacing.
-private const val SPAN_PRIORITY_FONT = -1
-private const val SPAN_PRIORITY_LETTERSPACING = -2
@OptIn(InternalPlatformTextApi::class)
-internal fun createStyledText(
+internal fun createCharSequence(
text: String,
contextFontSize: Float,
lineHeight: TextUnit,
@@ -205,348 +46,16 @@
) {
return text
}
+
val spannableString = SpannableString(text)
- val lowPrioritySpans = ArrayList<SpanRange>()
- when (lineHeight.type) {
- TextUnitType.Sp -> with(density) {
- spannableString.setSpan(
- LineHeightSpan(ceil(lineHeight.toPx()).toInt()),
- 0,
- text.length,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- TextUnitType.Em -> {
- spannableString.setSpan(
- LineHeightSpan(ceil(lineHeight.value * contextFontSize).toInt()),
- 0,
- text.length,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- TextUnitType.Inherit -> {} // Do nothing
- }
+ spannableString.setLineHeight(lineHeight, contextFontSize, density)
- textIndent?.let { indent ->
- if (indent.firstLine == 0.sp && indent.restLine == 0.sp) return@let
- if (indent.firstLine.isInherit || indent.restLine.isInherit) return@let
- with(density) {
- val firstLine = when (indent.firstLine.type) {
- TextUnitType.Sp -> indent.firstLine.toPx()
- TextUnitType.Em -> indent.firstLine.value * contextFontSize
- TextUnitType.Inherit -> { 0f } // do nothing
- }
- val restLine = when (indent.restLine.type) {
- TextUnitType.Sp -> indent.restLine.toPx()
- TextUnitType.Em -> indent.restLine.value * contextFontSize
- TextUnitType.Inherit -> { 0f } // do nothing
- }
- spannableString.setSpan(
- LeadingMarginSpan.Standard(
- ceil(firstLine).toInt(),
- ceil(restLine).toInt()
- ),
- 0,
- text.length,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
+ spannableString.setTextIndent(textIndent, contextFontSize, density)
- for (spanStyle in spanStyles) {
- val start = spanStyle.start
- val end = spanStyle.end
- val style = spanStyle.item
+ spannableString.setSpanStyles(spanStyles, density, typefaceAdapter)
- if (start < 0 || start >= text.length || end <= start || end > text.length) continue
+ spannableString.setPlaceholders(placeholders, density)
- // Be aware that SuperscriptSpan needs to be applied before all other spans which
- // affect FontMetrics
- style.baselineShift?.let {
- spannableString.setSpan(
- BaselineShiftSpan(it.multiplier),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
-
- if (style.color.isSet) {
- spannableString.setSpan(
- ForegroundColorSpan(style.color.toArgb()),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
-
- style.textDecoration?.let {
- if (it.contains(TextDecoration.Underline)) {
- spannableString.setSpan(
- UnderlineSpan(),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- if (it.contains(TextDecoration.LineThrough)) {
- spannableString.setSpan(
- StrikethroughSpan(),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
-
- when (style.fontSize.type) {
- TextUnitType.Sp -> with(density) {
- spannableString.setSpan(
- AbsoluteSizeSpan(style.fontSize.toPx().roundToInt(), true),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- TextUnitType.Em -> {
- spannableString.setSpan(
- RelativeSizeSpan(style.fontSize.value),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- TextUnitType.Inherit -> {} // Do nothing
- }
-
- style.fontFeatureSettings?.let {
- spannableString.setSpan(
- FontFeatureSpan(it),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
-
- style.fontFamily?.let {
- lowPrioritySpans.add(
- SpanRange(
- FontSpan { weight, isItalic ->
- createTypeface(
- fontFamily = it,
- weight = weight,
- isItalic = isItalic,
- fontSynthesis = style.fontSynthesis,
- typefaceAdapter = typefaceAdapter
- )
- },
- start,
- end,
- SPAN_PRIORITY_FONT
- )
- )
- }
-
- if (style.fontStyle != null || style.fontWeight != null) {
- val weight = style.fontWeight?.weight ?: 0
- val fontStyle = when (style.fontStyle) {
- FontStyle.Normal -> FontWeightStyleSpan.STYLE_NORMAL
- FontStyle.Italic -> FontWeightStyleSpan.STYLE_ITALIC
- else -> FontWeightStyleSpan.STYLE_NONE
- }
- spannableString.setSpan(
- FontWeightStyleSpan(weight, fontStyle),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
-
- style.textGeometricTransform?.let {
- if (it.scaleX != 1.0f) {
- spannableString.setSpan(
- ScaleXSpan(it.scaleX),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
-
- style.textGeometricTransform?.let {
- if (it.skewX != 0f) {
- spannableString.setSpan(
- SkewXSpan(it.skewX),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
-
- when (style.letterSpacing.type) {
- TextUnitType.Sp -> with(density) {
- lowPrioritySpans.add(
- SpanRange(
- LetterSpacingSpanPx(style.letterSpacing.toPx()),
- start,
- end,
- SPAN_PRIORITY_LETTERSPACING
- )
- )
- }
- TextUnitType.Em -> {
- lowPrioritySpans.add(
- SpanRange(
- LetterSpacingSpanEm(style.letterSpacing.value),
- start,
- end,
- SPAN_PRIORITY_LETTERSPACING
- )
- )
- }
- TextUnitType.Inherit -> {}
- }
-
- style.localeList?.let {
- spannableString.setSpan(
- if (Build.VERSION.SDK_INT >= 24) {
- LocaleSpan(it.toAndroidLocaleList())
- } else {
- val locale = if (it.isEmpty()) Locale.current else it[0]
- LocaleSpan(locale.toJavaLocale())
- },
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- if (style.background.isSet) {
- spannableString.setSpan(
- BackgroundColorSpan(style.background.toArgb()),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- style.shadow?.let {
- spannableString.setSpan(
- ShadowSpan(it.color.toArgb(), it.offset.x, it.offset.y, it.blurRadius),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
- lowPrioritySpans.sortBy { it.priority }
- lowPrioritySpans.fastForEach { (span, start, end) ->
- spannableString.setSpan(
- span,
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
-
- placeholders.fastForEach {
- val (placeholder, start, end) = it
- with(placeholder) {
- spannableString.setSpan(
- PlaceholderSpan(
- width = width.value,
- widthUnit = width.spanUnit,
- height = height.value,
- heightUnit = height.spanUnit,
- pxPerSp = density.fontScale * density.density,
- verticalAlign = placeholderVerticalAlign.spanVerticalAlign
- ),
- start,
- end,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
- )
- }
- }
return spannableString
}
-
-/**
- * Returns true if this [SpanStyle] contains any font style attributes set.
- */
-private fun SpanStyle.hasFontAttributes(): Boolean {
- return fontFamily != null || fontStyle != null || fontWeight != null
-}
-
-private fun createTypeface(style: SpanStyle, typefaceAdapter: TypefaceAdapter): Typeface {
- return typefaceAdapter.create(
- fontFamily = style.fontFamily,
- fontWeight = style.fontWeight ?: FontWeight.Normal,
- fontStyle = style.fontStyle ?: FontStyle.Normal,
- fontSynthesis = style.fontSynthesis ?: FontSynthesis.All
- )
-}
-
-private fun createTypeface(
- fontFamily: FontFamily?,
- weight: Int,
- isItalic: Boolean,
- fontSynthesis: FontSynthesis?,
- typefaceAdapter: TypefaceAdapter
-): Typeface {
- val fontWeight = FontWeight(weight)
- val fontStyle = if (isItalic) FontStyle.Italic else FontStyle.Normal
-
- return typefaceAdapter.create(
- fontFamily = fontFamily,
- fontWeight = fontWeight,
- fontStyle = fontStyle,
- fontSynthesis = fontSynthesis ?: FontSynthesis.All
- )
-}
-
-/**
- * For a given [TextDirectionAlgorithm] return [TextLayout] constants for text direction
- * heuristics.
- */
-@OptIn(InternalPlatformTextApi::class)
-internal fun resolveTextDirectionHeuristics(
- textDirectionAlgorithm: TextDirectionAlgorithm
-): Int {
- return when (textDirectionAlgorithm) {
- TextDirectionAlgorithm.ContentOrLtr -> LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_LTR
- TextDirectionAlgorithm.ContentOrRtl -> LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_RTL
- TextDirectionAlgorithm.ForceLtr -> LayoutCompat.TEXT_DIRECTION_LTR
- TextDirectionAlgorithm.ForceRtl -> LayoutCompat.TEXT_DIRECTION_RTL
- }
-}
-
-private fun Locale.toJavaLocale(): JavaLocale = (platformLocale as AndroidLocale).javaLocale
-
-@RequiresApi(api = 24)
-private fun LocaleList.toAndroidLocaleList(): AndroidLocaleList =
- AndroidLocaleList(*map { it.toJavaLocale() }.toTypedArray())
-
-/** Helper function that converts [TextUnit.type] to the unit in [PlaceholderSpan]. */
-@OptIn(InternalPlatformTextApi::class)
-internal val TextUnit.spanUnit: Int
- get() = when (type) {
- TextUnitType.Sp -> PlaceholderSpan.UNIT_SP
- TextUnitType.Em -> PlaceholderSpan.UNIT_EM
- TextUnitType.Inherit -> PlaceholderSpan.UNIT_INHERIT
- }
-
-/**
- * Helper function that converts [PlaceholderVerticalAlign] to the verticalAlign in
- * [PlaceholderSpan].
- */
-@OptIn(InternalPlatformTextApi::class)
-internal val PlaceholderVerticalAlign.spanVerticalAlign: Int
- get() = when (this) {
- PlaceholderVerticalAlign.AboveBaseline -> PlaceholderSpan.ALIGN_ABOVE_BASELINE
- PlaceholderVerticalAlign.Top -> PlaceholderSpan.ALIGN_TOP
- PlaceholderVerticalAlign.Bottom -> PlaceholderSpan.ALIGN_BOTTOM
- PlaceholderVerticalAlign.Center -> PlaceholderSpan.ALIGN_CENTER
- PlaceholderVerticalAlign.TextTop -> PlaceholderSpan.ALIGN_TEXT_TOP
- PlaceholderVerticalAlign.TextBottom -> PlaceholderSpan.ALIGN_TEXT_BOTTOM
- PlaceholderVerticalAlign.TextCenter -> PlaceholderSpan.ALIGN_TEXT_CENTER
- }
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphIntrinsics.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphIntrinsics.kt
index 97cdc1d..f5a782c 100644
--- a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphIntrinsics.kt
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/AndroidParagraphIntrinsics.kt
@@ -25,6 +25,8 @@
import androidx.ui.text.SpanStyle
import androidx.ui.text.TextStyle
import androidx.ui.text.font.Font
+import androidx.ui.text.platform.extensions.applySpanStyle
+import androidx.ui.text.style.TextDirection
@OptIn(InternalPlatformTextApi::class)
internal class AndroidParagraphIntrinsics(
@@ -48,8 +50,8 @@
override val minIntrinsicWidth: Float
get() = layoutIntrinsics.minIntrinsicWidth
- internal val textDirectionHeuristic = style.textDirectionAlgorithm?.let {
- resolveTextDirectionHeuristics(style.textDirectionAlgorithm)
+ internal val textDirectionHeuristic = style.textDirection?.let {
+ resolveTextDirectionHeuristics(style.textDirection)
} ?: throw IllegalArgumentException(
"TextStyle.textDirectionAlgorithm should not be null"
)
@@ -61,7 +63,7 @@
density
)
- charSequence = createStyledText(
+ charSequence = createCharSequence(
text = text,
contextFontSize = textPaint.textSize,
lineHeight = style.lineHeight,
@@ -82,6 +84,22 @@
}
}
+/**
+ * For a given [TextDirection] return [TextLayout] constants for text direction
+ * heuristics.
+ */
+@OptIn(InternalPlatformTextApi::class)
+private fun resolveTextDirectionHeuristics(
+ textDirection: TextDirection
+): Int {
+ return when (textDirection) {
+ TextDirection.ContentOrLtr -> LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_LTR
+ TextDirection.ContentOrRtl -> LayoutCompat.TEXT_DIRECTION_FIRST_STRONG_RTL
+ TextDirection.ForceLtr -> LayoutCompat.TEXT_DIRECTION_LTR
+ TextDirection.ForceRtl -> LayoutCompat.TEXT_DIRECTION_RTL
+ }
+}
+
// TODO(b/159152328): temporary workaround for ui-desktop. remove when full support of MPP will be in-place
@Deprecated(
"Temporary workaround. Supposed to be used only in ui-desktop before MPP",
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/LocaleExtensions.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/LocaleExtensions.kt
new file mode 100644
index 0000000..061c10d
--- /dev/null
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/LocaleExtensions.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 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 androidx.ui.text.platform.extensions
+
+import androidx.annotation.RequiresApi
+import androidx.ui.intl.AndroidLocale
+import androidx.ui.intl.Locale
+import androidx.ui.intl.LocaleList
+
+internal fun Locale.toJavaLocale(): java.util.Locale = (platformLocale as AndroidLocale).javaLocale
+
+@RequiresApi(api = 24)
+internal fun LocaleList.toAndroidLocaleList(): android.os.LocaleList =
+ android.os.LocaleList(*map { it.toJavaLocale() }.toTypedArray())
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/PlaceholderExtensions.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/PlaceholderExtensions.kt
new file mode 100644
index 0000000..45a5674
--- /dev/null
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/PlaceholderExtensions.kt
@@ -0,0 +1,86 @@
+/*
+ * Copyright 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 androidx.ui.text.platform.extensions
+
+import android.text.Spannable
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.Placeholder
+import androidx.ui.text.PlaceholderVerticalAlign
+import androidx.ui.text.platform.InternalPlatformTextApi
+import androidx.ui.text.platform.style.PlaceholderSpan
+import androidx.ui.unit.Density
+import androidx.ui.unit.TextUnit
+import androidx.ui.unit.TextUnitType
+import androidx.ui.util.fastForEach
+
+internal fun Spannable.setPlaceholders(
+ placeholders: List<AnnotatedString.Range<Placeholder>>,
+ density: Density
+) {
+ placeholders.fastForEach {
+ val (placeholder, start, end) = it
+ setPlaceholder(placeholder, start, end, density)
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setPlaceholder(
+ placeholder: Placeholder,
+ start: Int,
+ end: Int,
+ density: Density
+) {
+ setSpan(
+ with(placeholder) {
+ PlaceholderSpan(
+ width = width.value,
+ widthUnit = width.spanUnit,
+ height = height.value,
+ heightUnit = height.spanUnit,
+ pxPerSp = density.fontScale * density.density,
+ verticalAlign = placeholderVerticalAlign.spanVerticalAlign
+ )
+ },
+ start,
+ end
+ )
+}
+
+/** Helper function that converts [TextUnit.type] to the unit in [PlaceholderSpan]. */
+@OptIn(InternalPlatformTextApi::class)
+private val TextUnit.spanUnit: Int
+ get() = when (type) {
+ TextUnitType.Sp -> PlaceholderSpan.UNIT_SP
+ TextUnitType.Em -> PlaceholderSpan.UNIT_EM
+ TextUnitType.Inherit -> PlaceholderSpan.UNIT_INHERIT
+ }
+
+/**
+ * Helper function that converts [PlaceholderVerticalAlign] to the verticalAlign in
+ * [PlaceholderSpan].
+ */
+@OptIn(InternalPlatformTextApi::class)
+private val PlaceholderVerticalAlign.spanVerticalAlign: Int
+ get() = when (this) {
+ PlaceholderVerticalAlign.AboveBaseline -> PlaceholderSpan.ALIGN_ABOVE_BASELINE
+ PlaceholderVerticalAlign.Top -> PlaceholderSpan.ALIGN_TOP
+ PlaceholderVerticalAlign.Bottom -> PlaceholderSpan.ALIGN_BOTTOM
+ PlaceholderVerticalAlign.Center -> PlaceholderSpan.ALIGN_CENTER
+ PlaceholderVerticalAlign.TextTop -> PlaceholderSpan.ALIGN_TEXT_TOP
+ PlaceholderVerticalAlign.TextBottom -> PlaceholderSpan.ALIGN_TEXT_BOTTOM
+ PlaceholderVerticalAlign.TextCenter -> PlaceholderSpan.ALIGN_TEXT_CENTER
+ }
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/SpannableExtensions.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/SpannableExtensions.kt
new file mode 100644
index 0000000..901dc00
--- /dev/null
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/SpannableExtensions.kt
@@ -0,0 +1,389 @@
+/*
+ * Copyright 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 androidx.ui.text.platform.extensions
+
+import android.graphics.Typeface
+import android.os.Build
+import android.text.Spannable
+import android.text.Spanned
+import android.text.style.AbsoluteSizeSpan
+import android.text.style.BackgroundColorSpan
+import android.text.style.ForegroundColorSpan
+import android.text.style.LeadingMarginSpan
+import android.text.style.LocaleSpan
+import android.text.style.MetricAffectingSpan
+import android.text.style.RelativeSizeSpan
+import android.text.style.ScaleXSpan
+import android.text.style.StrikethroughSpan
+import android.text.style.UnderlineSpan
+import androidx.ui.graphics.Color
+import androidx.ui.graphics.Shadow
+import androidx.ui.graphics.isSet
+import androidx.ui.graphics.toArgb
+import androidx.ui.intl.Locale
+import androidx.ui.intl.LocaleList
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.SpanStyle
+import androidx.ui.text.font.FontFamily
+import androidx.ui.text.font.FontStyle
+import androidx.ui.text.font.FontSynthesis
+import androidx.ui.text.font.FontWeight
+import androidx.ui.text.platform.InternalPlatformTextApi
+import androidx.ui.text.platform.TypefaceAdapter
+import androidx.ui.text.platform.style.BaselineShiftSpan
+import androidx.ui.text.platform.style.FontFeatureSpan
+import androidx.ui.text.platform.style.FontSpan
+import androidx.ui.text.platform.style.FontWeightStyleSpan
+import androidx.ui.text.platform.style.LetterSpacingSpanEm
+import androidx.ui.text.platform.style.LetterSpacingSpanPx
+import androidx.ui.text.platform.style.LineHeightSpan
+import androidx.ui.text.platform.style.ShadowSpan
+import androidx.ui.text.platform.style.SkewXSpan
+import androidx.ui.text.style.BaselineShift
+import androidx.ui.text.style.TextDecoration
+import androidx.ui.text.style.TextGeometricTransform
+import androidx.ui.text.style.TextIndent
+import androidx.ui.unit.Density
+import androidx.ui.unit.TextUnit
+import androidx.ui.unit.TextUnitType
+import androidx.ui.unit.sp
+import androidx.ui.util.fastForEach
+import kotlin.math.ceil
+import kotlin.math.roundToInt
+
+// FontSpan and LetterSpacingSpanPx/LetterSpacingSpanSP has lower priority than normal spans. So
+// they have negative priority.
+// Meanwhile, FontSpan needs to be applied before LetterSpacing.
+private const val SPAN_PRIORITY_FONT = -1
+private const val SPAN_PRIORITY_LETTERSPACING = -2
+
+private data class SpanRange(
+ val span: Any,
+ val start: Int,
+ val end: Int,
+ val priority: Int
+)
+
+internal fun Spannable.setSpan(span: Any, start: Int, end: Int) {
+ setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+}
+
+internal fun Spannable.setTextIndent(
+ textIndent: TextIndent?,
+ contextFontSize: Float,
+ density: Density
+) {
+ textIndent?.let { indent ->
+ if (indent.firstLine == 0.sp && indent.restLine == 0.sp) return@let
+ if (indent.firstLine.isInherit || indent.restLine.isInherit) return@let
+ with(density) {
+ val firstLine = when (indent.firstLine.type) {
+ TextUnitType.Sp -> indent.firstLine.toPx()
+ TextUnitType.Em -> indent.firstLine.value * contextFontSize
+ TextUnitType.Inherit -> {
+ 0f
+ } // do nothing
+ }
+ val restLine = when (indent.restLine.type) {
+ TextUnitType.Sp -> indent.restLine.toPx()
+ TextUnitType.Em -> indent.restLine.value * contextFontSize
+ TextUnitType.Inherit -> {
+ 0f
+ } // do nothing
+ }
+ setSpan(
+ LeadingMarginSpan.Standard(
+ ceil(firstLine).toInt(),
+ ceil(restLine).toInt()
+ ),
+ 0,
+ length
+ )
+ }
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+internal fun Spannable.setLineHeight(
+ lineHeight: TextUnit,
+ contextFontSize: Float,
+ density: Density
+) {
+ when (lineHeight.type) {
+ TextUnitType.Sp -> with(density) {
+ setSpan(
+ LineHeightSpan(ceil(lineHeight.toPx()).toInt()),
+ 0,
+ length
+ )
+ }
+ TextUnitType.Em -> {
+ setSpan(
+ LineHeightSpan(ceil(lineHeight.value * contextFontSize).toInt()),
+ 0,
+ length
+ )
+ }
+ TextUnitType.Inherit -> {
+ } // Do nothing
+ }
+}
+
+internal fun Spannable.setSpanStyles(
+ spanStyles: List<AnnotatedString.Range<SpanStyle>>,
+ density: Density,
+ typefaceAdapter: TypefaceAdapter
+) {
+ val lowPrioritySpans = ArrayList<SpanRange>()
+
+ for (spanStyleRange in spanStyles) {
+ val start = spanStyleRange.start
+ val end = spanStyleRange.end
+
+ if (start < 0 || start >= length || end <= start || end > length) continue
+
+ setSpanStyle(
+ spanStyleRange,
+ density,
+ lowPrioritySpans,
+ typefaceAdapter
+ )
+ }
+
+ lowPrioritySpans.sortBy { it.priority }
+ lowPrioritySpans.fastForEach { (span, start, end) ->
+ setSpan(span, start, end)
+ }
+}
+
+private fun Spannable.setSpanStyle(
+ spanStyleRange: AnnotatedString.Range<SpanStyle>,
+ density: Density,
+ lowPrioritySpans: ArrayList<SpanRange>,
+ typefaceAdapter: TypefaceAdapter
+) {
+ val start = spanStyleRange.start
+ val end = spanStyleRange.end
+ val style = spanStyleRange.item
+
+ // Be aware that SuperscriptSpan needs to be applied before all other spans which
+ // affect FontMetrics
+ setBaselineShift(style.baselineShift, start, end)
+
+ setColor(style.color, start, end)
+
+ setTextDecoration(style.textDecoration, start, end)
+
+ setFontSize(style.fontSize, density, start, end)
+
+ setFontFeatureSettings(style.fontFeatureSettings, start, end)
+
+ setFontStyleAndWeight(style.fontStyle, style.fontWeight, start, end)
+
+ setGeometricTransform(style.textGeometricTransform, start, end)
+
+ setLocaleList(style.localeList, start, end)
+
+ setBackground(style.background, start, end)
+
+ setShadow(style.shadow, start, end)
+
+ createFontFamilySpan(style.fontFamily, style.fontSynthesis, typefaceAdapter)?.let {
+ lowPrioritySpans.add(
+ SpanRange(it, start, end, SPAN_PRIORITY_FONT)
+ )
+ }
+
+ createLetterSpacingSpan(style.letterSpacing, density)?.let {
+ lowPrioritySpans.add(
+ SpanRange(it, start, end, SPAN_PRIORITY_LETTERSPACING)
+ )
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun createLetterSpacingSpan(
+ letterSpacing: TextUnit,
+ density: Density
+): MetricAffectingSpan? {
+ return when (letterSpacing.type) {
+ TextUnitType.Sp -> with(density) {
+ LetterSpacingSpanPx(letterSpacing.toPx())
+ }
+ TextUnitType.Em -> {
+ LetterSpacingSpanEm(letterSpacing.value)
+ }
+ TextUnitType.Inherit -> {
+ null
+ }
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun createFontFamilySpan(
+ fontFamily: FontFamily?,
+ fontSynthesis: FontSynthesis?,
+ typefaceAdapter: TypefaceAdapter
+): MetricAffectingSpan? {
+ return fontFamily?.let {
+ FontSpan { weight, isItalic ->
+ createTypeface(
+ fontFamily = it,
+ weight = weight,
+ isItalic = isItalic,
+ fontSynthesis = fontSynthesis,
+ typefaceAdapter = typefaceAdapter
+ )
+ }
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setShadow(shadow: Shadow?, start: Int, end: Int) {
+ shadow?.let {
+ setSpan(
+ ShadowSpan(it.color.toArgb(), it.offset.x, it.offset.y, it.blurRadius),
+ start,
+ end
+ )
+ }
+}
+
+private fun Spannable.setBackground(color: Color, start: Int, end: Int) {
+ if (color.isSet) {
+ setSpan(
+ BackgroundColorSpan(color.toArgb()),
+ start,
+ end
+ )
+ }
+}
+
+private fun Spannable.setLocaleList(localeList: LocaleList?, start: Int, end: Int) {
+ localeList?.let {
+ setSpan(
+ if (Build.VERSION.SDK_INT >= 24) {
+ LocaleSpan(it.toAndroidLocaleList())
+ } else {
+ val locale = if (it.isEmpty()) Locale.current else it[0]
+ LocaleSpan(locale.toJavaLocale())
+ },
+ start,
+ end
+ )
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setGeometricTransform(
+ textGeometricTransform: TextGeometricTransform?,
+ start: Int,
+ end: Int
+) {
+ textGeometricTransform?.let {
+ if (it.scaleX != 1.0f) {
+ setSpan(ScaleXSpan(it.scaleX), start, end)
+ }
+ if (it.skewX != 0f) {
+ setSpan(SkewXSpan(it.skewX), start, end)
+ }
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setFontStyleAndWeight(
+ fontStyle: FontStyle?,
+ fontWeight: FontWeight?,
+ start: Int,
+ end: Int
+) {
+ if (fontStyle != null || fontWeight != null) {
+ val weight = fontWeight?.weight ?: 0
+ val fontStyleMode = when (fontStyle) {
+ FontStyle.Normal -> FontWeightStyleSpan.STYLE_NORMAL
+ FontStyle.Italic -> FontWeightStyleSpan.STYLE_ITALIC
+ else -> FontWeightStyleSpan.STYLE_NONE
+ }
+ setSpan(FontWeightStyleSpan(weight, fontStyleMode), start, end)
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setFontFeatureSettings(fontFeatureSettings: String?, start: Int, end: Int) {
+ fontFeatureSettings?.let {
+ setSpan(FontFeatureSpan(it), start, end)
+ }
+}
+
+private fun Spannable.setFontSize(fontSize: TextUnit, density: Density, start: Int, end: Int) {
+ when (fontSize.type) {
+ TextUnitType.Sp -> with(density) {
+ setSpan(
+ AbsoluteSizeSpan(fontSize.toPx().roundToInt(), true),
+ start,
+ end
+ )
+ }
+ TextUnitType.Em -> {
+ setSpan(RelativeSizeSpan(fontSize.value), start, end)
+ }
+ TextUnitType.Inherit -> {
+ } // Do nothing
+ }
+}
+
+private fun Spannable.setTextDecoration(textDecoration: TextDecoration?, start: Int, end: Int) {
+ textDecoration?.let {
+ if (it.contains(TextDecoration.Underline)) {
+ setSpan(UnderlineSpan(), start, end)
+ }
+ if (it.contains(TextDecoration.LineThrough)) {
+ setSpan(StrikethroughSpan(), start, end)
+ }
+ }
+}
+
+private fun Spannable.setColor(color: Color, start: Int, end: Int) {
+ if (color.isSet) {
+ setSpan(ForegroundColorSpan(color.toArgb()), start, end)
+ }
+}
+
+@OptIn(InternalPlatformTextApi::class)
+private fun Spannable.setBaselineShift(baselineShift: BaselineShift?, start: Int, end: Int) {
+ baselineShift?.let {
+ setSpan(BaselineShiftSpan(it.multiplier), start, end)
+ }
+}
+
+private fun createTypeface(
+ fontFamily: FontFamily?,
+ weight: Int,
+ isItalic: Boolean,
+ fontSynthesis: FontSynthesis?,
+ typefaceAdapter: TypefaceAdapter
+): Typeface {
+ val fontWeight = FontWeight(weight)
+ val fontStyle = if (isItalic) FontStyle.Italic else FontStyle.Normal
+
+ return typefaceAdapter.create(
+ fontFamily = fontFamily,
+ fontWeight = fontWeight,
+ fontStyle = fontStyle,
+ fontSynthesis = fontSynthesis ?: FontSynthesis.All
+ )
+}
diff --git a/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/TextPaintExtensions.kt b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/TextPaintExtensions.kt
new file mode 100644
index 0000000..eb3d6f6
--- /dev/null
+++ b/ui/ui-text-core/src/androidMain/kotlin/androidx/ui/text/platform/extensions/TextPaintExtensions.kt
@@ -0,0 +1,157 @@
+/*
+ * Copyright 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 androidx.ui.text.platform.extensions
+
+import android.graphics.Typeface
+import android.os.Build
+import android.text.TextPaint
+import androidx.ui.graphics.Color
+import androidx.ui.graphics.Shadow
+import androidx.ui.graphics.isSet
+import androidx.ui.graphics.toArgb
+import androidx.ui.intl.Locale
+import androidx.ui.intl.LocaleList
+import androidx.ui.text.SpanStyle
+import androidx.ui.text.font.FontListFontFamily
+import androidx.ui.text.font.FontStyle
+import androidx.ui.text.font.FontSynthesis
+import androidx.ui.text.font.FontWeight
+import androidx.ui.text.platform.TypefaceAdapter
+import androidx.ui.text.style.BaselineShift
+import androidx.ui.text.style.TextDecoration
+import androidx.ui.text.style.TextGeometricTransform
+import androidx.ui.unit.Density
+import androidx.ui.unit.TextUnit
+import androidx.ui.unit.TextUnitType
+
+internal fun TextPaint.applySpanStyle(
+ style: SpanStyle,
+ typefaceAdapter: TypefaceAdapter,
+ density: Density
+): SpanStyle {
+ when (style.fontSize.type) {
+ TextUnitType.Sp -> with(density) {
+ textSize = style.fontSize.toPx()
+ }
+ TextUnitType.Em -> {
+ textSize *= style.fontSize.value
+ }
+ TextUnitType.Inherit -> {} // Do nothing
+ }
+
+ if (style.hasFontAttributes()) {
+ typeface = createTypeface(style, typefaceAdapter)
+ }
+
+ if (style.localeList != null && style.localeList != LocaleList.current) {
+ if (Build.VERSION.SDK_INT >= 24) {
+ textLocales = style.localeList.toAndroidLocaleList()
+ } else {
+ val locale = if (style.localeList.isEmpty()) {
+ Locale.current
+ } else {
+ style.localeList[0]
+ }
+ textLocale = locale.toJavaLocale()
+ }
+ }
+
+ if (style.color.isSet) {
+ color = style.color.toArgb()
+ }
+
+ when (style.letterSpacing.type) {
+ TextUnitType.Em -> { letterSpacing = style.letterSpacing.value }
+ TextUnitType.Sp -> {} // Sp will be handled by applying a span
+ TextUnitType.Inherit -> {} // Do nothing
+ }
+
+ if (style.fontFeatureSettings != null && style.fontFeatureSettings != "") {
+ fontFeatureSettings = style.fontFeatureSettings
+ }
+
+ if (style.textGeometricTransform != null &&
+ style.textGeometricTransform != TextGeometricTransform.None
+ ) {
+ textScaleX *= style.textGeometricTransform.scaleX
+ textSkewX += style.textGeometricTransform.skewX
+ }
+
+ if (style.shadow != null && style.shadow != Shadow.None) {
+ setShadowLayer(
+ style.shadow.blurRadius,
+ style.shadow.offset.x,
+ style.shadow.offset.y,
+ style.shadow.color.toArgb()
+ )
+ }
+
+ if (style.textDecoration != null && style.textDecoration != TextDecoration.None) {
+ if (style.textDecoration.contains(TextDecoration.Underline)) {
+ isUnderlineText = true
+ }
+ if (style.textDecoration.contains(TextDecoration.LineThrough)) {
+ isStrikeThruText = true
+ }
+ }
+
+ // When FontFamily is a custom font(FontListFontFamily), it needs to be applied on Paint to
+ // compute empty paragraph height. Meanwhile, we also need a FontSpan for
+ // FontStyle/FontWeight span to work correctly.
+ // letterSpacing with unit Sp needs to be handled by span.
+ // baselineShift and bgColor is reset in the Android Layout constructor,
+ // therefore we cannot apply them on paint, have to use spans.
+ return SpanStyle(
+ fontFamily = if (style.fontFamily != null && style.fontFamily is FontListFontFamily) {
+ style.fontFamily
+ } else {
+ null
+ },
+ letterSpacing = if (style.letterSpacing.type == TextUnitType.Sp &&
+ style.letterSpacing.value != 0f) {
+ style.letterSpacing
+ } else {
+ TextUnit.Inherit
+ },
+ background = if (style.background == Color.Transparent) {
+ Color.Unset // No need to add transparent background for default text style.
+ } else {
+ style.background
+ },
+ baselineShift = if (style.baselineShift == BaselineShift.None) {
+ null
+ } else {
+ style.baselineShift
+ }
+ )
+}
+
+/**
+ * Returns true if this [SpanStyle] contains any font style attributes set.
+ */
+private fun SpanStyle.hasFontAttributes(): Boolean {
+ return fontFamily != null || fontStyle != null || fontWeight != null
+}
+
+private fun createTypeface(style: SpanStyle, typefaceAdapter: TypefaceAdapter): Typeface {
+ return typefaceAdapter.create(
+ fontFamily = style.fontFamily,
+ fontWeight = style.fontWeight ?: FontWeight.Normal,
+ fontStyle = style.fontStyle ?: FontStyle.Normal,
+ fontSynthesis = style.fontSynthesis ?: FontSynthesis.All
+ )
+}
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraph.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraph.kt
index 61ac1fe..b7c4795 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraph.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraph.kt
@@ -20,7 +20,7 @@
import androidx.ui.graphics.Canvas
import androidx.ui.graphics.Path
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Density
import androidx.ui.geometry.Offset
import androidx.ui.util.fastForEach
@@ -58,7 +58,7 @@
* @param resourceLoader [Font.ResourceLoader] to be used to load the font given in [SpanStyle]s
*
* @see Placeholder
- * @throws IllegalArgumentException if [ParagraphStyle.textDirectionAlgorithm] is not set, or
+ * @throws IllegalArgumentException if [ParagraphStyle.textDirection] is not set, or
* any of the [placeholders] crosses paragraph boundary.
*/
constructor(
@@ -352,7 +352,7 @@
/**
* Get the text direction of the paragraph containing the given offset.
*/
- fun getParagraphDirection(offset: Int): TextDirection {
+ fun getParagraphDirection(offset: Int): ResolvedTextDirection {
requireIndexInRangeInclusiveEnd(offset)
val paragraphIndex = if (offset == annotatedString.length) {
@@ -369,7 +369,7 @@
/**
* Get the text direction of the character at the given offset.
*/
- fun getBidiRunDirection(offset: Int): TextDirection {
+ fun getBidiRunDirection(offset: Int): ResolvedTextDirection {
requireIndexInRangeInclusiveEnd(offset)
val paragraphIndex = if (offset == annotatedString.length) {
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
index 86a7c65..19fec3f 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
@@ -17,7 +17,7 @@
package androidx.ui.text
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.unit.Density
/**
@@ -34,7 +34,7 @@
* @see MultiParagraph
* @see Placeholder
*
- * @throws IllegalArgumentException if [ParagraphStyle.textDirectionAlgorithm] is not set, or any
+ * @throws IllegalArgumentException if [ParagraphStyle.textDirection] is not set, or any
* of the [placeholders] crosses paragraph boundary.
*/
class MultiParagraphIntrinsics(
@@ -64,7 +64,7 @@
internal val infoList: List<ParagraphIntrinsicInfo>
init {
- requireNotNull(style.textDirectionAlgorithm) {
+ requireNotNull(style.textDirection) {
"ParagraphStyle.textDirectionAlgorithm should not be null"
}
@@ -95,19 +95,19 @@
}
/**
- * if the [style] does `not` have [TextDirectionAlgorithm] set, it will return a new
- * [ParagraphStyle] where [TextDirectionAlgorithm] is set using the [defaultStyle]. Otherwise
+ * if the [style] does `not` have [TextDirection] set, it will return a new
+ * [ParagraphStyle] where [TextDirection] is set using the [defaultStyle]. Otherwise
* returns the same [style] object.
*
- * @param style ParagraphStyle to be checked for [TextDirectionAlgorithm]
+ * @param style ParagraphStyle to be checked for [TextDirection]
* @param defaultStyle [ParagraphStyle] passed to [MultiParagraphIntrinsics] as the main style
*/
private fun resolveTextDirection(
style: ParagraphStyle,
defaultStyle: ParagraphStyle
): ParagraphStyle {
- return style.textDirectionAlgorithm?.let { style } ?: style.copy(
- textDirectionAlgorithm = defaultStyle.textDirectionAlgorithm
+ return style.textDirection?.let { style } ?: style.copy(
+ textDirection = defaultStyle.textDirection
)
}
}
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/Paragraph.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/Paragraph.kt
index 8f03d73..69b3d4a 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/Paragraph.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/Paragraph.kt
@@ -20,7 +20,7 @@
import androidx.ui.graphics.Path
import androidx.ui.text.font.Font
import androidx.ui.text.platform.ActualParagraph
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Density
import androidx.ui.geometry.Offset
@@ -194,12 +194,12 @@
/**
* Get the text direction of the paragraph containing the given offset.
*/
- fun getParagraphDirection(offset: Int): TextDirection
+ fun getParagraphDirection(offset: Int): ResolvedTextDirection
/**
* Get the text direction of the character at the given offset.
*/
- fun getBidiRunDirection(offset: Int): TextDirection
+ fun getBidiRunDirection(offset: Int): ResolvedTextDirection
/** Returns the character offset closest to the given graphical position. */
fun getOffsetForPosition(position: Offset): Int
@@ -240,7 +240,7 @@
* @param density density of the device
* @param resourceLoader [Font.ResourceLoader] to be used to load the font given in [SpanStyle]s
*
- * @throws IllegalArgumentException if [ParagraphStyle.textDirectionAlgorithm] is not set
+ * @throws IllegalArgumentException if [ParagraphStyle.textDirection] is not set
*/
fun Paragraph(
text: String,
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphIntrinsics.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphIntrinsics.kt
index c6869e7..9a7a22b 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphIntrinsics.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphIntrinsics.kt
@@ -37,7 +37,7 @@
}
/**
- * @throws IllegalArgumentException if [ParagraphStyle.textDirectionAlgorithm] is not set
+ * @throws IllegalArgumentException if [ParagraphStyle.textDirection] is not set
*
* @see ParagraphIntrinsics
*/
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphStyle.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphStyle.kt
index acf74b7..8d9c6f9 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphStyle.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/ParagraphStyle.kt
@@ -19,7 +19,7 @@
import androidx.compose.Immutable
import androidx.compose.Stable
import androidx.ui.text.style.TextAlign
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextIndent
import androidx.ui.text.style.lerp
import androidx.ui.unit.TextUnit
@@ -35,7 +35,7 @@
* @sample androidx.ui.text.samples.ParagraphStyleAnnotatedStringsSample
*
* @param textAlign The alignment of the text within the lines of the paragraph.
- * @param textDirectionAlgorithm The algorithm to be used to resolve the final text direction:
+ * @param textDirection The algorithm to be used to resolve the final text direction:
* Left To Right or Right To Left.
* @param textIndent The indentation of the paragraph.
* @param lineHeight Line height for the [Paragraph] in [TextUnit] unit, e.g. SP or EM.
@@ -48,7 +48,7 @@
@Immutable
data class ParagraphStyle constructor(
val textAlign: TextAlign? = null,
- val textDirectionAlgorithm: TextDirectionAlgorithm? = null,
+ val textDirection: TextDirection? = null,
val lineHeight: TextUnit = TextUnit.Inherit,
val textIndent: TextIndent? = null
) {
@@ -79,7 +79,7 @@
},
textIndent = other.textIndent ?: this.textIndent,
textAlign = other.textAlign ?: this.textAlign,
- textDirectionAlgorithm = other.textDirectionAlgorithm ?: this.textDirectionAlgorithm
+ textDirection = other.textDirection ?: this.textDirection
)
}
@@ -107,9 +107,9 @@
fun lerp(start: ParagraphStyle, stop: ParagraphStyle, fraction: Float): ParagraphStyle {
return ParagraphStyle(
textAlign = lerpDiscrete(start.textAlign, stop.textAlign, fraction),
- textDirectionAlgorithm = lerpDiscrete(
- start.textDirectionAlgorithm,
- stop.textDirectionAlgorithm,
+ textDirection = lerpDiscrete(
+ start.textDirection,
+ stop.textDirection,
fraction
),
lineHeight = lerpTextUnitInheritable(start.lineHeight, stop.lineHeight, fraction),
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextLayoutResult.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextLayoutResult.kt
index 688fbcc..3c6962b 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextLayoutResult.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextLayoutResult.kt
@@ -22,7 +22,7 @@
import androidx.ui.geometry.Rect
import androidx.ui.graphics.Path
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.text.style.TextOverflow
import androidx.ui.unit.Density
import androidx.ui.unit.IntSize
@@ -217,7 +217,7 @@
* @param offset a character offset
* @return the paragraph direction
*/
- fun getParagraphDirection(offset: Int): TextDirection =
+ fun getParagraphDirection(offset: Int): ResolvedTextDirection =
multiParagraph.getParagraphDirection(offset)
/**
@@ -227,7 +227,8 @@
* @param offset a character offset
* @return the direction of the BiDi run of the given character offset.
*/
- fun getBidiRunDirection(offset: Int): TextDirection = multiParagraph.getBidiRunDirection(offset)
+ fun getBidiRunDirection(offset: Int): ResolvedTextDirection =
+ multiParagraph.getBidiRunDirection(offset)
/**
* Returns the character offset closest to the given graphical position.
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextRange.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextRange.kt
index c6d6794..ecb624c 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextRange.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextRange.kt
@@ -45,6 +45,11 @@
val collapsed: Boolean get() = start == end
/**
+ * Returns true if the start offset is larger than the end offset.
+ */
+ val reversed: Boolean get() = start > end
+
+ /**
* Returns the length of the range.
*/
val length: Int get() = max - min
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextStyle.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextStyle.kt
index c582a8f..d64fd36 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextStyle.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/TextStyle.kt
@@ -31,7 +31,7 @@
import androidx.ui.text.style.BaselineShift
import androidx.ui.text.style.TextAlign
import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextGeometricTransform
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.TextUnit
@@ -70,7 +70,7 @@
* @param textDecoration The decorations to paint on the text (e.g., an underline).
* @param shadow The shadow effect applied on the text.
* @param textAlign The alignment of the text within the lines of the paragraph.
- * @param textDirectionAlgorithm The algorithm to be used to resolve the final text and paragraph
+ * @param textDirection The algorithm to be used to resolve the final text and paragraph
* direction: Left To Right or Right To Left.
* @param textIndent The indentation of the paragraph.
* @param lineHeight Line height for the [Paragraph] in [TextUnit] unit, e.g. SP or EM.
@@ -96,7 +96,7 @@
val textDecoration: TextDecoration? = null,
val shadow: Shadow? = null,
val textAlign: TextAlign? = null,
- val textDirectionAlgorithm: TextDirectionAlgorithm? = null,
+ val textDirection: TextDirection? = null,
val lineHeight: TextUnit = TextUnit.Inherit,
val textIndent: TextIndent? = null
) {
@@ -116,7 +116,7 @@
textDecoration = spanStyle.textDecoration,
shadow = spanStyle.shadow,
textAlign = paragraphStyle.textAlign,
- textDirectionAlgorithm = paragraphStyle.textDirectionAlgorithm,
+ textDirection = paragraphStyle.textDirection,
lineHeight = paragraphStyle.lineHeight,
textIndent = paragraphStyle.textIndent
)
@@ -151,7 +151,7 @@
@Stable
fun toParagraphStyle(): ParagraphStyle = ParagraphStyle(
textAlign = textAlign,
- textDirectionAlgorithm = textDirectionAlgorithm,
+ textDirection = textDirection,
lineHeight = lineHeight,
textIndent = textIndent
)
@@ -275,23 +275,23 @@
textDecoration = style.textDecoration ?: TextDecoration.None,
shadow = style.shadow ?: Shadow.None,
textAlign = style.textAlign ?: TextAlign.Start,
- textDirectionAlgorithm = resolveTextDirectionAlgorithm(direction, style.textDirectionAlgorithm),
+ textDirection = resolveTextDirectionAlgorithm(direction, style.textDirection),
lineHeight = if (style.lineHeight.isInherit) DefaultLineHeight else style.lineHeight,
textIndent = style.textIndent ?: TextIndent.None
)
/**
- * If [textDirectionAlgorithm] is null returns a [TextDirectionAlgorithm] based on
+ * If [textDirection] is null returns a [TextDirection] based on
* [layoutDirection].
*/
@VisibleForTesting
internal fun resolveTextDirectionAlgorithm(
layoutDirection: LayoutDirection,
- textDirectionAlgorithm: TextDirectionAlgorithm?
-): TextDirectionAlgorithm {
- return textDirectionAlgorithm
+ textDirection: TextDirection?
+): TextDirection {
+ return textDirection
?: when (layoutDirection) {
- LayoutDirection.Ltr -> TextDirectionAlgorithm.ContentOrLtr
- LayoutDirection.Rtl -> TextDirectionAlgorithm.ContentOrRtl
+ LayoutDirection.Ltr -> TextDirection.ContentOrLtr
+ LayoutDirection.Rtl -> TextDirection.ContentOrRtl
}
}
\ No newline at end of file
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/ResolvedTextDirection.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/ResolvedTextDirection.kt
new file mode 100644
index 0000000..18da04c
--- /dev/null
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/ResolvedTextDirection.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2018 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 androidx.ui.text.style
+
+/**
+ * Describes the directionality of a text.
+ *
+ * @see TextDirection
+ * @see androidx.ui.text.Paragraph.getParagraphDirection
+ * @see androidx.ui.text.Paragraph.getBidiRunDirection
+ */
+enum class ResolvedTextDirection {
+ /**
+ * Represents the text that is left-to-right.
+ */
+ Ltr,
+
+ /**
+ * Represents the text that is right-to-left.
+ */
+ Rtl
+}
\ No newline at end of file
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextAlign.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextAlign.kt
index 37afdda..e34472b 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextAlign.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextAlign.kt
@@ -40,18 +40,18 @@
/**
* Align the text on the leading edge of the container.
*
- * For Left to Right text ([TextDirection.Ltr]), this is the left edge.
+ * For Left to Right text ([ResolvedTextDirection.Ltr]), this is the left edge.
*
- * For Right to Left text ([TextDirection.Rtl]), like Arabic, this is the right edge.
+ * For Right to Left text ([ResolvedTextDirection.Rtl]), like Arabic, this is the right edge.
*/
Start,
/**
* Align the text on the trailing edge of the container.
*
- * For Left to Right text text ([TextDirection.Ltr]), this is the right edge.
+ * For Left to Right text ([ResolvedTextDirection.Ltr]), this is the right edge.
*
- * For Right to Left text ([TextDirection.Rtl]), like Arabic, this is the left edge.
+ * For Right to Left text ([ResolvedTextDirection.Rtl]), like Arabic, this is the left edge.
*/
End
}
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirection.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirection.kt
index 49ea862..a81464c 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirection.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirection.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 The Android Open Source Project
+ * Copyright 2019 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.
@@ -13,23 +13,36 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package androidx.ui.text.style
/**
- * Describes the directionality of a text.
+ * Defines the algorithm to be used while determining the text direction.
*
- * @see TextDirectionAlgorithm
- * @see androidx.ui.text.Paragraph.getParagraphDirection
- * @see androidx.ui.text.Paragraph.getBidiRunDirection
+ * @see ResolvedTextDirection
*/
enum class TextDirection {
/**
- * Represents the text that is left-to-right.
+ * This value indicates that the text direction depends on the first strong directional
+ * character in the text according to the Unicode Bidirectional Algorithm. If no strong
+ * directional character is present, then Left to Right will be used as the default direction.
*/
- Ltr,
+ ContentOrLtr,
/**
- * Represents the text that is right-to-left.
+ * This value indicates that the text direction depends on the first strong directional
+ * character in the text according to the Unicode Bidirectional Algorithm. If no strong
+ * directional character is present, then Right to Left will be used as the default direction.
*/
- Rtl
-}
\ No newline at end of file
+ ContentOrRtl,
+
+ /**
+ * Always sets the text direction to be Left to Right.
+ */
+ ForceLtr,
+
+ /**
+ * Always sets the text direction to be Right to Left.
+ */
+ ForceRtl,
+}
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirectionAlgorithm.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirectionAlgorithm.kt
deleted file mode 100644
index c112062..0000000
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/style/TextDirectionAlgorithm.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2019 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 androidx.ui.text.style
-
-/**
- * Defines the algorithm to be used while determining the text direction.
- *
- * @see TextDirection
- */
-enum class TextDirectionAlgorithm {
- /**
- * This value indicates that the text direction depends on the first strong directional
- * character in the text according to the Unicode Bidirectional Algorithm. If no strong
- * directional character is present, then Left to Right will be used as the default direction.
- */
- ContentOrLtr,
-
- /**
- * This value indicates that the text direction depends on the first strong directional
- * character in the text according to the Unicode Bidirectional Algorithm. If no strong
- * directional character is present, then Right to Left will be used as the default direction.
- */
- ContentOrRtl,
-
- /**
- * Always sets the text direction to be Left to Right.
- */
- ForceLtr,
-
- /**
- * Always sets the text direction to be Right to Left.
- */
- ForceRtl,
-}
diff --git a/ui/ui-text-core/src/test/java/androidx/ui/text/ParagraphStyleTest.kt b/ui/ui-text-core/src/test/java/androidx/ui/text/ParagraphStyleTest.kt
index aaab067..b4fff7f 100644
--- a/ui/ui-text-core/src/test/java/androidx/ui/text/ParagraphStyleTest.kt
+++ b/ui/ui-text-core/src/test/java/androidx/ui/text/ParagraphStyleTest.kt
@@ -17,7 +17,7 @@
package androidx.ui.text
import androidx.ui.text.style.TextAlign
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextIndent
import androidx.ui.text.style.lerp
import androidx.ui.unit.TextUnit
@@ -68,34 +68,34 @@
@Test
fun `merge textDirectionAlgorithm uses other's textDirectionAlgorithm`() {
- val style = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
- val otherStyle = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
+ val style = ParagraphStyle(textDirection = TextDirection.ForceRtl)
+ val otherStyle = ParagraphStyle(textDirection = TextDirection.ForceLtr)
val newStyle = style.merge(otherStyle)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(
- otherStyle.textDirectionAlgorithm
+ assertThat(newStyle.textDirection).isEqualTo(
+ otherStyle.textDirection
)
}
@Test
fun `merge textDirectionAlgorithm other null, returns original`() {
- val style = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
- val otherStyle = ParagraphStyle(textDirectionAlgorithm = null)
+ val style = ParagraphStyle(textDirection = TextDirection.ForceRtl)
+ val otherStyle = ParagraphStyle(textDirection = null)
val newStyle = style.merge(otherStyle)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style.textDirection)
}
@Test
fun `merge textDirectionAlgorithm both null returns null`() {
- val style = ParagraphStyle(textDirectionAlgorithm = null)
- val otherStyle = ParagraphStyle(textDirectionAlgorithm = null)
+ val style = ParagraphStyle(textDirection = null)
+ val otherStyle = ParagraphStyle(textDirection = null)
val newStyle = style.merge(otherStyle)
- assertThat(newStyle.textDirectionAlgorithm).isNull()
+ assertThat(newStyle.textDirection).isNull()
}
@Test
@@ -162,7 +162,7 @@
fun `plus operator merges`() {
val style = ParagraphStyle(
textAlign = TextAlign.Center,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
) + ParagraphStyle(
textAlign = TextAlign.Justify,
lineHeight = 12.sp
@@ -171,7 +171,7 @@
assertThat(style).isEqualTo(
ParagraphStyle(
textAlign = TextAlign.Justify, // overridden by RHS
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl, // from LHS,
+ textDirection = TextDirection.ForceRtl, // from LHS,
lineHeight = 12.sp // from RHS
)
)
@@ -209,32 +209,32 @@
@Test
fun `lerp textDirectionAlgorithm with a null, b not null and t is smaller than half`() {
- val style1 = ParagraphStyle(textDirectionAlgorithm = null)
- val style2 = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = ParagraphStyle(textDirection = null)
+ val style2 = ParagraphStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.4f)
- assertThat(newStyle.textDirectionAlgorithm).isNull()
+ assertThat(newStyle.textDirection).isNull()
}
@Test
fun `lerp textDirectionAlgorithm with a and b are not Null and t is smaller than half`() {
- val style1 = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
- val style2 = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = ParagraphStyle(textDirection = TextDirection.ForceLtr)
+ val style2 = ParagraphStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.4f)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style1.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style1.textDirection)
}
@Test
fun `lerp textDirectionAlgorithm with a and b are not Null and t is larger than half`() {
- val style1 = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
- val style2 = ParagraphStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = ParagraphStyle(textDirection = TextDirection.ForceLtr)
+ val style2 = ParagraphStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.6f)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style2.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style2.textDirection)
}
@Test
diff --git a/ui/ui-text-core/src/test/java/androidx/ui/text/TextDelegateTest.kt b/ui/ui-text-core/src/test/java/androidx/ui/text/TextDelegateTest.kt
index 5f483d6..b21799d 100644
--- a/ui/ui-text-core/src/test/java/androidx/ui/text/TextDelegateTest.kt
+++ b/ui/ui-text-core/src/test/java/androidx/ui/text/TextDelegateTest.kt
@@ -18,7 +18,7 @@
import androidx.ui.core.LayoutDirection
import androidx.ui.text.font.Font
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextOverflow
import androidx.ui.unit.Density
import com.google.common.truth.Truth.assertThat
@@ -119,13 +119,13 @@
resolveTextDirectionAlgorithm(
LayoutDirection.Ltr,
null)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Rtl,
null)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrRtl)
+ ).isEqualTo(TextDirection.ContentOrRtl)
}
@Test
@@ -133,15 +133,15 @@
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Ltr,
- TextDirectionAlgorithm.ContentOrLtr
+ TextDirection.ContentOrLtr
)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveTextDirectionAlgorithm(LayoutDirection.Rtl,
- TextDirectionAlgorithm.ContentOrLtr
+ TextDirection.ContentOrLtr
)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).isEqualTo(TextDirection.ContentOrLtr)
}
@Test
@@ -149,16 +149,16 @@
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Ltr,
- TextDirectionAlgorithm.ContentOrRtl
+ TextDirection.ContentOrRtl
)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrRtl)
+ ).isEqualTo(TextDirection.ContentOrRtl)
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Rtl,
- TextDirectionAlgorithm.ContentOrRtl
+ TextDirection.ContentOrRtl
)
- ).isEqualTo(TextDirectionAlgorithm.ContentOrRtl)
+ ).isEqualTo(TextDirection.ContentOrRtl)
}
@Test
@@ -166,16 +166,16 @@
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Ltr,
- TextDirectionAlgorithm.ForceLtr
+ TextDirection.ForceLtr
)
- ).isEqualTo(TextDirectionAlgorithm.ForceLtr)
+ ).isEqualTo(TextDirection.ForceLtr)
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Rtl,
- TextDirectionAlgorithm.ForceLtr
+ TextDirection.ForceLtr
)
- ).isEqualTo(TextDirectionAlgorithm.ForceLtr)
+ ).isEqualTo(TextDirection.ForceLtr)
}
@Test
@@ -183,15 +183,15 @@
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Ltr,
- TextDirectionAlgorithm.ForceRtl
+ TextDirection.ForceRtl
)
- ).isEqualTo(TextDirectionAlgorithm.ForceRtl)
+ ).isEqualTo(TextDirection.ForceRtl)
assertThat(
resolveTextDirectionAlgorithm(
LayoutDirection.Rtl,
- TextDirectionAlgorithm.ForceRtl
+ TextDirection.ForceRtl
)
- ).isEqualTo(TextDirectionAlgorithm.ForceRtl)
+ ).isEqualTo(TextDirection.ForceRtl)
}
}
diff --git a/ui/ui-text-core/src/test/java/androidx/ui/text/TextRangeTest.kt b/ui/ui-text-core/src/test/java/androidx/ui/text/TextRangeTest.kt
index 7626f0f..cb4d375 100644
--- a/ui/ui-text-core/src/test/java/androidx/ui/text/TextRangeTest.kt
+++ b/ui/ui-text-core/src/test/java/androidx/ui/text/TextRangeTest.kt
@@ -61,6 +61,15 @@
}
@Test
+ fun test_range_reversed() {
+ assertThat(TextRange(0, 0).reversed).isFalse()
+ assertThat(TextRange(0, 1).reversed).isFalse()
+
+ assertThat(TextRange(1, 0).reversed).isTrue()
+ assertThat(TextRange(3, 2).reversed).isTrue()
+ }
+
+ @Test
fun test_intersects() {
// same values intersect
assertThat(TextRange(0, 1).intersects(TextRange(0, 1))).isTrue()
diff --git a/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleResolveDefaultsTest.kt b/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleResolveDefaultsTest.kt
index 798c5a7..2777026 100644
--- a/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleResolveDefaultsTest.kt
+++ b/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleResolveDefaultsTest.kt
@@ -27,7 +27,7 @@
import androidx.ui.text.style.BaselineShift
import androidx.ui.text.style.TextAlign
import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextGeometricTransform
import androidx.ui.text.style.TextIndent
import androidx.ui.unit.TextUnit
@@ -65,7 +65,7 @@
assertThat(it.textDecoration).isEqualTo(TextDecoration.None)
assertThat(it.shadow).isEqualTo(Shadow.None)
assertThat(it.textAlign).isEqualTo(TextAlign.Start)
- assertThat(it.textDirectionAlgorithm).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ assertThat(it.textDirection).isEqualTo(TextDirection.ContentOrLtr)
assertThat(it.lineHeight).isEqualTo(DefaultLineHeight)
assertThat(it.textIndent).isEqualTo(TextIndent.None)
}
@@ -244,93 +244,93 @@
fun test_use_provided_values_textDirectionAlgorithm_with_default_layoutDirection() {
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr),
+ TextStyle(textDirection = TextDirection.ForceLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl),
+ TextStyle(textDirection = TextDirection.ForceRtl),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceRtl)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceRtl)
}
@Test
fun test_use_provided_values_textDirectionAlgorithm_with_LTR_layoutDirection() {
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr),
+ TextStyle(textDirection = TextDirection.ForceLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl),
+ TextStyle(textDirection = TextDirection.ForceRtl),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceRtl)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceRtl)
}
@Test
fun test_use_provided_values_textDirectionAlgorithm_with_RTL_layoutDirection() {
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr),
+ TextStyle(textDirection = TextDirection.ForceLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr),
+ TextStyle(textDirection = TextDirection.ContentOrLtr),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
- TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl),
+ TextStyle(textDirection = TextDirection.ForceRtl),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ForceRtl)
+ ).textDirection
+ ).isEqualTo(TextDirection.ForceRtl)
}
@Test
@@ -339,14 +339,14 @@
resolveDefaults(
TextStyle(),
direction = LayoutDirection.Ltr
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrLtr)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrLtr)
assertThat(
resolveDefaults(
TextStyle(),
direction = LayoutDirection.Rtl
- ).textDirectionAlgorithm
- ).isEqualTo(TextDirectionAlgorithm.ContentOrRtl)
+ ).textDirection
+ ).isEqualTo(TextDirection.ContentOrRtl)
}
}
diff --git a/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleTest.kt b/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleTest.kt
index 6f16d48..655f7d2 100644
--- a/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleTest.kt
+++ b/ui/ui-text-core/src/test/java/androidx/ui/text/TextStyleTest.kt
@@ -29,7 +29,7 @@
import androidx.ui.text.style.BaselineShift
import androidx.ui.text.style.TextAlign
import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.text.style.TextGeometricTransform
import androidx.ui.text.style.TextIndent
import androidx.ui.text.style.lerp
@@ -415,30 +415,30 @@
@Test
fun `merge textDirectionAlgorithm uses other's textDirectionAlgorithm`() {
- val style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
- val otherStyle = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
+ val style = TextStyle(textDirection = TextDirection.ForceRtl)
+ val otherStyle = TextStyle(textDirection = TextDirection.ForceLtr)
val newStyle = style.merge(otherStyle)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(otherStyle.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(otherStyle.textDirection)
}
@Test
fun `merge textDirectionAlgorithm other null, returns original`() {
- val style = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style = TextStyle(textDirection = TextDirection.ForceRtl)
- val newStyle = style.merge(TextStyle(textDirectionAlgorithm = null))
+ val newStyle = style.merge(TextStyle(textDirection = null))
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style.textDirection)
}
@Test
fun `merge textDirectionAlgorithm both null returns null`() {
- val style = TextStyle(textDirectionAlgorithm = null)
+ val style = TextStyle(textDirection = null)
- val newStyle = style.merge(TextStyle(textDirectionAlgorithm = null))
+ val newStyle = style.merge(TextStyle(textDirection = null))
- assertThat(newStyle.textDirectionAlgorithm).isNull()
+ assertThat(newStyle.textDirection).isNull()
}
@Test
@@ -503,7 +503,7 @@
color = Color.Red,
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
) + TextStyle(
color = Color.Green,
fontFamily = FontFamily.Cursive,
@@ -517,7 +517,7 @@
fontWeight = FontWeight.Bold, // SpanStyle attribute from LHS,
fontFamily = FontFamily.Cursive, // SpanStyle attribute from RHS
textAlign = TextAlign.Justify, // ParagraphStyle attribute overridden by RHS
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl, // from LHS,
+ textDirection = TextDirection.ForceRtl, // from LHS,
lineHeight = 12.sp // ParagraphStyle attribute from RHS
)
)
@@ -549,7 +549,7 @@
val style = TextStyle(
color = Color.Red,
textAlign = TextAlign.Center,
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ textDirection = TextDirection.ForceRtl
) + ParagraphStyle(
textAlign = TextAlign.Justify,
lineHeight = 12.sp
@@ -559,7 +559,7 @@
TextStyle(
color = Color.Red, // SpanStyle from LHS
textAlign = TextAlign.Justify, // ParagraphStyle attribute overridden by RHS
- textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl, // from LHS,
+ textDirection = TextDirection.ForceRtl, // from LHS,
lineHeight = 12.sp // ParagraphStyle attribute from RHS
)
)
@@ -893,32 +893,32 @@
@Test
fun `lerp textDirectionAlgorithm with a null, b not null and t is smaller than half`() {
- val style1 = TextStyle(textDirectionAlgorithm = null)
- val style2 = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = TextStyle(textDirection = null)
+ val style2 = TextStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.4f)
- assertThat(newStyle.textDirectionAlgorithm).isNull()
+ assertThat(newStyle.textDirection).isNull()
}
@Test
fun `lerp textDirectionAlgorithm with a and b are not Null and t is smaller than half`() {
- val style1 = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
- val style2 = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = TextStyle(textDirection = TextDirection.ForceLtr)
+ val style2 = TextStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.4f)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style1.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style1.textDirection)
}
@Test
fun `lerp textDirectionAlgorithm with a and b are not Null and t is larger than half`() {
- val style1 = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceLtr)
- val style2 = TextStyle(textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl)
+ val style1 = TextStyle(textDirection = TextDirection.ForceLtr)
+ val style2 = TextStyle(textDirection = TextDirection.ForceRtl)
val newStyle = lerp(start = style1, stop = style2, fraction = 0.6f)
- assertThat(newStyle.textDirectionAlgorithm).isEqualTo(style2.textDirectionAlgorithm)
+ assertThat(newStyle.textDirection).isEqualTo(style2.textDirection)
}
@Test
@@ -1025,13 +1025,13 @@
@Test
fun `toParagraphStyle return attributes with correct values`() {
val textAlign = TextAlign.Justify
- val textDirectionAlgorithm = TextDirectionAlgorithm.ForceRtl
+ val textDirectionAlgorithm = TextDirection.ForceRtl
val lineHeight = 100.sp
val textIndent = TextIndent(firstLine = 20.sp, restLine = 40.sp)
val style = TextStyle(
textAlign = textAlign,
- textDirectionAlgorithm = textDirectionAlgorithm,
+ textDirection = textDirectionAlgorithm,
lineHeight = lineHeight,
textIndent = textIndent
)
@@ -1039,7 +1039,7 @@
assertThat(style.toParagraphStyle()).isEqualTo(
ParagraphStyle(
textAlign = textAlign,
- textDirectionAlgorithm = textDirectionAlgorithm,
+ textDirection = textDirectionAlgorithm,
lineHeight = lineHeight,
textIndent = textIndent
)
diff --git a/ui/ui-text/api/0.1.0-dev11.txt b/ui/ui-text/api/0.1.0-dev11.txt
index fec6233..a0aaf29 100644
--- a/ui/ui-text/api/0.1.0-dev11.txt
+++ b/ui/ui-text/api/0.1.0-dev11.txt
@@ -19,7 +19,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static error.NonExistentClass onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
diff --git a/ui/ui-text/api/0.1.0-dev12.txt b/ui/ui-text/api/0.1.0-dev12.txt
index c9a485d..d4bc81d 100644
--- a/ui/ui-text/api/0.1.0-dev12.txt
+++ b/ui/ui-text/api/0.1.0-dev12.txt
@@ -32,7 +32,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, int token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static int onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, int token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
@@ -53,7 +53,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/0.1.0-dev14.txt b/ui/ui-text/api/0.1.0-dev14.txt
index 1c3435f..fabf2d2f 100644
--- a/ui/ui-text/api/0.1.0-dev14.txt
+++ b/ui/ui-text/api/0.1.0-dev14.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/0.1.0-dev15.txt b/ui/ui-text/api/0.1.0-dev15.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/0.1.0-dev15.txt
+++ b/ui/ui-text/api/0.1.0-dev15.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/api/current.txt b/ui/ui-text/api/current.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/current.txt
+++ b/ui/ui-text/api/current.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-text/api/public_plus_experimental_0.1.0-dev11.txt
index fec6233..a0aaf29 100644
--- a/ui/ui-text/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-text/api/public_plus_experimental_0.1.0-dev11.txt
@@ -19,7 +19,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static error.NonExistentClass onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
diff --git a/ui/ui-text/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-text/api/public_plus_experimental_0.1.0-dev12.txt
index c9a485d..d4bc81d 100644
--- a/ui/ui-text/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-text/api/public_plus_experimental_0.1.0-dev12.txt
@@ -32,7 +32,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, int token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static int onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, int token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
@@ -53,7 +53,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-text/api/public_plus_experimental_0.1.0-dev14.txt
index 1c3435f..fabf2d2f 100644
--- a/ui/ui-text/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-text/api/public_plus_experimental_0.1.0-dev14.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/api/public_plus_experimental_current.txt b/ui/ui-text/api/public_plus_experimental_current.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/public_plus_experimental_current.txt
+++ b/ui/ui-text/api/public_plus_experimental_current.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/api/restricted_0.1.0-dev11.txt b/ui/ui-text/api/restricted_0.1.0-dev11.txt
index fec6233..a0aaf29 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev11.txt
@@ -19,7 +19,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static error.NonExistentClass onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, error.NonExistentClass token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
diff --git a/ui/ui-text/api/restricted_0.1.0-dev12.txt b/ui/ui-text/api/restricted_0.1.0-dev12.txt
index c9a485d..d4bc81d 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev12.txt
@@ -32,7 +32,7 @@
method public static void onBlur(androidx.ui.input.TextInputService? textInputService, int token, androidx.ui.input.EditProcessor editProcessor, boolean hasNextClient, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange);
method public static int onFocus(androidx.ui.input.TextInputService? textInputService, androidx.ui.input.EditorValue value, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.KeyboardType keyboardType, androidx.ui.input.ImeAction imeAction, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, kotlin.jvm.functions.Function1<? super androidx.ui.input.ImeAction,kotlin.Unit> onImeActionPerformed);
method public static void onRelease(androidx.ui.unit.PxPosition position, androidx.ui.text.TextLayoutResult textLayoutResult, androidx.ui.input.EditProcessor editProcessor, androidx.ui.input.OffsetMap offsetMap, kotlin.jvm.functions.Function1<? super androidx.ui.input.EditorValue,kotlin.Unit> onValueChange, androidx.ui.input.TextInputService? textInputService, int token, boolean hasFocus);
- field public static final androidx.ui.text.TextFieldDelegate.Companion! Companion;
+ field public static final androidx.ui.text.TextFieldDelegate.Companion Companion;
}
public static final class TextFieldDelegate.Companion {
@@ -53,7 +53,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/restricted_0.1.0-dev14.txt b/ui/ui-text/api/restricted_0.1.0-dev14.txt
index 1c3435f..fabf2d2f 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev14.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
diff --git a/ui/ui-text/api/restricted_0.1.0-dev15.txt b/ui/ui-text/api/restricted_0.1.0-dev15.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-text/api/restricted_0.1.0-dev15.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/api/restricted_current.txt b/ui/ui-text/api/restricted_current.txt
index 1c3435f..a9d41e4 100644
--- a/ui/ui-text/api/restricted_current.txt
+++ b/ui/ui-text/api/restricted_current.txt
@@ -33,7 +33,7 @@
method public androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> getSupportsInputMethods();
property public final androidx.ui.semantics.SemanticsPropertyKey<androidx.ui.input.ImeAction> ImeAction;
property public final androidx.ui.semantics.SemanticsPropertyKey<java.lang.Boolean> SupportsInputMethods;
- field public static final androidx.ui.text.TextSemanticsProperties! INSTANCE;
+ field public static final androidx.ui.text.TextSemanticsProperties INSTANCE;
}
public final class TextSemanticsPropertiesKt {
@@ -47,6 +47,12 @@
package androidx.ui.text.selection {
+ public final class MultiWidgetSelectionDelegateKt {
+ }
+
+ public final class TextFieldSelectionDelegateKt {
+ }
+
public final class TextSelectionDelegateKt {
}
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeVariousInputField.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeVariousInputField.kt
index 6dfcb6b..c18c442 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeVariousInputField.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeVariousInputField.kt
@@ -42,6 +42,7 @@
import androidx.ui.intl.LocaleList
import androidx.ui.savedinstancestate.savedInstanceState
import androidx.ui.text.TextLayoutResult
+import androidx.ui.text.TextRange
import androidx.ui.text.TextStyle
import androidx.ui.text.toUpperCase
import kotlin.math.roundToInt
@@ -247,7 +248,7 @@
Layout(
children = emptyContent(),
modifier = Modifier.drawBackground(Color.Red)
- ) { _, constraints, _ -> layout(4, constraints.maxHeight) {} }
+ ) { _, constraints -> layout(4, constraints.maxHeight) {} }
}
}
}
@@ -266,15 +267,23 @@
imeAction = imeAction,
visualTransformation = visualTransformation,
onValueChange = {
- state.value = TextFieldValue(
- onValueChange(state.value.text, it.text),
- it.selection
- )
+ val value = onValueChange(state.value.text, it.text)
+ val selection = it.selection.constrain(0, value.length)
+ state.value = TextFieldValue(value, selection)
},
textStyle = TextStyle(fontSize = fontSize8)
)
}
+private fun TextRange.constrain(minimumValue: Int, maximumValue: Int): TextRange {
+ val newStart = start.coerceIn(minimumValue, maximumValue)
+ val newEnd = end.coerceIn(minimumValue, maximumValue)
+ if (newStart != start || newEnd != end) {
+ return TextRange(newStart, newEnd)
+ }
+ return this
+}
+
@Composable
private fun HintEditText(hintText: @Composable () -> Unit) {
val state = savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
@@ -294,7 +303,7 @@
Layout({
inputField()
Box(Modifier.layoutId("hintText"), children = hintText)
- }) { measurable, constraints, _ ->
+ }) { measurable, constraints ->
val inputFieldPlacable =
measurable.first { it.id == "inputField" }.measure(constraints)
val hintTextPlacable = measurable.first { it.id == "hintText" }.measure(constraints)
@@ -319,7 +328,7 @@
onTextLayout = { layoutResult.value = it }
)
Box(Modifier.layoutId("cursor"), children = cursor)
- }) { measurable, constraints, _ ->
+ }) { measurable, constraints ->
val inputFieldPlacable =
measurable.first { it.id == "inputField" }.measure(constraints)
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
index c1a6ad0..8debecb 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
@@ -84,7 +84,7 @@
)
},
modifier = modifier
- ) { measurable, constraints, _ ->
+ ) { measurable, constraints ->
val p = measurable[0].measure(
Constraints(
@@ -120,7 +120,7 @@
)
},
modifier = modifier
- ) { measurable, constraints, _ ->
+ ) { measurable, constraints ->
val p = measurable[0].measure(
Constraints(
diff --git a/ui/ui-text/src/androidTest/java/androidx/ui/text/TextLayoutTest.kt b/ui/ui-text/src/androidTest/java/androidx/ui/text/TextLayoutTest.kt
index 114d67f8..0d3c011 100644
--- a/ui/ui-text/src/androidTest/java/androidx/ui/text/TextLayoutTest.kt
+++ b/ui/ui-text/src/androidTest/java/androidx/ui/text/TextLayoutTest.kt
@@ -124,11 +124,11 @@
}
Layout(
text,
- minIntrinsicWidthMeasureBlock = { _, _, _ -> 0 },
- minIntrinsicHeightMeasureBlock = { _, _, _ -> 0 },
- maxIntrinsicWidthMeasureBlock = { _, _, _ -> 0 },
- maxIntrinsicHeightMeasureBlock = { _, _, _ -> 0 }
- ) { measurables, _, _ ->
+ minIntrinsicWidthMeasureBlock = { _, _ -> 0 },
+ minIntrinsicHeightMeasureBlock = { _, _ -> 0 },
+ maxIntrinsicWidthMeasureBlock = { _, _ -> 0 },
+ maxIntrinsicHeightMeasureBlock = { _, _ -> 0 }
+ ) { measurables, _ ->
val textMeasurable = measurables.first()
// Min width.
assertThat(textWidth).isEqualTo(textMeasurable.minIntrinsicWidth(0))
@@ -160,7 +160,7 @@
val text = @Composable {
TestingText("aa")
}
- Layout(text) { measurables, _, _ ->
+ Layout(text) { measurables, _ ->
val placeable = measurables.first().measure(Constraints())
assertThat(placeable[FirstBaseline]).isNotNull()
assertThat(placeable[LastBaseline]).isNotNull()
@@ -168,7 +168,7 @@
layoutLatch.countDown()
layout(0, 0) {}
}
- Layout(text) { measurables, _, _ ->
+ Layout(text) { measurables, _ ->
val placeable = measurables.first().measure(Constraints(maxWidth = 0))
assertThat(placeable[FirstBaseline]).isNotNull()
assertThat(placeable[LastBaseline]).isNotNull()
@@ -189,7 +189,7 @@
val text = @Composable {
TestingText("aa", onTextLayout = callback)
}
- Layout(text) { measurables, _, _ ->
+ Layout(text) { measurables, _ ->
measurables.first().measure(Constraints())
layoutLatch.countDown()
layout(0, 0) {}
@@ -203,7 +203,7 @@
val runnable: Runnable = object : Runnable {
override fun run() {
activity.setContent {
- Layout(composable) { measurables, constraints, _ ->
+ Layout(composable) { measurables, constraints ->
val placeables = measurables.map {
it.measure(constraints.copy(minWidth = 0, minHeight = 0))
}
diff --git a/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextSelectionDelegateTest.kt b/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/MultiWidgetSelectionDelegateTest.kt
similarity index 89%
rename from ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextSelectionDelegateTest.kt
rename to ui/ui-text/src/androidTest/java/androidx/ui/text/selection/MultiWidgetSelectionDelegateTest.kt
index 280605b..d411857 100644
--- a/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextSelectionDelegateTest.kt
+++ b/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/MultiWidgetSelectionDelegateTest.kt
@@ -40,7 +40,7 @@
import androidx.ui.text.font.asFontFamily
import androidx.ui.text.font.font
import androidx.ui.text.font.test.R
-import androidx.ui.text.style.TextDirection
+import androidx.ui.text.style.ResolvedTextDirection
import androidx.ui.unit.Density
import androidx.ui.geometry.Offset
import androidx.ui.text.InternalTextApi
@@ -63,7 +63,7 @@
@OptIn(InternalTextApi::class)
@RunWith(JUnit4::class)
@SmallTest
-class TextSelectionDelegateTest {
+class MultiWidgetSelectionDelegateTest {
@get:Rule
val composeTestRule = AndroidComposeTestRule<ComponentActivity>()
@@ -88,13 +88,13 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
)
- val selectableInvalid = TextSelectionDelegate(
+ val selectableInvalid = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { null },
layoutResultCallback = { layoutResult }
@@ -105,12 +105,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectableInvalid
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectableInvalid
),
@@ -145,13 +145,13 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
)
- val selectableInvalid = TextSelectionDelegate(
+ val selectableInvalid = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { null },
layoutResultCallback = { layoutResult }
@@ -162,12 +162,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectableInvalid
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectableInvalid
),
@@ -203,7 +203,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -214,12 +214,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -257,7 +257,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -268,12 +268,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -311,7 +311,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -322,12 +322,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -365,7 +365,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -376,12 +376,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -421,7 +421,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -432,12 +432,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -477,7 +477,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -488,12 +488,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -531,7 +531,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -542,12 +542,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -585,7 +585,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -596,12 +596,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -639,7 +639,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -650,12 +650,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -693,7 +693,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -704,12 +704,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -749,7 +749,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -760,12 +760,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -805,7 +805,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -816,12 +816,12 @@
val selection = Selection(
start = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = startOffset,
selectable = selectable
),
end = Selection.AnchorInfo(
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
offset = endOffset,
selectable = selectable
),
@@ -851,7 +851,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -881,7 +881,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = {},
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -909,7 +909,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = mock(),
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -946,7 +946,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = mock(),
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -981,7 +981,7 @@
val layoutCoordinates = mock<LayoutCoordinates>()
whenever(layoutCoordinates.isAttached).thenReturn(true)
- val selectable = TextSelectionDelegate(
+ val selectable = MultiWidgetSelectionDelegate(
selectionRangeUpdate = mock(),
coordinatesCallback = { layoutCoordinates },
layoutResultCallback = { layoutResult }
@@ -1027,13 +1027,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(0)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo("hello".length)
}
}
@@ -1066,13 +1066,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(text.indexOf("\u05D3"))
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(text.indexOf("\u05D5") + 1)
}
}
@@ -1107,13 +1107,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(0)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(text.length)
}
assertThat(textSelectionInfo?.handlesCrossed).isFalse()
@@ -1150,13 +1150,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(text.length)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(0)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -1195,13 +1195,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(endOffset)
}
}
@@ -1245,13 +1245,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(endOffset)
}
}
@@ -1297,20 +1297,20 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(endOffset)
}
}
}
@Test
- fun testTextSelectionProcessor_single_widget_handles_crossed_ltr() {
+ fun getTextSelectionInfo_single_widget_handles_crossed_ltr() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1337,13 +1337,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(endOffset)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -1351,7 +1351,7 @@
}
@Test
- fun testTextSelectionProcessor_single_widget_handles_crossed_rtl() {
+ fun getTextSelectionInfo_single_widget_handles_crossed_rtl() {
with(defaultDensity) {
val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n"
val fontSize = 20.sp
@@ -1385,13 +1385,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(endOffset)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -1399,7 +1399,7 @@
}
@Test
- fun testTextSelectionProcessor_single_widget_handles_crossed_bidi() {
+ fun getTextSelectionInfo_single_widget_handles_crossed_bidi() {
with(defaultDensity) {
val textLtr = "Hello"
val textRtl = "\u05D0\u05D1\u05D2\u05D3\u05D4"
@@ -1435,13 +1435,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(endOffset)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -1449,7 +1449,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_ltr_drag_endHandle() {
+ fun getTextSelectionInfo_bound_to_one_character_ltr_drag_endHandle() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1466,12 +1466,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -1496,7 +1496,7 @@
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(oldStartOffset - 1)
}
@@ -1505,7 +1505,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_rtl_drag_endHandle() {
+ fun getTextSelectionInfo_bound_to_one_character_rtl_drag_endHandle() {
with(defaultDensity) {
val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n"
val fontSize = 20.sp
@@ -1522,12 +1522,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Rtl,
+ direction = ResolvedTextDirection.Rtl,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Rtl,
+ direction = ResolvedTextDirection.Rtl,
selectable = selectable
),
handlesCrossed = false
@@ -1558,7 +1558,7 @@
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Rtl)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Rtl)
assertThat(it.offset).isEqualTo(oldStartOffset - 1)
}
@@ -1567,7 +1567,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_not_crossed() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_not_crossed() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1584,12 +1584,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -1613,7 +1613,7 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo((oldEndOffset + 1))
}
@@ -1624,7 +1624,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_crossed() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_crossed() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1641,12 +1641,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -1670,7 +1670,7 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo((oldEndOffset - 1))
}
@@ -1681,7 +1681,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_not_crossed_bounded() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_not_crossed_bounded() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1698,12 +1698,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -1728,7 +1728,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_crossed_bounded() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_crossed_bounded() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1745,12 +1745,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -1775,7 +1775,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_not_crossed_boundary() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_not_crossed_boundary() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -1792,12 +1792,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -1824,7 +1824,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_startHandle_crossed_boundary() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_startHandle_crossed_boundary() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1841,12 +1841,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -1871,7 +1871,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_endHandle_crossed() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_endHandle_crossed() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1888,12 +1888,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -1919,7 +1919,7 @@
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo((oldStartOffset + 1))
}
@@ -1928,7 +1928,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_endHandle_not_crossed_bounded() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_endHandle_not_crossed_bounded() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1945,12 +1945,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -1975,7 +1975,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_endHandle_crossed_bounded() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_endHandle_crossed_bounded() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -1992,12 +1992,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -2022,7 +2022,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_endHandle_not_crossed_boundary() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_endHandle_not_crossed_boundary() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -2039,12 +2039,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = false
@@ -2071,7 +2071,7 @@
}
@Test
- fun testTextSelectionProcessor_bound_to_one_character_drag_endHandle_crossed_boundary() {
+ fun getTextSelectionInfo_bound_to_one_character_drag_endHandle_crossed_boundary() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -2088,12 +2088,12 @@
val previousSelection = Selection(
start = Selection.AnchorInfo(
offset = oldStartOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
end = Selection.AnchorInfo(
offset = oldEndOffset,
- direction = TextDirection.Ltr,
+ direction = ResolvedTextDirection.Ltr,
selectable = selectable
),
handlesCrossed = true
@@ -2120,7 +2120,7 @@
}
@Test
- fun testTextSelectionProcessor_cross_widget_not_contain_start() {
+ fun getTextSelectionInfo_cross_widget_not_contain_start() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
@@ -2147,20 +2147,20 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(0)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(endOffset)
}
}
}
@Test
- fun testTextSelectionProcessor_cross_widget_not_contain_end() {
+ fun getTextSelectionInfo_cross_widget_not_contain_end() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -2188,20 +2188,20 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(text.length)
}
}
}
@Test
- fun testTextSelectionProcessor_cross_widget_not_contain_start_handles_crossed() {
+ fun getTextSelectionInfo_cross_widget_not_contain_start_handles_crossed() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -2229,13 +2229,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(text.length)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(endOffset)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -2243,7 +2243,7 @@
}
@Test
- fun testTextSelectionProcessor_cross_widget_not_contain_end_handles_crossed() {
+ fun getTextSelectionInfo_cross_widget_not_contain_end_handles_crossed() {
with(defaultDensity) {
val text = "hello world"
val fontSize = 20.sp
@@ -2271,13 +2271,13 @@
assertThat(textSelectionInfo?.start).isNotNull()
textSelectionInfo?.start?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(startOffset)
}
assertThat(textSelectionInfo?.end).isNotNull()
textSelectionInfo?.end?.let {
- assertThat(it.direction).isEqualTo(TextDirection.Ltr)
+ assertThat(it.direction).isEqualTo(ResolvedTextDirection.Ltr)
assertThat(it.offset).isEqualTo(0)
}
assertThat(textSelectionInfo?.handlesCrossed).isTrue()
@@ -2285,7 +2285,7 @@
}
@Test
- fun testTextSelectionProcessor_not_selected() {
+ fun getTextSelectionInfo_not_selected() {
with(defaultDensity) {
val text = "hello world\n"
val fontSize = 20.sp
diff --git a/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextFieldSelectionDelegateTest.kt b/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextFieldSelectionDelegateTest.kt
new file mode 100644
index 0000000..6b6a5e5
--- /dev/null
+++ b/ui/ui-text/src/androidTest/java/androidx/ui/text/selection/TextFieldSelectionDelegateTest.kt
@@ -0,0 +1,372 @@
+/*
+ * Copyright 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 androidx.ui.text.selection
+
+import androidx.activity.ComponentActivity
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.ui.core.Constraints
+import androidx.ui.core.LayoutDirection
+import androidx.ui.test.android.AndroidComposeTestRule
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.InternalTextApi
+import androidx.ui.text.SpanStyle
+import androidx.ui.text.TextDelegate
+import androidx.ui.text.TextLayoutResult
+import androidx.ui.text.TextRange
+import androidx.ui.text.TextStyle
+import androidx.ui.text.font.asFontFamily
+import androidx.ui.unit.Density
+import androidx.ui.unit.TextUnit
+import androidx.ui.unit.sp
+import com.google.common.truth.Truth
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@OptIn(InternalTextApi::class)
+@RunWith(JUnit4::class)
+@SmallTest
+class TextFieldSelectionDelegateTest {
+ @get:Rule
+ val composeTestRule = AndroidComposeTestRule<ComponentActivity>()
+
+ private val fontFamily = BASIC_MEASURE_FONT.asFontFamily()
+ private val context = InstrumentationRegistry.getInstrumentation().context
+ private val defaultDensity = Density(density = 1f)
+ private val resourceLoader = TestFontResourceLoader(context)
+
+ @Test
+ fun getTextFieldSelection_long_press_select_word_ltr() {
+ val text = "hello world\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = 2,
+ rawEndOffset = 2,
+ previousSelection = null,
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(0)
+ Truth.assertThat(range.end).isEqualTo("hello".length)
+ }
+
+ @Test
+ fun getTextFieldSelection_long_press_select_word_rtl() {
+ val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = 5,
+ rawEndOffset = 5,
+ previousSelection = null,
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(text.indexOf("\u05D3"))
+ Truth.assertThat(range.end).isEqualTo(text.indexOf("\u05D5") + 1)
+ }
+
+ @Test
+ fun getTextFieldSelection_long_press_drag_handle_not_cross_select_word() {
+ val text = "hello world"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ val rawStartOffset = text.indexOf('e')
+ val rawEndOffset = text.indexOf('r')
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ previousSelection = null,
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(0)
+ Truth.assertThat(range.end).isEqualTo(text.length)
+ }
+
+ @Test
+ fun getTextFieldSelection_long_press_drag_handle_cross_select_word() {
+ val text = "hello world"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ val rawStartOffset = text.indexOf('r')
+ val rawEndOffset = text.indexOf('e')
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ previousSelection = null,
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(text.length)
+ Truth.assertThat(range.end).isEqualTo(0)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_select_range_ltr() {
+ val text = "hello world\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "llo wor" is selected.
+ val startOffset = text.indexOf("l")
+ val endOffset = text.indexOf("r") + 1
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_select_range_rtl() {
+ val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "\u05D1\u05D2 \u05D3" is selected.
+ val startOffset = text.indexOf("\u05D1")
+ val endOffset = text.indexOf("\u05D3") + 1
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_select_range_bidi() {
+ val textLtr = "Hello"
+ val textRtl = "\u05D0\u05D1\u05D2\u05D3\u05D4"
+ val text = textLtr + textRtl
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "llo"+"\u05D0\u05D1\u05D2" is selected
+ val startOffset = text.indexOf("l")
+ val endOffset = text.indexOf("\u05D2") + 1
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_handles_crossed_ltr() {
+ val text = "hello world\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "llo wor" is selected.
+ val startOffset = text.indexOf("r") + 1
+ val endOffset = text.indexOf("l")
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_handles_crossed_rtl() {
+ val text = "\u05D0\u05D1\u05D2 \u05D3\u05D4\u05D5\n"
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "\u05D1\u05D2 \u05D3" is selected.
+ val startOffset = text.indexOf("\u05D3") + 1
+ val endOffset = text.indexOf("\u05D1")
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ @Test
+ fun getTextFieldSelection_drag_handles_crossed_bidi() {
+ val textLtr = "Hello"
+ val textRtl = "\u05D0\u05D1\u05D2\u05D3\u05D4"
+ val text = textLtr + textRtl
+ val fontSize = 20.sp
+
+ val textLayoutResult = simpleTextLayout(
+ text = text,
+ fontSize = fontSize,
+ density = defaultDensity
+ )
+
+ // "llo"+"\u05D0\u05D1\u05D2" is selected
+ val startOffset = text.indexOf("\u05D2") + 1
+ val endOffset = text.indexOf("l")
+
+ // Act.
+ val range = getTextFieldSelection(
+ textLayoutResult = textLayoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = TextRange(0, 0),
+ previousHandlesCrossed = false,
+ isStartHandle = true,
+ wordBasedSelection = false
+ )
+
+ // Assert.
+ Truth.assertThat(range.start).isEqualTo(startOffset)
+ Truth.assertThat(range.end).isEqualTo(endOffset)
+ }
+
+ private fun simpleTextLayout(
+ text: String = "",
+ fontSize: TextUnit = TextUnit.Inherit,
+ density: Density
+ ): TextLayoutResult {
+ val spanStyle = SpanStyle(fontSize = fontSize, fontFamily = fontFamily)
+ val annotatedString = AnnotatedString(text, spanStyle)
+ return TextDelegate(
+ text = annotatedString,
+ style = TextStyle(),
+ density = density,
+ resourceLoader = resourceLoader
+ ).layout(Constraints(), LayoutDirection.Ltr)
+ }
+}
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/CoreText.kt b/ui/ui-text/src/main/java/androidx/ui/text/CoreText.kt
index 7d27dfa..31c9e93 100644
--- a/ui/ui-text/src/main/java/androidx/ui/text/CoreText.kt
+++ b/ui/ui-text/src/main/java/androidx/ui/text/CoreText.kt
@@ -17,12 +17,12 @@
package androidx.ui.text
import androidx.compose.Composable
-import androidx.compose.StructurallyEqual
import androidx.compose.getValue
import androidx.compose.mutableStateOf
import androidx.compose.onCommit
import androidx.compose.remember
import androidx.compose.setValue
+import androidx.compose.structuralEqualityPolicy
import androidx.ui.core.Constraints
import androidx.ui.core.DensityAmbient
import androidx.ui.core.FontLoaderAmbient
@@ -40,7 +40,7 @@
import androidx.ui.graphics.drawscope.drawCanvas
import androidx.ui.graphics.Paint
import androidx.ui.text.font.Font
-import androidx.ui.text.selection.TextSelectionDelegate
+import androidx.ui.text.selection.MultiWidgetSelectionDelegate
import androidx.ui.text.style.TextAlign
import androidx.ui.text.style.TextOverflow
import androidx.ui.unit.Density
@@ -152,11 +152,11 @@
state.previousGlobalPosition = newGlobalPosition
}
},
- minIntrinsicWidthMeasureBlock = { _, _, layoutDirection ->
+ minIntrinsicWidthMeasureBlock = { _, _ ->
state.textDelegate.layoutIntrinsics(layoutDirection)
state.textDelegate.minIntrinsicWidth
},
- minIntrinsicHeightMeasureBlock = { _, width, layoutDirection ->
+ minIntrinsicHeightMeasureBlock = { _, width ->
// given the width constraint, determine the min height
state.textDelegate
.layout(
@@ -169,11 +169,11 @@
layoutDirection
).size.height
},
- maxIntrinsicWidthMeasureBlock = { _, _, layoutDirection ->
+ maxIntrinsicWidthMeasureBlock = { _, _ ->
state.textDelegate.layoutIntrinsics(layoutDirection)
state.textDelegate.maxIntrinsicWidth
},
- maxIntrinsicHeightMeasureBlock = { _, width, layoutDirection ->
+ maxIntrinsicHeightMeasureBlock = { _, width ->
state.textDelegate
.layout(
Constraints(
@@ -185,7 +185,7 @@
layoutDirection
).size.height
}
- ) { measurables, constraints, layoutDirection ->
+ ) { measurables, constraints ->
val layoutResult = state.textDelegate.layout(
constraints,
layoutDirection,
@@ -242,7 +242,7 @@
val id: Selectable? =
selectionRegistrar?.let {
selectionRegistrar.subscribe(
- TextSelectionDelegate(
+ MultiWidgetSelectionDelegate(
selectionRangeUpdate = { state.selectionRange = it },
coordinatesCallback = { state.layoutCoordinates },
layoutResultCallback = { state.layoutResult }
@@ -265,7 +265,7 @@
inlineContents.fastForEach { (content, start, end) ->
Layout(
children = { content(text.subSequence(start, end).text) }
- ) { children, constrains, _ ->
+ ) { children, constrains ->
val placeables = children.map { it.measure(constrains) }
layout(width = constrains.maxWidth, height = constrains.maxHeight) {
placeables.fastForEach { it.place(0, 0) }
@@ -293,7 +293,7 @@
* This should be a state as every time we update the value during the selection we
* need to redraw it. state observation during onDraw callback will make it work.
*/
- var selectionRange by mutableStateOf<TextRange?>(null, StructurallyEqual)
+ var selectionRange by mutableStateOf<TextRange?>(null, structuralEqualityPolicy())
/** The last layout coordinates for the Text's layout, used by selection */
var layoutCoordinates: LayoutCoordinates? = null
/** The latest TextLayoutResult calculated in the measure block */
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/CoreTextField.kt b/ui/ui-text/src/main/java/androidx/ui/text/CoreTextField.kt
index 3856dd8..4c5a5a2 100644
--- a/ui/ui-text/src/main/java/androidx/ui/text/CoreTextField.kt
+++ b/ui/ui-text/src/main/java/androidx/ui/text/CoreTextField.kt
@@ -24,21 +24,26 @@
import androidx.compose.remember
import androidx.compose.setValue
import androidx.compose.state
+import androidx.ui.core.ClipboardManagerAmbient
import androidx.ui.core.DensityAmbient
import androidx.ui.core.FontLoaderAmbient
+import androidx.ui.core.HapticFeedBackAmbient
import androidx.ui.core.Layout
import androidx.ui.core.LayoutCoordinates
import androidx.ui.core.Modifier
import androidx.ui.core.TextInputServiceAmbient
import androidx.ui.core.drawBehind
-import androidx.ui.core.gesture.DragObserver
-import androidx.ui.core.gesture.dragGestureFilter
-import androidx.ui.core.gesture.pressIndicatorGestureFilter
import androidx.ui.core.onPositioned
import androidx.ui.core.focus.FocusModifier
import androidx.ui.core.focus.FocusState
import androidx.ui.core.focus.focusState
+import androidx.ui.core.gesture.DragObserver
+import androidx.ui.core.gesture.LongPressDragObserver
+import androidx.ui.core.gesture.dragGestureFilter
+import androidx.ui.core.gesture.longPressDragGestureFilter
+import androidx.ui.core.gesture.pressIndicatorGestureFilter
import androidx.ui.core.semantics.semantics
+import androidx.ui.geometry.Offset
import androidx.ui.graphics.drawscope.drawCanvas
import androidx.ui.input.EditProcessor
import androidx.ui.input.TextFieldValue
@@ -47,7 +52,8 @@
import androidx.ui.input.NO_SESSION
import androidx.ui.input.VisualTransformation
import androidx.ui.semantics.onClick
-import androidx.ui.geometry.Offset
+import androidx.ui.text.selection.TextFieldSelectionManager
+import androidx.ui.text.style.ResolvedTextDirection
import kotlin.math.roundToInt
@Suppress("DEPRECATION")
@@ -210,6 +216,15 @@
val focusModifier = chainedFocusModifier(modifier) ?: FocusModifier()
state.processor.onNewState(value, textInputService, state.inputSession)
+
+ val manager = remember { TextFieldSelectionManager() }
+ manager.offsetMap = offsetMap
+ manager.onValueChange = onValueChangeWrapper
+ manager.state = state
+ manager.value = value
+ manager.clipboardManager = ClipboardManagerAmbient.current
+ manager.hapticFeedBack = HapticFeedBackAmbient.current
+
val observer = textInputEventObserver(
focusModifier = focusModifier,
onPress = { },
@@ -262,19 +277,23 @@
onFocusChange(false)
},
onRelease = {
- state.layoutResult?.let { layoutResult ->
- TextFieldDelegate.onRelease(
- it,
- layoutResult,
- state.processor,
- offsetMap,
- onValueChangeWrapper,
- textInputService,
- state.inputSession,
- state.hasFocus
- )
+ if (state.selectionIsOn == false) {
+ state.layoutResult?.let { layoutResult ->
+ TextFieldDelegate.onRelease(
+ it,
+ layoutResult,
+ state.processor,
+ offsetMap,
+ onValueChangeWrapper,
+ textInputService,
+ state.inputSession,
+ state.hasFocus
+ )
+ }
}
},
+ state = state,
+ longPressDragObserver = manager.longPressDragObserver,
imeAction = imeAction
)
@@ -317,7 +336,7 @@
.plus(focusModifier)
.plus(drawModifier)
.plus(onPositionedModifier)
- ) { _, constraints, layoutDirection ->
+ ) { _, constraints ->
TextFieldDelegate.layout(
state.textDelegate,
constraints,
@@ -342,7 +361,7 @@
}
@OptIn(InternalTextApi::class)
-private class TextFieldState(
+internal class TextFieldState(
var textDelegate: TextDelegate
) {
val processor = EditProcessor()
@@ -356,6 +375,21 @@
var layoutCoordinates: LayoutCoordinates? = null
/** The latest TextLayoutResult calculated in the measure block */
var layoutResult: TextLayoutResult? = null
+ /**
+ * The gesture detector status, to indicate whether current status is selection or editing.
+ *
+ * In the editing mode, there is no selection shown, only cursor is shown. To enter the editing
+ * mode from selection mode, just tap on the screen.
+ *
+ * In the selection mode, there is no cursor shown, only selection is shown. To enter
+ * the selection mode, just long press on the screen. In this mode, finger movement on the
+ * screen changes selection instead of moving the cursor.
+ */
+ var selectionIsOn: Boolean = false
+ /** The [ResolvedTextDirection] for the start of the selection. */
+ var selectionStartDirection: ResolvedTextDirection = ResolvedTextDirection.Ltr
+ /** The [ResolvedTextDirection] for the end of the selection. */
+ var selectionEndDirection: ResolvedTextDirection = ResolvedTextDirection.Ltr
}
private fun chainedFocusModifier(modifier: Modifier): FocusModifier? {
@@ -377,6 +411,8 @@
onPress: (Offset) -> Unit,
onRelease: (Offset) -> Unit,
onFocus: () -> Unit,
+ state: TextFieldState,
+ longPressDragObserver: LongPressDragObserver,
onBlur: (hasNextClient: Boolean) -> Unit,
focusModifier: FocusModifier,
imeAction: ImeAction
@@ -414,13 +450,15 @@
})
val drag = Modifier.dragPositionGestureFilter(
onPress = {
+ state.selectionIsOn = false
if (focusModifier.focusState == FocusState.Focused) {
onPress(it)
} else {
doFocusIn()
}
},
- onRelease = onRelease
+ onRelease = onRelease,
+ longPressDragObserver = longPressDragObserver
)
return semantics.plus(drag)
@@ -467,7 +505,8 @@
@Composable
private fun Modifier.dragPositionGestureFilter(
onPress: (Offset) -> Unit,
- onRelease: (Offset) -> Unit
+ onRelease: (Offset) -> Unit,
+ longPressDragObserver: LongPressDragObserver
): Modifier {
val tracker = state { DragEventTracker() }
// TODO(shepshapard): PressIndicator doesn't seem to be the right thing to use here. It
@@ -489,4 +528,5 @@
return Offset.Zero
}
})
+ .longPressDragGestureFilter(longPressDragObserver)
}
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/TextFieldDelegate.kt b/ui/ui-text/src/main/java/androidx/ui/text/TextFieldDelegate.kt
index 4d79e72..29e7b91 100644
--- a/ui/ui-text/src/main/java/androidx/ui/text/TextFieldDelegate.kt
+++ b/ui/ui-text/src/main/java/androidx/ui/text/TextFieldDelegate.kt
@@ -39,7 +39,7 @@
import androidx.ui.input.TransformedText
import androidx.ui.text.font.Font
import androidx.ui.text.style.TextDecoration
-import androidx.ui.text.style.TextDirectionAlgorithm
+import androidx.ui.text.style.TextDirection
import androidx.ui.unit.Density
import kotlin.math.ceil
import kotlin.math.roundToInt
@@ -66,7 +66,7 @@
return Paragraph(
text = "H", // No meaning: just a reference character.
style = TextStyle(
- textDirectionAlgorithm = TextDirectionAlgorithm.ContentOrLtr
+ textDirection = TextDirection.ContentOrLtr
).merge(style),
spanStyles = listOf(),
maxLines = 1,
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/selection/MultiWidgetSelectionDelegate.kt b/ui/ui-text/src/main/java/androidx/ui/text/selection/MultiWidgetSelectionDelegate.kt
new file mode 100644
index 0000000..a06b97b
--- /dev/null
+++ b/ui/ui-text/src/main/java/androidx/ui/text/selection/MultiWidgetSelectionDelegate.kt
@@ -0,0 +1,304 @@
+/*
+ * Copyright 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 androidx.ui.text.selection
+
+import androidx.ui.core.LayoutCoordinates
+import androidx.ui.core.selection.Selectable
+import androidx.ui.core.selection.Selection
+import androidx.ui.geometry.Offset
+import androidx.ui.geometry.Rect
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.TextLayoutResult
+import androidx.ui.text.TextRange
+import kotlin.math.max
+
+internal class MultiWidgetSelectionDelegate(
+ private val selectionRangeUpdate: (TextRange?) -> Unit,
+ private val coordinatesCallback: () -> LayoutCoordinates?,
+ private val layoutResultCallback: () -> TextLayoutResult?
+) : Selectable {
+ override fun getSelection(
+ startPosition: Offset,
+ endPosition: Offset,
+ containerLayoutCoordinates: LayoutCoordinates,
+ longPress: Boolean,
+ previousSelection: Selection?,
+ isStartHandle: Boolean
+ ): Selection? {
+ val layoutCoordinates = getLayoutCoordinates() ?: return null
+ val textLayoutResult = layoutResultCallback() ?: return null
+
+ val relativePosition = containerLayoutCoordinates.childToLocal(
+ layoutCoordinates, Offset.Zero
+ )
+ val startPx = startPosition - relativePosition
+ val endPx = endPosition - relativePosition
+
+ val selection = getTextSelectionInfo(
+ textLayoutResult = textLayoutResult,
+ selectionCoordinates = Pair(startPx, endPx),
+ selectable = this,
+ wordBasedSelection = longPress,
+ previousSelection = previousSelection,
+ isStartHandle = isStartHandle
+ )
+
+ return if (selection == null) {
+ selectionRangeUpdate(null)
+ null
+ } else {
+ selectionRangeUpdate(selection.toTextRange())
+ return selection
+ }
+ }
+
+ override fun getHandlePosition(selection: Selection, isStartHandle: Boolean): Offset {
+ // Check if the selection handles's selectable is the current selectable.
+ if (isStartHandle && selection.start.selectable != this ||
+ !isStartHandle && selection.end.selectable != this) {
+ return Offset.Zero
+ }
+
+ if (getLayoutCoordinates() == null) return Offset.Zero
+
+ val textLayoutResult = layoutResultCallback() ?: return Offset.Zero
+ return getSelectionHandleCoordinates(
+ textLayoutResult = textLayoutResult,
+ offset = if (isStartHandle) selection.start.offset else selection.end.offset,
+ isStart = isStartHandle,
+ areHandlesCrossed = selection.handlesCrossed
+ )
+ }
+
+ override fun getLayoutCoordinates(): LayoutCoordinates? {
+ val layoutCoordinates = coordinatesCallback()
+ if (layoutCoordinates == null || !layoutCoordinates.isAttached) return null
+ return layoutCoordinates
+ }
+
+ override fun getText(): AnnotatedString {
+ val textLayoutResult = layoutResultCallback() ?: return AnnotatedString("")
+ return textLayoutResult.layoutInput.text
+ }
+
+ override fun getBoundingBox(offset: Int): Rect {
+ val textLayoutResult = layoutResultCallback() ?: return Rect.zero
+ return textLayoutResult.getBoundingBox(
+ offset.coerceIn(
+ 0,
+ textLayoutResult.layoutInput.text.text.length - 1
+ )
+ )
+ }
+}
+
+/**
+ * Return information about the current selection in the Text.
+ *
+ * @param textLayoutResult a result of the text layout.
+ * @param selectionCoordinates The positions of the start and end of the selection in Text
+ * composable coordinate system.
+ * @param selectable current [Selectable] for which the [Selection] is being calculated
+ * @param wordBasedSelection This flag is ignored if the selection handles are being dragged. If
+ * the selection is modified by long press and drag gesture, the result selection will be
+ * adjusted to word based selection. Otherwise, the selection will be adjusted to character based
+ * selection.
+ * @param previousSelection previous selection result
+ * @param isStartHandle true if the start handle is being dragged
+ *
+ * @return [Selection] of the current composable, or null if the composable is not selected.
+ */
+internal fun getTextSelectionInfo(
+ textLayoutResult: TextLayoutResult,
+ selectionCoordinates: Pair<Offset, Offset>,
+ selectable: Selectable,
+ wordBasedSelection: Boolean,
+ previousSelection: Selection? = null,
+ isStartHandle: Boolean = true
+): Selection? {
+ val startPosition = selectionCoordinates.first
+ val endPosition = selectionCoordinates.second
+
+ val bounds = Rect(
+ 0.0f,
+ 0.0f,
+ textLayoutResult.size.width.toFloat(),
+ textLayoutResult.size.height.toFloat()
+ )
+
+ val lastOffset = textLayoutResult.layoutInput.text.text.length
+
+ val containsWholeSelectionStart =
+ bounds.contains(Offset(startPosition.x, startPosition.y))
+
+ val containsWholeSelectionEnd =
+ bounds.contains(Offset(endPosition.x, endPosition.y))
+
+ val rawStartOffset =
+ if (containsWholeSelectionStart)
+ textLayoutResult.getOffsetForPosition(startPosition).coerceIn(0, lastOffset)
+ else
+ // If the composable is selected, the start offset cannot be -1 for this composable. If the
+ // final start offset is still -1, it means this composable is not selected.
+ -1
+ val rawEndOffset =
+ if (containsWholeSelectionEnd)
+ textLayoutResult.getOffsetForPosition(endPosition).coerceIn(0, lastOffset)
+ else
+ // If the composable is selected, the end offset cannot be -1 for this composable. If the
+ // final end offset is still -1, it means this composable is not selected.
+ -1
+
+ return getRefinedSelectionInfo(
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ containsWholeSelectionStart = containsWholeSelectionStart,
+ containsWholeSelectionEnd = containsWholeSelectionEnd,
+ startPosition = startPosition,
+ endPosition = endPosition,
+ bounds = bounds,
+ textLayoutResult = textLayoutResult,
+ lastOffset = lastOffset,
+ selectable = selectable,
+ wordBasedSelection = wordBasedSelection,
+ previousSelection = previousSelection,
+ isStartHandle = isStartHandle
+ )
+}
+
+/**
+ * This method refines the selection info by processing the initial raw selection info.
+ *
+ * @param rawStartOffset unprocessed start offset calculated directly from input position
+ * @param rawEndOffset unprocessed end offset calculated directly from input position
+ * @param containsWholeSelectionStart a flag to check if current composable contains the overall
+ * selection start
+ * @param containsWholeSelectionEnd a flag to check if current composable contains the overall
+ * selection end
+ * @param startPosition graphical position of the start of the selection, in composable's
+ * coordinates.
+ * @param endPosition graphical position of the end of the selection, in composable's coordinates.
+ * @param bounds bounds of the current composable
+ * @param textLayoutResult a result of the text layout.
+ * @param lastOffset last offset of the text. It's actually the length of the text.
+ * @param selectable current [Selectable] for which the [Selection] is being calculated
+ * @param wordBasedSelection This flag is ignored if the selection handles are being dragged. If
+ * the selection is modified by long press and drag gesture, the result selection will be
+ * adjusted to word based selection. Otherwise, the selection will be adjusted to character based
+ * selection.
+ * @param previousSelection previous selection result
+ * @param isStartHandle true if the start handle is being dragged
+ *
+ * @return [Selection] of the current composable, or null if the composable is not selected.
+ */
+private fun getRefinedSelectionInfo(
+ rawStartOffset: Int,
+ rawEndOffset: Int,
+ containsWholeSelectionStart: Boolean,
+ containsWholeSelectionEnd: Boolean,
+ startPosition: Offset,
+ endPosition: Offset,
+ bounds: Rect,
+ textLayoutResult: TextLayoutResult,
+ lastOffset: Int,
+ selectable: Selectable,
+ wordBasedSelection: Boolean,
+ previousSelection: Selection? = null,
+ isStartHandle: Boolean = true
+): Selection? {
+ val shouldProcessAsSinglecomposable =
+ containsWholeSelectionStart && containsWholeSelectionEnd
+
+ var (startOffset, endOffset, handlesCrossed) =
+ if (shouldProcessAsSinglecomposable) {
+ processAsSingleComposable(
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ previousSelection = previousSelection?.toTextRange(),
+ isStartHandle = isStartHandle,
+ lastOffset = lastOffset,
+ handlesCrossed = previousSelection?.handlesCrossed ?: false
+ )
+ } else {
+ processCrossComposable(
+ startPosition = startPosition,
+ endPosition = endPosition,
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ lastOffset = lastOffset,
+ bounds = bounds,
+ containsWholeSelectionStart = containsWholeSelectionStart,
+ containsWholeSelectionEnd = containsWholeSelectionEnd
+ )
+ }
+ // nothing is selected
+ if (startOffset == -1 && endOffset == -1) return null
+
+ // If under long press, update the selection to word-based.
+ if (wordBasedSelection) {
+ val (start, end) = updateWordBasedSelection(
+ textLayoutResult = textLayoutResult,
+ startOffset = startOffset,
+ endOffset = endOffset,
+ handlesCrossed = handlesCrossed
+ )
+ startOffset = start
+ endOffset = end
+ }
+
+ return getAssembledSelectionInfo(
+ startOffset = startOffset,
+ endOffset = endOffset,
+ handlesCrossed = handlesCrossed,
+ selectable = selectable,
+ textLayoutResult = textLayoutResult
+ )
+}
+
+/**
+ * [Selection] contains a lot of parameters. It looks more clean to assemble an object of this
+ * class in a separate method.
+ *
+ * @param startOffset the final start offset to be returned.
+ * @param endOffset the final end offset to be returned.
+ * @param handlesCrossed true if the selection handles are crossed
+ * @param selectable current [Selectable] for which the [Selection] is being calculated
+ * @param textLayoutResult a result of the text layout.
+ *
+ * @return an assembled object of [Selection] using the offered selection info.
+ */
+private fun getAssembledSelectionInfo(
+ startOffset: Int,
+ endOffset: Int,
+ handlesCrossed: Boolean,
+ selectable: Selectable,
+ textLayoutResult: TextLayoutResult
+): Selection {
+ return Selection(
+ start = Selection.AnchorInfo(
+ direction = textLayoutResult.getBidiRunDirection(startOffset),
+ offset = startOffset,
+ selectable = selectable
+ ),
+ end = Selection.AnchorInfo(
+ direction = textLayoutResult.getBidiRunDirection(max(endOffset - 1, 0)),
+ offset = endOffset,
+ selectable = selectable
+ ),
+ handlesCrossed = handlesCrossed
+ )
+}
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionDelegate.kt b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionDelegate.kt
new file mode 100644
index 0000000..7f6b907
--- /dev/null
+++ b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionDelegate.kt
@@ -0,0 +1,73 @@
+/*
+ * Copyright 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 androidx.ui.text.selection
+
+import androidx.ui.text.TextLayoutResult
+import androidx.ui.text.TextRange
+
+/**
+ * Return selection information for TextField.
+ *
+ * @param textLayoutResult a result of the text layout.
+ * @param rawStartOffset unprocessed start offset calculated directly from input position
+ * @param rawEndOffset unprocessed end offset calculated directly from input position
+ * @param previousSelection previous selection result
+ * @param previousHandlesCrossed true if the previous selection's handles are crossed
+ * @param isStartHandle true if the start handle is being dragged
+ * @param wordBasedSelection This flag is ignored if the selection handles are being dragged. If
+ * the selection is modified by long press and drag gesture, the result selection will be
+ * adjusted to word based selection. Otherwise, the selection will be adjusted to character based
+ * selection.
+ *
+ * @return selected text range.
+ */
+internal fun getTextFieldSelection(
+ textLayoutResult: TextLayoutResult?,
+ rawStartOffset: Int,
+ rawEndOffset: Int,
+ previousSelection: TextRange?,
+ previousHandlesCrossed: Boolean,
+ isStartHandle: Boolean,
+ wordBasedSelection: Boolean
+): TextRange {
+ textLayoutResult?.let {
+ val lastOffset = it.layoutInput.text.text.length
+
+ var (startOffset, endOffset, handlesCrossed) =
+ processAsSingleComposable(
+ rawStartOffset = rawStartOffset,
+ rawEndOffset = rawEndOffset,
+ previousSelection = previousSelection,
+ isStartHandle = isStartHandle,
+ lastOffset = lastOffset,
+ handlesCrossed = previousHandlesCrossed
+ )
+ if (wordBasedSelection) {
+ val (start, end) = updateWordBasedSelection(
+ textLayoutResult = it,
+ startOffset = startOffset,
+ endOffset = endOffset,
+ handlesCrossed = handlesCrossed
+ )
+ startOffset = start
+ endOffset = end
+ }
+
+ return TextRange(startOffset, endOffset)
+ }
+ return TextRange(0, 0)
+}
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionManager.kt b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionManager.kt
new file mode 100644
index 0000000..61de1f9
--- /dev/null
+++ b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextFieldSelectionManager.kt
@@ -0,0 +1,243 @@
+/*
+ * Copyright 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 androidx.ui.text.selection
+
+import androidx.ui.core.clipboard.ClipboardManager
+import androidx.ui.core.gesture.LongPressDragObserver
+import androidx.ui.core.hapticfeedback.HapticFeedback
+import androidx.ui.core.hapticfeedback.HapticFeedbackType
+import androidx.ui.geometry.Offset
+import androidx.ui.input.OffsetMap
+import androidx.ui.input.TextFieldValue
+import androidx.ui.input.getSelectedText
+import androidx.ui.input.getTextAfterSelection
+import androidx.ui.input.getTextBeforeSelection
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.TextFieldState
+import androidx.ui.text.TextRange
+import kotlin.math.max
+
+/**
+ * A bridge class between user interaction to the text field selection.
+ */
+internal class TextFieldSelectionManager {
+
+ /**
+ * The current [OffsetMap] for text field.
+ */
+ internal var offsetMap: OffsetMap = OffsetMap.identityOffsetMap
+
+ /**
+ * Called when the input service updates the values in [TextFieldValue].
+ */
+ internal var onValueChange: (TextFieldValue) -> Unit = {}
+
+ /**
+ * The current [TextFieldState].
+ */
+ internal var state: TextFieldState? = null
+
+ /**
+ * The current [TextFieldValue].
+ */
+ internal var value: TextFieldValue = TextFieldValue()
+
+ /**
+ * [ClipboardManager] to perform clipboard features.
+ */
+ internal var clipboardManager: ClipboardManager? = null
+
+ /**
+ * [HapticFeedback] handle to perform haptic feedback.
+ */
+ var hapticFeedBack: HapticFeedback? = null
+
+ /**
+ * The beginning position of the drag gesture. Every time a new drag gesture starts, it wil be
+ * recalculated.
+ */
+ private var dragBeginPosition = Offset.Zero
+
+ /**
+ * The total distance being dragged of the drag gesture. Every time a new drag gesture starts,
+ * it will be zeroed out.
+ */
+ private var dragTotalDistance = Offset.Zero
+
+ /**
+ * [LongPressDragObserver] for long press and drag to select in TextField.
+ */
+ internal val longPressDragObserver = object : LongPressDragObserver {
+ override fun onLongPress(pxPosition: Offset) {
+ // selection never started
+ if (value.text == "") return
+ setSelectionStatus(true)
+ state?.layoutResult?.let { layoutResult ->
+ val offset = offsetMap.transformedToOriginal(
+ layoutResult.getOffsetForPosition(pxPosition)
+ )
+ updateSelection(
+ value = value,
+ startOffset = offset,
+ endOffset = offset,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+ }
+ dragBeginPosition = pxPosition
+ dragTotalDistance = Offset.Zero
+ }
+
+ override fun onDrag(dragDistance: Offset): Offset {
+ // selection never started, did not consume any drag
+ if (value.text == "") return Offset.Zero
+
+ dragTotalDistance += dragDistance
+ state?.layoutResult?.let { layoutResult ->
+ val startOffset = layoutResult.getOffsetForPosition(dragBeginPosition)
+ val endOffset =
+ layoutResult.getOffsetForPosition(dragBeginPosition + dragTotalDistance)
+ updateSelection(
+ value = value,
+ startOffset = startOffset,
+ endOffset = endOffset,
+ isStartHandle = true,
+ wordBasedSelection = true
+ )
+ }
+ return dragDistance
+ }
+ }
+
+ /**
+ * The method for copying text.
+ *
+ * If there is no selection, return.
+ * Put the selected text into the [ClipboardManager], and cancel the selection.
+ * The text in the text field should be unchanged.
+ * The new cursor offset should be at the end of the previous selected text.
+ */
+ internal fun copy() {
+ if (value.selection.collapsed) return
+
+ clipboardManager?.setText(AnnotatedString(value.getSelectedText()))
+
+ val newCursorOffset = value.selection.end
+ val newValue = TextFieldValue(
+ text = value.text,
+ selection = TextRange(newCursorOffset, newCursorOffset)
+ )
+ onValueChange(newValue)
+ updateTextDirections(TextRange(newCursorOffset, newCursorOffset))
+ setSelectionStatus(false)
+ }
+
+ /**
+ * The method for pasting text.
+ *
+ * Get the text from [ClipboardManager]. If it's null, return.
+ * The new text should be the text before the selected text, plus the text from the
+ * [ClipboardManager], and plus the text after the selected text.
+ * Then the selection should collapse, and the new cursor offset should be the end of the
+ * newly added text.
+ */
+ internal fun paste() {
+ val text = clipboardManager?.getText()?.text ?: return
+
+ val newText = value.getTextBeforeSelection(value.text.length) +
+ text +
+ value.getTextAfterSelection(value.text.length)
+ val newCursorOffset = value.selection.start + text.length
+
+ val newValue = TextFieldValue(
+ text = newText,
+ selection = TextRange(newCursorOffset, newCursorOffset)
+ )
+ onValueChange(newValue)
+ updateTextDirections(TextRange(newCursorOffset, newCursorOffset))
+ setSelectionStatus(false)
+ }
+
+ /**
+ * The method for cutting text.
+ *
+ * If there is no selection, return.
+ * Put the selected text into the [ClipboardManager].
+ * The new text should be the text before the selection plus the text after the selection.
+ * And the new cursor offset should be between the text before the selection, and the text
+ * after the selection.
+ */
+ internal fun cut() {
+ if (value.selection.collapsed) return
+
+ clipboardManager?.setText(AnnotatedString(value.getSelectedText()))
+
+ val newText = value.getTextBeforeSelection(value.text.length) +
+ value.getTextAfterSelection(value.text.length)
+ val newCursorOffset = value.selection.start
+
+ val newValue = TextFieldValue(
+ text = newText,
+ selection = TextRange(newCursorOffset, newCursorOffset)
+ )
+ onValueChange(newValue)
+ updateTextDirections(TextRange(newCursorOffset, newCursorOffset))
+ setSelectionStatus(false)
+ }
+
+ private fun updateSelection(
+ value: TextFieldValue,
+ startOffset: Int,
+ endOffset: Int,
+ isStartHandle: Boolean,
+ wordBasedSelection: Boolean
+ ) {
+ val range = getTextFieldSelection(
+ textLayoutResult = state?.layoutResult,
+ rawStartOffset = startOffset,
+ rawEndOffset = endOffset,
+ previousSelection = if (value.selection.collapsed) null else value.selection,
+ previousHandlesCrossed = value.selection.reversed,
+ isStartHandle = isStartHandle,
+ wordBasedSelection = wordBasedSelection
+ )
+
+ if (range == value.selection) return
+
+ hapticFeedBack?.performHapticFeedback(HapticFeedbackType.TextHandleMove)
+
+ val newValue = TextFieldValue(
+ text = value.text,
+ selection = range
+ )
+ onValueChange(newValue)
+ updateTextDirections(range)
+ }
+
+ private fun updateTextDirections(range: TextRange) {
+ state?.let {
+ it.selectionStartDirection = it.layoutResult!!.getBidiRunDirection(range.start)
+ it.selectionEndDirection = it.layoutResult!!.getBidiRunDirection(max(range.end - 1, 0))
+ }
+ }
+
+ private fun setSelectionStatus(on: Boolean) {
+ state?.let {
+ it.selectionIsOn = on
+ }
+ }
+}
diff --git a/ui/ui-text/src/main/java/androidx/ui/text/selection/TextSelectionDelegate.kt b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextSelectionDelegate.kt
index 5c56458..c26690a 100644
--- a/ui/ui-text/src/main/java/androidx/ui/text/selection/TextSelectionDelegate.kt
+++ b/ui/ui-text/src/main/java/androidx/ui/text/selection/TextSelectionDelegate.kt
@@ -16,292 +16,12 @@
package androidx.ui.text.selection
-import androidx.ui.core.LayoutCoordinates
-import androidx.ui.core.selection.Selectable
-import androidx.ui.core.selection.Selection
import androidx.ui.geometry.Rect
-import androidx.ui.text.AnnotatedString
import androidx.ui.text.TextLayoutResult
import androidx.ui.text.TextRange
import androidx.ui.geometry.Offset
import kotlin.math.max
-internal class TextSelectionDelegate(
- private val selectionRangeUpdate: (TextRange?) -> Unit,
- private val coordinatesCallback: () -> LayoutCoordinates?,
- private val layoutResultCallback: () -> TextLayoutResult?
-) : Selectable {
- override fun getSelection(
- startPosition: Offset,
- endPosition: Offset,
- containerLayoutCoordinates: LayoutCoordinates,
- longPress: Boolean,
- previousSelection: Selection?,
- isStartHandle: Boolean
- ): Selection? {
- val layoutCoordinates = getLayoutCoordinates() ?: return null
- val textLayoutResult = layoutResultCallback() ?: return null
-
- val relativePosition = containerLayoutCoordinates.childToLocal(
- layoutCoordinates, Offset.Zero
- )
- val startPx = startPosition - relativePosition
- val endPx = endPosition - relativePosition
-
- val selection = getTextSelectionInfo(
- textLayoutResult = textLayoutResult,
- selectionCoordinates = Pair(startPx, endPx),
- selectable = this,
- wordBasedSelection = longPress,
- previousSelection = previousSelection,
- isStartHandle = isStartHandle
- )
-
- return if (selection == null) {
- selectionRangeUpdate(null)
- null
- } else {
- selectionRangeUpdate(selection.toTextRange())
- return selection
- }
- }
-
- override fun getHandlePosition(selection: Selection, isStartHandle: Boolean): Offset {
- // Check if the selection handles's selectable is the current selectable.
- if (isStartHandle && selection.start.selectable != this ||
- !isStartHandle && selection.end.selectable != this) {
- return Offset.Zero
- }
-
- if (getLayoutCoordinates() == null) return Offset.Zero
-
- val textLayoutResult = layoutResultCallback() ?: return Offset.Zero
- return getSelectionHandleCoordinates(
- textLayoutResult = textLayoutResult,
- offset = if (isStartHandle) selection.start.offset else selection.end.offset,
- isStart = isStartHandle,
- areHandlesCrossed = selection.handlesCrossed
- )
- }
-
- override fun getLayoutCoordinates(): LayoutCoordinates? {
- val layoutCoordinates = coordinatesCallback()
- if (layoutCoordinates == null || !layoutCoordinates.isAttached) return null
- return layoutCoordinates
- }
-
- override fun getText(): AnnotatedString {
- val textLayoutResult = layoutResultCallback() ?: return AnnotatedString("")
- return textLayoutResult.layoutInput.text
- }
-
- override fun getBoundingBox(offset: Int): Rect {
- val textLayoutResult = layoutResultCallback() ?: return Rect.zero
- return textLayoutResult.getBoundingBox(
- offset.coerceIn(
- 0,
- textLayoutResult.layoutInput.text.text.length - 1
- )
- )
- }
-}
-
-/**
- * Return information about the current selection in the Text.
- *
- * @param textLayoutResult a result of the text layout.
- * @param selectionCoordinates The positions of the start and end of the selection in Text
- * composable coordinate system.
- * @param selectable current [Selectable] for which the [Selection] is being calculated
- * @param wordBasedSelection This flag is ignored if the selection handles are being dragged. If
- * the selection is modified by long press and drag gesture, the result selection will be
- * adjusted to word based selection. Otherwise, the selection will be adjusted to character based
- * selection.
- * @param previousSelection previous selection result
- * @param isStartHandle true if the start handle is being dragged
- *
- * @return [Selection] of the current composable, or null if the composable is not selected.
- */
-internal fun getTextSelectionInfo(
- textLayoutResult: TextLayoutResult,
- selectionCoordinates: Pair<Offset, Offset>,
- selectable: Selectable,
- wordBasedSelection: Boolean,
- previousSelection: Selection? = null,
- isStartHandle: Boolean = true
-): Selection? {
- val startPosition = selectionCoordinates.first
- val endPosition = selectionCoordinates.second
-
- val bounds = Rect(
- 0.0f,
- 0.0f,
- textLayoutResult.size.width.toFloat(),
- textLayoutResult.size.height.toFloat()
- )
-
- val lastOffset = textLayoutResult.layoutInput.text.text.length
-
- val containsWholeSelectionStart =
- bounds.contains(Offset(startPosition.x, startPosition.y))
-
- val containsWholeSelectionEnd =
- bounds.contains(Offset(endPosition.x, endPosition.y))
-
- val rawStartOffset =
- if (containsWholeSelectionStart)
- textLayoutResult.getOffsetForPosition(startPosition).coerceIn(0, lastOffset)
- else
- // If the composable is selected, the start offset cannot be -1 for this composable. If the
- // final start offset is still -1, it means this composable is not selected.
- -1
- val rawEndOffset =
- if (containsWholeSelectionEnd)
- textLayoutResult.getOffsetForPosition(endPosition).coerceIn(0, lastOffset)
- else
- // If the composable is selected, the end offset cannot be -1 for this composable. If the
- // final end offset is still -1, it means this composable is not selected.
- -1
-
- return getRefinedSelectionInfo(
- rawStartOffset = rawStartOffset,
- rawEndOffset = rawEndOffset,
- containsWholeSelectionStart = containsWholeSelectionStart,
- containsWholeSelectionEnd = containsWholeSelectionEnd,
- startPosition = startPosition,
- endPosition = endPosition,
- bounds = bounds,
- textLayoutResult = textLayoutResult,
- lastOffset = lastOffset,
- selectable = selectable,
- wordBasedSelection = wordBasedSelection,
- previousSelection = previousSelection,
- isStartHandle = isStartHandle
- )
-}
-
-/**
- * This method refines the selection info by processing the initial raw selection info.
- *
- * @param rawStartOffset unprocessed start offset calculated directly from input position
- * @param rawEndOffset unprocessed end offset calculated directly from input position
- * @param containsWholeSelectionStart a flag to check if current composable contains the overall
- * selection start
- * @param containsWholeSelectionEnd a flag to check if current composable contains the overall
- * selection end
- * @param startPosition graphical position of the start of the selection, in composable's
- * coordinates.
- * @param endPosition graphical position of the end of the selection, in composable's coordinates.
- * @param bounds bounds of the current composable
- * @param textLayoutResult a result of the text layout.
- * @param lastOffset last offset of the text. It's actually the length of the text.
- * @param selectable current [Selectable] for which the [Selection] is being calculated
- * @param wordBasedSelection This flag is ignored if the selection handles are being dragged. If
- * the selection is modified by long press and drag gesture, the result selection will be
- * adjusted to word based selection. Otherwise, the selection will be adjusted to character based
- * selection.
- * @param previousSelection previous selection result
- * @param isStartHandle true if the start handle is being dragged
- *
- * @return [Selection] of the current composable, or null if the composable is not selected.
- */
-private fun getRefinedSelectionInfo(
- rawStartOffset: Int,
- rawEndOffset: Int,
- containsWholeSelectionStart: Boolean,
- containsWholeSelectionEnd: Boolean,
- startPosition: Offset,
- endPosition: Offset,
- bounds: Rect,
- textLayoutResult: TextLayoutResult,
- lastOffset: Int,
- selectable: Selectable,
- wordBasedSelection: Boolean,
- previousSelection: Selection? = null,
- isStartHandle: Boolean = true
-): Selection? {
- val shouldProcessAsSinglecomposable =
- containsWholeSelectionStart && containsWholeSelectionEnd
-
- var (startOffset, endOffset, handlesCrossed) =
- if (shouldProcessAsSinglecomposable) {
- processAsSingleComposable(
- rawStartOffset = rawStartOffset,
- rawEndOffset = rawEndOffset,
- previousSelection = previousSelection,
- isStartHandle = isStartHandle,
- lastOffset = lastOffset
- )
- } else {
- processCrossComposable(
- startPosition = startPosition,
- endPosition = endPosition,
- rawStartOffset = rawStartOffset,
- rawEndOffset = rawEndOffset,
- lastOffset = lastOffset,
- bounds = bounds,
- containsWholeSelectionStart = containsWholeSelectionStart,
- containsWholeSelectionEnd = containsWholeSelectionEnd
- )
- }
- // nothing is selected
- if (startOffset == -1 && endOffset == -1) return null
-
- // If under long press, update the selection to word-based.
- if (wordBasedSelection) {
- val (start, end) = updateWordBasedSelection(
- textLayoutResult = textLayoutResult,
- startOffset = startOffset,
- endOffset = endOffset,
- handlesCrossed = handlesCrossed
- )
- startOffset = start
- endOffset = end
- }
-
- return getAssembledSelectionInfo(
- startOffset = startOffset,
- endOffset = endOffset,
- handlesCrossed = handlesCrossed,
- selectable = selectable,
- textLayoutResult = textLayoutResult
- )
-}
-
-/**
- * [Selection] contains a lot of parameters. It looks more clean to assemble an object of this
- * class in a separate method.
- *
- * @param startOffset the final start offset to be returned.
- * @param endOffset the final end offset to be returned.
- * @param handlesCrossed true if the selection handles are crossed
- * @param selectable current [Selectable] for which the [Selection] is being calculated
- * @param textLayoutResult a result of the text layout.
- *
- * @return an assembled object of [Selection] using the offered selection info.
- */
-private fun getAssembledSelectionInfo(
- startOffset: Int,
- endOffset: Int,
- handlesCrossed: Boolean,
- selectable: Selectable,
- textLayoutResult: TextLayoutResult
-): Selection {
- return Selection(
- start = Selection.AnchorInfo(
- direction = textLayoutResult.getBidiRunDirection(startOffset),
- offset = startOffset,
- selectable = selectable
- ),
- end = Selection.AnchorInfo(
- direction = textLayoutResult.getBidiRunDirection(max(endOffset - 1, 0)),
- offset = endOffset,
- selectable = selectable
- ),
- handlesCrossed = handlesCrossed
- )
-}
-
/**
* This method takes unprocessed selection information as input, and calculates the selection
* range and check if the selection handles are crossed, for selection with both start and end
@@ -312,28 +32,34 @@
* different location. If the selection anchors point the same location and this is true, the
* result selection will be adjusted to word boundary. Otherwise, the selection will be adjusted
* to keep single character selected.
- * @param previousSelection previous selection result
+ * @param previousSelection previous selected text range.
* @param isStartHandle true if the start handle is being dragged
* @param lastOffset last offset of the text. It's actually the length of the text.
+ * @param handlesCrossed true if the selection handles are crossed
*
* @return the final startOffset, endOffset of the selection, and if the start and end are
* crossed each other.
*/
-private fun processAsSingleComposable(
+internal fun processAsSingleComposable(
rawStartOffset: Int,
rawEndOffset: Int,
- previousSelection: Selection?,
+ previousSelection: TextRange?,
isStartHandle: Boolean,
- lastOffset: Int
+ lastOffset: Int,
+ handlesCrossed: Boolean
): Triple<Int, Int, Boolean> {
var startOffset = rawStartOffset
var endOffset = rawEndOffset
if (startOffset == endOffset) {
+
+ // If the start and end offset are at the same character, and it's not the initial
+ // selection, then bound to at least one character.
val textRange = ensureAtLeastOneChar(
offset = rawStartOffset,
lastOffset = lastOffset,
previousSelection = previousSelection,
- isStartHandle = isStartHandle
+ isStartHandle = isStartHandle,
+ handlesCrossed = handlesCrossed
)
startOffset = textRange.start
endOffset = textRange.end
@@ -363,7 +89,7 @@
* @return the final startOffset, endOffset of the selection, and if the start and end handles are
* crossed each other.
*/
-private fun processCrossComposable(
+internal fun processCrossComposable(
startPosition: Offset,
endPosition: Offset,
rawStartOffset: Int,
@@ -414,7 +140,7 @@
*
* @return the adjusted word-based start and end offset of the selection.
*/
-private fun updateWordBasedSelection(
+internal fun updateWordBasedSelection(
textLayoutResult: TextLayoutResult,
startOffset: Int,
endOffset: Int,
@@ -442,33 +168,33 @@
* @param offset unprocessed start and end offset calculated directly from input position, in
* this case start and offset equals to each other.
* @param lastOffset last offset of the text. It's actually the length of the text.
- * @param previousSelection previous selection result
+ * @param previousSelection previous selected text range.
* @param isStartHandle true if the start handle is being dragged
+ * @param handlesCrossed true if the selection handles are crossed
*
* @return the adjusted [TextRange].
*/
private fun ensureAtLeastOneChar(
offset: Int,
lastOffset: Int,
- previousSelection: Selection?,
- isStartHandle: Boolean
+ previousSelection: TextRange?,
+ isStartHandle: Boolean,
+ handlesCrossed: Boolean
): TextRange {
var newStartOffset = offset
var newEndOffset = offset
- // If the start and end offset are at the same character, and it's not the
- // initial selection, then bound to at least one character.
previousSelection?.let {
if (isStartHandle) {
newStartOffset =
- if (it.handlesCrossed) {
- if (newEndOffset == 0 || it.start.offset == newEndOffset + 1) {
+ if (handlesCrossed) {
+ if (newEndOffset == 0 || it.start == newEndOffset + 1) {
newEndOffset + 1
} else {
newEndOffset - 1
}
} else {
- if (newEndOffset == lastOffset || it.start.offset == newEndOffset - 1) {
+ if (newEndOffset == lastOffset || it.start == newEndOffset - 1) {
newEndOffset - 1
} else {
newEndOffset + 1
@@ -476,14 +202,16 @@
}
} else {
newEndOffset =
- if (it.handlesCrossed) {
- if (newStartOffset == lastOffset || it.end.offset == newStartOffset - 1) {
+ if (handlesCrossed) {
+ if (
+ newStartOffset == lastOffset || it.end == newStartOffset - 1
+ ) {
newStartOffset - 1
} else {
newStartOffset + 1
}
} else {
- if (newStartOffset == 0 || it.end.offset == newStartOffset + 1) {
+ if (newStartOffset == 0 || it.end == newStartOffset + 1) {
newStartOffset + 1
} else {
newStartOffset - 1
@@ -505,7 +233,7 @@
*
* @return the graphical position where the selection handle should be.
*/
-private fun getSelectionHandleCoordinates(
+internal fun getSelectionHandleCoordinates(
textLayoutResult: TextLayoutResult,
offset: Int,
isStart: Boolean,
diff --git a/ui/ui-text/src/test/java/androidx/ui/text/selection/TextFieldSelectionManagerTest.kt b/ui/ui-text/src/test/java/androidx/ui/text/selection/TextFieldSelectionManagerTest.kt
new file mode 100644
index 0000000..ea7997c
--- /dev/null
+++ b/ui/ui-text/src/test/java/androidx/ui/text/selection/TextFieldSelectionManagerTest.kt
@@ -0,0 +1,212 @@
+/*
+ * Copyright 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 androidx.ui.text.selection
+
+import androidx.test.filters.SmallTest
+import androidx.ui.core.Constraints
+import androidx.ui.core.LayoutDirection
+import androidx.ui.core.clipboard.ClipboardManager
+import androidx.ui.core.hapticfeedback.HapticFeedback
+import androidx.ui.core.hapticfeedback.HapticFeedbackType
+import androidx.ui.geometry.Offset
+import androidx.ui.input.OffsetMap
+import androidx.ui.input.TextFieldValue
+import androidx.ui.text.AnnotatedString
+import androidx.ui.text.TextFieldState
+import androidx.ui.text.TextLayoutInput
+import androidx.ui.text.TextRange
+import androidx.ui.text.TextStyle
+import androidx.ui.text.style.ResolvedTextDirection
+import androidx.ui.text.style.TextOverflow
+import androidx.ui.unit.Density
+import com.google.common.truth.Truth.assertThat
+import com.nhaarman.mockitokotlin2.any
+import com.nhaarman.mockitokotlin2.mock
+import com.nhaarman.mockitokotlin2.spy
+import com.nhaarman.mockitokotlin2.times
+import com.nhaarman.mockitokotlin2.verify
+import com.nhaarman.mockitokotlin2.whenever
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@SmallTest
+@RunWith(JUnit4::class)
+class TextFieldSelectionManagerTest {
+ private val text = "Hello World"
+ private val density = Density(density = 1f)
+ private val offsetMap = OffsetMap.identityOffsetMap
+ private var value = TextFieldValue(text)
+ private val lambda: (TextFieldValue) -> Unit = { value = it }
+ private val spyLambda = spy(lambda)
+ private val state = TextFieldState(mock())
+
+ private val dragBeginPosition = Offset.Zero
+ private val dragDistance = Offset(300f, 15f)
+ private val beginOffset = 0
+ private val dragOffset = text.indexOf('W')
+ private val longPressTextRange = TextRange(0, "Hello".length)
+ private val dragTextRange = TextRange("Hello".length + 1, text.length)
+
+ private val manager = TextFieldSelectionManager()
+
+ private val clipboardManager = mock<ClipboardManager>()
+ private val hapticFeedback = mock<HapticFeedback>()
+
+ @Before
+ fun setup() {
+ manager.offsetMap = offsetMap
+ manager.onValueChange = lambda
+ manager.state = state
+ manager.value = value
+ manager.clipboardManager = clipboardManager
+ manager.hapticFeedBack = hapticFeedback
+
+ state.layoutResult = mock()
+ whenever(state.layoutResult!!.layoutInput).thenReturn(
+ TextLayoutInput(
+ text = AnnotatedString(text),
+ style = TextStyle.Default,
+ placeholders = mock(),
+ maxLines = 2,
+ softWrap = true,
+ overflow = TextOverflow.Ellipsis,
+ density = density,
+ layoutDirection = LayoutDirection.Ltr,
+ resourceLoader = mock(),
+ constraints = Constraints()
+ )
+ )
+ whenever(state.layoutResult!!.getOffsetForPosition(dragBeginPosition)).thenReturn(
+ beginOffset
+ )
+ whenever(state.layoutResult!!.getOffsetForPosition(dragDistance)).thenReturn(dragOffset)
+ whenever(state.layoutResult!!.getWordBoundary(beginOffset)).thenReturn(longPressTextRange)
+ whenever(state.layoutResult!!.getWordBoundary(dragOffset)).thenReturn(dragTextRange)
+ whenever(state.layoutResult!!.getBidiRunDirection(any()))
+ .thenReturn(ResolvedTextDirection.Ltr)
+ }
+
+ @Test
+ fun TextFieldSelectionManager_init() {
+ assertThat(manager.offsetMap).isEqualTo(offsetMap)
+ assertThat(manager.onValueChange).isEqualTo(lambda)
+ assertThat(manager.state).isEqualTo(state)
+ assertThat(manager.value).isEqualTo(value)
+ }
+
+ @Test
+ fun TextFieldSelectionManager_longPressDragObserver_onLongPress() {
+ manager.longPressDragObserver.onLongPress(dragBeginPosition)
+
+ assertThat(state.selectionIsOn).isTrue()
+ assertThat(value.selection).isEqualTo(longPressTextRange)
+ verify(
+ hapticFeedback,
+ times(1)
+ ).performHapticFeedback(HapticFeedbackType.TextHandleMove)
+ }
+
+ @Test
+ fun TextFieldSelectionManager_longPressDragObserver_onDrag() {
+ manager.longPressDragObserver.onLongPress(dragBeginPosition)
+ manager.longPressDragObserver.onDrag(dragDistance)
+
+ assertThat(value.selection).isEqualTo(TextRange(0, text.length))
+ verify(
+ hapticFeedback,
+ times(2)
+ ).performHapticFeedback(HapticFeedbackType.TextHandleMove)
+ }
+
+ @Test
+ fun copy_selection_collapse() {
+ manager.value = TextFieldValue(text = text, selection = TextRange(4, 4))
+
+ manager.copy()
+
+ verify(clipboardManager, times(0)).setText(any())
+ }
+
+ @Test
+ fun copy_selection_not_null() {
+ manager.value = TextFieldValue(text = text, selection = TextRange(0, "Hello".length))
+
+ manager.copy()
+
+ verify(clipboardManager, times(1)).setText(AnnotatedString("Hello"))
+ assertThat(value.selection).isEqualTo(TextRange("Hello".length, "Hello".length))
+ assertThat(state.selectionIsOn).isFalse()
+ }
+
+ @Test
+ fun paste_clipBoardManager_null() {
+ manager.clipboardManager = null
+
+ manager.paste()
+
+ verify(spyLambda, times(0)).invoke(any())
+ }
+
+ @Test
+ fun paste_clipBoardManager_empty() {
+ whenever(clipboardManager.getText()).thenReturn(null)
+
+ manager.paste()
+
+ verify(spyLambda, times(0)).invoke(any())
+ }
+
+ @Test
+ fun paste_clipBoardManager_not_empty() {
+ whenever(clipboardManager.getText()).thenReturn(AnnotatedString("Hello"))
+ manager.value = TextFieldValue(
+ text = text,
+ selection = TextRange("Hel".length, "Hello Wo".length)
+ )
+
+ manager.paste()
+
+ assertThat(value.text).isEqualTo("HelHellorld")
+ assertThat(value.selection).isEqualTo(TextRange("Hello Wo".length, "Hello Wo".length))
+ assertThat(state.selectionIsOn).isFalse()
+ }
+
+ @Test
+ fun cut_selection_collapse() {
+ manager.value = TextFieldValue(text = text, selection = TextRange(4, 4))
+
+ manager.cut()
+
+ verify(clipboardManager, times(0)).setText(any())
+ }
+
+ @Test
+ fun cut_selection_not_null() {
+ manager.value = TextFieldValue(
+ text = text + text,
+ selection = TextRange("Hello".length, text.length))
+
+ manager.cut()
+
+ verify(clipboardManager, times(1)).setText(AnnotatedString(" World"))
+ assertThat(value.text).isEqualTo("HelloHello World")
+ assertThat(value.selection).isEqualTo(TextRange("Hello".length, "Hello".length))
+ assertThat(state.selectionIsOn).isFalse()
+ }
+}
diff --git a/ui/ui-tooling/OWNERS b/ui/ui-tooling/OWNERS
index 583d415..36d6fce 100644
--- a/ui/ui-tooling/OWNERS
+++ b/ui/ui-tooling/OWNERS
@@ -1,3 +1,4 @@
[email protected]
[email protected]
[email protected]
\ No newline at end of file
[email protected]
[email protected]
\ No newline at end of file
diff --git a/ui/ui-tooling/api/0.1.0-dev15.txt b/ui/ui-tooling/api/0.1.0-dev15.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/0.1.0-dev15.txt
+++ b/ui/ui-tooling/api/0.1.0-dev15.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/api/current.txt b/ui/ui-tooling/api/current.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/current.txt
+++ b/ui/ui-tooling/api/current.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-tooling/api/public_plus_experimental_0.1.0-dev15.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-tooling/api/public_plus_experimental_0.1.0-dev15.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/api/public_plus_experimental_current.txt b/ui/ui-tooling/api/public_plus_experimental_current.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/public_plus_experimental_current.txt
+++ b/ui/ui-tooling/api/public_plus_experimental_current.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/api/restricted_0.1.0-dev15.txt b/ui/ui-tooling/api/restricted_0.1.0-dev15.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-tooling/api/restricted_0.1.0-dev15.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/api/restricted_current.txt b/ui/ui-tooling/api/restricted_current.txt
index a6d76dd..be3bb56 100644
--- a/ui/ui-tooling/api/restricted_current.txt
+++ b/ui/ui-tooling/api/restricted_current.txt
@@ -101,7 +101,7 @@
field public static final String TOOLS_NS_URI = "http://schemas.android.com/tools";
}
- @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
+ @kotlin.annotation.MustBeDocumented @kotlin.annotation.Repeatable @kotlin.annotation.Retention(AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets=AnnotationTarget.FUNCTION) public @interface Preview {
method public abstract int apiLevel() default -1;
method public abstract long backgroundColor() default 0L;
method public abstract float fontScale() default 1.0f;
diff --git a/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/Preview.kt b/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/Preview.kt
index 848180a..211b618 100644
--- a/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/Preview.kt
+++ b/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/Preview.kt
@@ -53,6 +53,7 @@
@Target(
AnnotationTarget.FUNCTION
)
+@Repeatable
annotation class Preview(
val name: String = "",
val group: String = "",
diff --git a/ui/ui-unit/api/0.1.0-dev04.txt b/ui/ui-unit/api/0.1.0-dev04.txt
index 81feb99..b5cc8a8 100644
--- a/ui/ui-unit/api/0.1.0-dev04.txt
+++ b/ui/ui-unit/api/0.1.0-dev04.txt
@@ -67,7 +67,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -178,7 +178,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -238,7 +238,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -298,7 +298,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -349,7 +349,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -457,7 +457,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -477,7 +477,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -548,7 +548,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -581,6 +581,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -595,7 +597,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -613,7 +615,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev06.txt b/ui/ui-unit/api/0.1.0-dev06.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/0.1.0-dev06.txt
+++ b/ui/ui-unit/api/0.1.0-dev06.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev07.txt b/ui/ui-unit/api/0.1.0-dev07.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/0.1.0-dev07.txt
+++ b/ui/ui-unit/api/0.1.0-dev07.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev08.txt b/ui/ui-unit/api/0.1.0-dev08.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/0.1.0-dev08.txt
+++ b/ui/ui-unit/api/0.1.0-dev08.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev09.txt b/ui/ui-unit/api/0.1.0-dev09.txt
index 17fd410..fa6f577 100644
--- a/ui/ui-unit/api/0.1.0-dev09.txt
+++ b/ui/ui-unit/api/0.1.0-dev09.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -294,7 +294,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -345,7 +345,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -455,7 +455,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -475,7 +475,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -548,7 +548,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -581,6 +581,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -595,7 +597,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -613,7 +615,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev10.txt b/ui/ui-unit/api/0.1.0-dev10.txt
index aa41265..82ef3bb 100644
--- a/ui/ui-unit/api/0.1.0-dev10.txt
+++ b/ui/ui-unit/api/0.1.0-dev10.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -236,7 +236,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -297,7 +297,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -370,7 +370,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -479,7 +479,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -499,7 +499,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -570,7 +570,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -603,6 +603,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -617,7 +619,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -635,7 +637,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev11.txt b/ui/ui-unit/api/0.1.0-dev11.txt
index 7c27190..ba22d36 100644
--- a/ui/ui-unit/api/0.1.0-dev11.txt
+++ b/ui/ui-unit/api/0.1.0-dev11.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -137,7 +139,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -250,7 +252,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -314,7 +316,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -375,7 +377,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -448,7 +450,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -557,7 +559,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -577,7 +579,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -648,7 +650,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -681,6 +683,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -695,7 +699,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -713,7 +717,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev12.txt b/ui/ui-unit/api/0.1.0-dev12.txt
index 2931d66..9ad8b61 100644
--- a/ui/ui-unit/api/0.1.0-dev12.txt
+++ b/ui/ui-unit/api/0.1.0-dev12.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -139,7 +141,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -245,7 +247,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -309,7 +311,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -370,7 +372,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -386,7 +388,7 @@
method public inline operator androidx.ui.unit.IntPxSize times(int other);
property public final inline int height;
property public final inline int width;
- field public static final androidx.ui.unit.IntPxSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxSize.Companion Companion;
}
public static final class IntPxSize.Companion {
@@ -449,7 +451,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -560,7 +562,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -580,7 +582,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -634,7 +636,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -667,6 +669,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -681,7 +685,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -699,7 +703,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev14.txt b/ui/ui-unit/api/0.1.0-dev14.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/0.1.0-dev14.txt
+++ b/ui/ui-unit/api/0.1.0-dev14.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/0.1.0-dev15.txt b/ui/ui-unit/api/0.1.0-dev15.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/0.1.0-dev15.txt
+++ b/ui/ui-unit/api/0.1.0-dev15.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/api_lint.ignore b/ui/ui-unit/api/api_lint.ignore
index aad744b..319f1ff 100644
--- a/ui/ui-unit/api/api_lint.ignore
+++ b/ui/ui-unit/api/api_lint.ignore
@@ -1,7 +1,3 @@
// Baseline format: 1.0
MethodNameUnits: androidx.ui.unit.Durations#inSeconds(androidx.ui.unit.Duration):
Returned time values must be in milliseconds, was `inSeconds`
-
-
-MissingNullability: androidx.ui.core.Constraints2#toString-impl(long):
- Missing nullability on method `toString-impl` return
diff --git a/ui/ui-unit/api/current.txt b/ui/ui-unit/api/current.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/current.txt
+++ b/ui/ui-unit/api/current.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev04.txt
index 81feb99..b5cc8a8 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev04.txt
@@ -67,7 +67,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -178,7 +178,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -238,7 +238,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -298,7 +298,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -349,7 +349,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -457,7 +457,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -477,7 +477,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -548,7 +548,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -581,6 +581,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -595,7 +597,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -613,7 +615,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev06.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev06.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev07.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev07.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev07.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev07.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev08.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev08.txt
index ddea8a8..1080286 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev08.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev08.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -293,7 +293,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -344,7 +344,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -453,7 +453,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -473,7 +473,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -546,7 +546,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -579,6 +579,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -593,7 +595,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -611,7 +613,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev09.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev09.txt
index 17fd410..fa6f577 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev09.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev09.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -294,7 +294,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -345,7 +345,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -455,7 +455,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -475,7 +475,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -548,7 +548,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -581,6 +581,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -595,7 +597,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -613,7 +615,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev10.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev10.txt
index aa41265..82ef3bb 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev10.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev10.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -236,7 +236,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -297,7 +297,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -370,7 +370,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -479,7 +479,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -499,7 +499,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -570,7 +570,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -603,6 +603,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -617,7 +619,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -635,7 +637,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev11.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev11.txt
index 7c27190..ba22d36 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev11.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev11.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -137,7 +139,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -250,7 +252,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -314,7 +316,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -375,7 +377,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -448,7 +450,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -557,7 +559,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -577,7 +579,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -648,7 +650,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -681,6 +683,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -695,7 +699,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -713,7 +717,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev12.txt
index 2931d66..9ad8b61 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev12.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -139,7 +141,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -245,7 +247,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -309,7 +311,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -370,7 +372,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -386,7 +388,7 @@
method public inline operator androidx.ui.unit.IntPxSize times(int other);
property public final inline int height;
property public final inline int width;
- field public static final androidx.ui.unit.IntPxSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxSize.Companion Companion;
}
public static final class IntPxSize.Companion {
@@ -449,7 +451,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -560,7 +562,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -580,7 +582,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -634,7 +636,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -667,6 +669,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -681,7 +685,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -699,7 +703,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev14.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev14.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev14.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev14.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/public_plus_experimental_current.txt b/ui/ui-unit/api/public_plus_experimental_current.txt
index 08c7a60..1f0e0c3 100644
--- a/ui/ui-unit/api/public_plus_experimental_current.txt
+++ b/ui/ui-unit/api/public_plus_experimental_current.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -458,6 +460,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -472,7 +476,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -490,7 +494,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev04.txt b/ui/ui-unit/api/restricted_0.1.0-dev04.txt
index cf33004..2e6db4b 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev04.txt
@@ -67,7 +67,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -178,7 +178,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -238,7 +238,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -301,7 +301,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -353,7 +353,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -462,7 +462,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -483,7 +483,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -554,7 +554,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -591,6 +591,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -605,7 +607,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -623,7 +625,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev06.txt b/ui/ui-unit/api/restricted_0.1.0-dev06.txt
index 7d2fc8e..904aaf2 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev06.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -296,7 +296,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -348,7 +348,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -458,7 +458,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -479,7 +479,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -552,7 +552,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -589,6 +589,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -603,7 +605,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -621,7 +623,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev07.txt b/ui/ui-unit/api/restricted_0.1.0-dev07.txt
index 7d2fc8e..904aaf2 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev07.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev07.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -296,7 +296,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -348,7 +348,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -458,7 +458,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -479,7 +479,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -552,7 +552,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -589,6 +589,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -603,7 +605,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -621,7 +623,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev08.txt b/ui/ui-unit/api/restricted_0.1.0-dev08.txt
index 7d2fc8e..904aaf2 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev08.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev08.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -296,7 +296,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -348,7 +348,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -458,7 +458,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -479,7 +479,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -552,7 +552,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -589,6 +589,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -603,7 +605,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -621,7 +623,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev09.txt b/ui/ui-unit/api/restricted_0.1.0-dev09.txt
index 57b3295..abe3d38 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev09.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev09.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -232,7 +232,7 @@
method public operator androidx.ui.unit.IntPx times(double other);
method public operator androidx.ui.unit.IntPx times(int other);
method public operator androidx.ui.unit.IntPx unaryMinus();
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -297,7 +297,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline androidx.ui.unit.IntPx x;
property public final inline androidx.ui.unit.IntPx y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -349,7 +349,7 @@
method public inline operator float times(androidx.ui.unit.Px other);
method public inline operator float times-RjPF0Mw(float other);
method public inline operator androidx.ui.unit.Px unaryMinus();
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -460,7 +460,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline androidx.ui.unit.Px x;
property public final inline androidx.ui.unit.Px y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -481,7 +481,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline androidx.ui.unit.Px height;
property public final inline androidx.ui.unit.Px width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -554,7 +554,7 @@
property public final boolean isSp;
property public final androidx.ui.unit.TextUnitType type;
property public final float value;
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -591,6 +591,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -605,7 +607,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -623,7 +625,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev10.txt b/ui/ui-unit/api/restricted_0.1.0-dev10.txt
index 4de46a8..29fa157 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev10.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev10.txt
@@ -59,7 +59,7 @@
method public inline operator float times(androidx.ui.unit.Dp other);
method public inline operator float times-x8crYZs(float other);
method public inline operator androidx.ui.unit.Dp unaryMinus();
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -172,7 +172,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -236,7 +236,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -300,7 +300,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -374,7 +374,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -484,7 +484,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -505,7 +505,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -576,7 +576,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -613,6 +613,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -627,7 +629,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -645,7 +647,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev11.txt b/ui/ui-unit/api/restricted_0.1.0-dev11.txt
index 9cd7451..9541f2c 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev11.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev11.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -137,7 +139,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -250,7 +252,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -314,7 +316,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -378,7 +380,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -452,7 +454,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -562,7 +564,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -583,7 +585,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -654,7 +656,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -691,6 +693,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -705,7 +709,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -723,7 +727,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev12.txt b/ui/ui-unit/api/restricted_0.1.0-dev12.txt
index 0366791..866ced4 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev12.txt
@@ -11,7 +11,7 @@
method public int getMaxWidth();
method public int getMinHeight();
method public int getMinWidth();
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
}
public static final class Constraints.Companion {
@@ -34,7 +34,7 @@
method public static int getMinWidth-impl(long $this);
method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
method @androidx.compose.Immutable public static inline String! toString-impl(long p);
- field public static final androidx.ui.core.Constraints2.Companion! Companion;
+ field public static final androidx.ui.core.Constraints2.Companion Companion;
field public static final int Infinity = -1073741824; // 0xc0000000
}
@@ -68,6 +68,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -139,7 +141,7 @@
method public static inline operator float times-x8crYZs(float $this, float other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -245,7 +247,7 @@
method public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method public operator androidx.ui.unit.Duration times(int factor);
method public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -309,7 +311,7 @@
method public static operator int times-impl(int $this, int other);
method public static String toString-impl(int $this);
method public static operator int unaryMinus-impl(int $this);
- field public static final androidx.ui.unit.IntPx.Companion! Companion;
+ field public static final androidx.ui.unit.IntPx.Companion Companion;
}
public static final class IntPx.Companion {
@@ -373,7 +375,7 @@
method public inline operator androidx.ui.unit.IntPxPosition unaryMinus();
property public final inline int x;
property public final inline int y;
- field public static final androidx.ui.unit.IntPxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxPosition.Companion Companion;
}
public static final class IntPxPosition.Companion {
@@ -390,7 +392,7 @@
method public inline operator androidx.ui.unit.IntPxSize times(int other);
property public final inline int height;
property public final inline int width;
- field public static final androidx.ui.unit.IntPxSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntPxSize.Companion Companion;
}
public static final class IntPxSize.Companion {
@@ -453,7 +455,7 @@
method public static inline operator float times-impl(float $this, int other);
method public static String toString-impl(float $this);
method public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Px.Companion! Companion;
+ field public static final androidx.ui.unit.Px.Companion Companion;
}
public static final class Px.Companion {
@@ -565,7 +567,7 @@
method public inline operator androidx.ui.unit.PxPosition unaryMinus();
property public final inline float x;
property public final inline float y;
- field public static final androidx.ui.unit.PxPosition.Companion! Companion;
+ field public static final androidx.ui.unit.PxPosition.Companion Companion;
}
public static final class PxPosition.Companion {
@@ -586,7 +588,7 @@
method public inline operator androidx.ui.unit.PxSize times(double other);
property public final inline float height;
property public final inline float width;
- field public static final androidx.ui.unit.PxSize.Companion! Companion;
+ field public static final androidx.ui.unit.PxSize.Companion Companion;
}
public static final class PxSize.Companion {
@@ -640,7 +642,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -677,6 +679,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -691,7 +695,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -709,7 +713,7 @@
method public androidx.ui.unit.Velocity copy(androidx.ui.unit.PxPosition pixelsPerSecond);
method public androidx.ui.unit.PxPosition getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev14.txt b/ui/ui-unit/api/restricted_0.1.0-dev14.txt
index 82aef00..29c348b 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev14.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev14.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -462,6 +464,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -476,7 +480,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -494,7 +498,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev15.txt b/ui/ui-unit/api/restricted_0.1.0-dev15.txt
index 82aef00..29c348b 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev15.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -462,6 +464,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -476,7 +480,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -494,7 +498,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-unit/api/restricted_current.txt b/ui/ui-unit/api/restricted_current.txt
index 82aef00..29c348b 100644
--- a/ui/ui-unit/api/restricted_current.txt
+++ b/ui/ui-unit/api/restricted_current.txt
@@ -17,7 +17,7 @@
property public final int maxWidth;
property public final int minHeight;
property public final int minWidth;
- field public static final androidx.ui.core.Constraints.Companion! Companion;
+ field public static final androidx.ui.core.Constraints.Companion Companion;
field public static final int Infinity = 2147483647; // 0x7fffffff
}
@@ -41,6 +41,8 @@
}
public enum LayoutDirection {
+ method public static androidx.ui.core.LayoutDirection valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.core.LayoutDirection[] values();
enum_constant public static final androidx.ui.core.LayoutDirection Ltr;
enum_constant public static final androidx.ui.core.LayoutDirection Rtl;
}
@@ -108,7 +110,7 @@
method @androidx.compose.Stable public static inline operator float times-x8crYZs(float $this, float other);
method @androidx.compose.Stable public static String toString-impl(float $this);
method @androidx.compose.Stable public static inline operator float unaryMinus-impl(float $this);
- field public static final androidx.ui.unit.Dp.Companion! Companion;
+ field public static final androidx.ui.unit.Dp.Companion Companion;
}
public static final class Dp.Companion {
@@ -214,7 +216,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.Duration plus(androidx.ui.unit.Duration other);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(int factor);
method @androidx.compose.Stable public operator androidx.ui.unit.Duration times(double factor);
- field public static final androidx.ui.unit.Duration.Companion! Companion;
+ field public static final androidx.ui.unit.Duration.Companion Companion;
}
public static final class Duration.Companion {
@@ -268,7 +270,7 @@
method @androidx.compose.Stable public inline operator androidx.ui.unit.IntOffset unaryMinus();
property public final int x;
property public final int y;
- field public static final androidx.ui.unit.IntOffset.Companion! Companion;
+ field public static final androidx.ui.unit.IntOffset.Companion Companion;
}
public static final class IntOffset.Companion {
@@ -296,7 +298,7 @@
method @androidx.compose.Stable public operator androidx.ui.unit.IntSize times(int other);
property public final int height;
property public final int width;
- field public static final androidx.ui.unit.IntSize.Companion! Companion;
+ field public static final androidx.ui.unit.IntSize.Companion Companion;
}
public static final class IntSize.Companion {
@@ -425,7 +427,7 @@
method public static inline operator long times-impl(long $this, int other);
method public static String toString-impl(long $this);
method public static inline operator long unaryMinus-impl(long $this);
- field public static final androidx.ui.unit.TextUnit.Companion! Companion;
+ field public static final androidx.ui.unit.TextUnit.Companion Companion;
}
public static final class TextUnit.Companion {
@@ -462,6 +464,8 @@
}
public enum TextUnitType {
+ method public static androidx.ui.unit.TextUnitType valueOf(String name) throws java.lang.IllegalArgumentException;
+ method public static androidx.ui.unit.TextUnitType[] values();
enum_constant public static final androidx.ui.unit.TextUnitType Em;
enum_constant public static final androidx.ui.unit.TextUnitType Inherit;
enum_constant public static final androidx.ui.unit.TextUnitType Sp;
@@ -476,7 +480,7 @@
method public operator androidx.ui.unit.Uptime minus(androidx.ui.unit.Duration duration);
method public operator androidx.ui.unit.Duration minus(androidx.ui.unit.Uptime other);
method public operator androidx.ui.unit.Uptime plus(androidx.ui.unit.Duration duration);
- field public static final androidx.ui.unit.Uptime.Companion! Companion;
+ field public static final androidx.ui.unit.Uptime.Companion Companion;
}
public static final class Uptime.Companion {
@@ -494,7 +498,7 @@
method @androidx.compose.Immutable public androidx.ui.unit.Velocity copy(androidx.ui.geometry.Offset pixelsPerSecond);
method public androidx.ui.geometry.Offset getPixelsPerSecond();
method public operator androidx.ui.unit.Velocity unaryMinus();
- field public static final androidx.ui.unit.Velocity.Companion! Companion;
+ field public static final androidx.ui.unit.Velocity.Companion Companion;
}
public static final class Velocity.Companion {
diff --git a/ui/ui-util/api/0.1.0-dev04.txt b/ui/ui-util/api/0.1.0-dev04.txt
index c9602f5..b730031 100644
--- a/ui/ui-util/api/0.1.0-dev04.txt
+++ b/ui/ui-util/api/0.1.0-dev04.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui-util/api/0.1.0-dev06.txt b/ui/ui-util/api/0.1.0-dev06.txt
index 0f0ad85..c72ea18 100644
--- a/ui/ui-util/api/0.1.0-dev06.txt
+++ b/ui/ui-util/api/0.1.0-dev06.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui-util/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-util/api/public_plus_experimental_0.1.0-dev04.txt
index c9602f5..b730031 100644
--- a/ui/ui-util/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-util/api/public_plus_experimental_0.1.0-dev04.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui-util/api/public_plus_experimental_0.1.0-dev06.txt b/ui/ui-util/api/public_plus_experimental_0.1.0-dev06.txt
index 0f0ad85..c72ea18 100644
--- a/ui/ui-util/api/public_plus_experimental_0.1.0-dev06.txt
+++ b/ui/ui-util/api/public_plus_experimental_0.1.0-dev06.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui-util/api/restricted_0.1.0-dev04.txt b/ui/ui-util/api/restricted_0.1.0-dev04.txt
index c9602f5..b730031 100644
--- a/ui/ui-util/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-util/api/restricted_0.1.0-dev04.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui-util/api/restricted_0.1.0-dev06.txt b/ui/ui-util/api/restricted_0.1.0-dev06.txt
index 0f0ad85..c72ea18 100644
--- a/ui/ui-util/api/restricted_0.1.0-dev06.txt
+++ b/ui/ui-util/api/restricted_0.1.0-dev06.txt
@@ -32,7 +32,7 @@
property public final int exponent;
property public final androidx.ui.util.Float16 sign;
property public final int significand;
- field public static final androidx.ui.util.Float16.Companion! Companion;
+ field public static final androidx.ui.util.Float16.Companion Companion;
field public static final int MaxExponent = 15; // 0xf
field public static final int MinExponent = -14; // 0xfffffff2
field public static final int Size = 16; // 0x10
diff --git a/ui/ui/placeholder.txt b/ui/ui/placeholder.txt
new file mode 100644
index 0000000..ffee342
--- /dev/null
+++ b/ui/ui/placeholder.txt
@@ -0,0 +1,2 @@
+This file exists to make sure ui/ directory this is in gets created by git, so that
+settings.gradle can point to this directory and not complain about it missing.
\ No newline at end of file
diff --git a/vectordrawable/vectordrawable-animated/api/api_lint.ignore b/vectordrawable/vectordrawable-animated/api/api_lint.ignore
index 8bbfad4..ffd0fdf 100644
--- a/vectordrawable/vectordrawable-animated/api/api_lint.ignore
+++ b/vectordrawable/vectordrawable-animated/api/api_lint.ignore
@@ -59,7 +59,3 @@
Missing nullability on parameter `dr` in method `unregisterAnimationCallback`
MissingNullability: androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat#unregisterAnimationCallback(android.graphics.drawable.Drawable, androidx.vectordrawable.graphics.drawable.Animatable2Compat.AnimationCallback) parameter #1:
Missing nullability on parameter `callback` in method `unregisterAnimationCallback`
-
-
-NotCloseable: androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat:
- Classes that release resources (stop()) should implement AutoClosable and CloseGuard: class androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
diff --git a/webkit/integration-tests/testapp/build.gradle b/webkit/integration-tests/testapp/build.gradle
index ac10175..2ee8be8 100644
--- a/webkit/integration-tests/testapp/build.gradle
+++ b/webkit/integration-tests/testapp/build.gradle
@@ -25,12 +25,16 @@
implementation("androidx.core:core:1.1.0")
implementation(project(":webkit:webkit"))
implementation(GUAVA_ANDROID)
+ implementation(ESPRESSO_IDLING_NET)
+ implementation(ESPRESSO_IDLING_RESOURCE)
+
androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
androidTestImplementation(ANDROIDX_TEST_CORE)
androidTestImplementation(ANDROIDX_TEST_RUNNER)
androidTestImplementation(ANDROIDX_TEST_RULES)
androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
androidTestImplementation(ESPRESSO_CONTRIB, libs.exclude_for_espresso)
+ androidTestImplementation(ESPRESSO_IDLING_RESOURCE)
androidTestImplementation(ESPRESSO_WEB, libs.exclude_for_espresso)
androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy)
// DexMaker has it"s own MockMaker
diff --git a/webkit/integration-tests/testapp/src/androidTest/java/com/example/androidx/webkit/AssetLoaderAjaxActivityTestAppTest.java b/webkit/integration-tests/testapp/src/androidTest/java/com/example/androidx/webkit/AssetLoaderAjaxActivityTestAppTest.java
index bc07f31..0e53c35 100644
--- a/webkit/integration-tests/testapp/src/androidTest/java/com/example/androidx/webkit/AssetLoaderAjaxActivityTestAppTest.java
+++ b/webkit/integration-tests/testapp/src/androidTest/java/com/example/androidx/webkit/AssetLoaderAjaxActivityTestAppTest.java
@@ -16,8 +16,11 @@
package com.example.androidx.webkit;
+import androidx.test.espresso.IdlingRegistry;
import androidx.test.filters.LargeTest;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -35,6 +38,16 @@
new IntegrationActivityTestRule<>(AssetLoaderAjaxActivity.class,
R.id.webview_asset_loader_webview);
+ @Before
+ public void setUp() {
+ IdlingRegistry.getInstance().register(mRule.getActivity().getUriIdlingResource());
+ }
+
+ @After
+ public void tearDown() {
+ IdlingRegistry.getInstance().unregister(mRule.getActivity().getUriIdlingResource());
+ }
+
@Test
public void testAssetLoaderAjaxActivity() {
mRule.assertHtmlElementContainsText(R.id.webview_asset_loader_webview, "title",
diff --git a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderAjaxActivity.java b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderAjaxActivity.java
index 15e78e2..ce2417b 100644
--- a/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderAjaxActivity.java
+++ b/webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/AssetLoaderAjaxActivity.java
@@ -25,19 +25,22 @@
import android.webkit.WebView;
import android.webkit.WebViewClient;
-import static androidx.webkit.WebViewAssetLoader.AssetsPathHandler;
-import static androidx.webkit.WebViewAssetLoader.ResourcesPathHandler;
-
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
+import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.test.espresso.idling.net.UriIdlingResource;
import androidx.webkit.WebViewAssetLoader;
+import androidx.webkit.WebViewAssetLoader.AssetsPathHandler;
+import androidx.webkit.WebViewAssetLoader.ResourcesPathHandler;
/**
* An {@link Activity} to show a more useful usecase: performing ajax calls to load files from
* local app assets and resources in a safer way using WebViewAssetLoader.
*/
public class AssetLoaderAjaxActivity extends AppCompatActivity {
+ private static final int MAX_IDLE_TIME_MS = 5000;
private class MyWebViewClient extends WebViewClient {
@Override
@@ -49,19 +52,37 @@
@Override
@RequiresApi(21)
public WebResourceResponse shouldInterceptRequest(WebView view,
- WebResourceRequest request) {
- return mAssetLoader.shouldInterceptRequest(request.getUrl());
+ WebResourceRequest request) {
+ if (mUriIdlingResource != null) {
+ mUriIdlingResource.beginLoad(request.getUrl().toString());
+ }
+ WebResourceResponse response = mAssetLoader.shouldInterceptRequest(request.getUrl());
+ if (mUriIdlingResource != null) {
+ mUriIdlingResource.endLoad(request.getUrl().toString());
+ }
+ return response;
}
@Override
@SuppressWarnings("deprecation") // use the old one for compatibility with all API levels.
public WebResourceResponse shouldInterceptRequest(WebView view, String request) {
- return mAssetLoader.shouldInterceptRequest(Uri.parse(request));
+ if (mUriIdlingResource != null) {
+ mUriIdlingResource.beginLoad(request);
+ }
+ WebResourceResponse response = mAssetLoader.shouldInterceptRequest(Uri.parse(request));
+ if (mUriIdlingResource != null) {
+ mUriIdlingResource.endLoad(request);
+ }
+ return response;
}
}
private WebViewAssetLoader mAssetLoader;
private WebView mWebView;
+ // IdlingResource that indicates that WebView has finished loading all WebResourceRequests
+ // by waiting until there are no requests made for 5000ms.
+ @NonNull
+ private UriIdlingResource mUriIdlingResource;
@SuppressLint("SetJavaScriptEnabled")
@Override
@@ -106,4 +127,18 @@
// Load the url https://example.com/androidx_webkit/example/assets/www/ajax_requests.html
mWebView.loadUrl(path.toString());
}
+
+ /**
+ * Create and return {@link UriIdlingResource} which indicates if WebView has finished loading
+ * all requested URIs.
+ */
+ @VisibleForTesting
+ @NonNull
+ public UriIdlingResource getUriIdlingResource() {
+ if (mUriIdlingResource == null) {
+ mUriIdlingResource =
+ new UriIdlingResource("AssetLoaderWebViewUriIdlingResource", MAX_IDLE_TIME_MS);
+ }
+ return mUriIdlingResource;
+ }
}
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java b/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
index c61d9c6..2454238 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
+++ b/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
@@ -16,12 +16,12 @@
package androidx.webkit;
-import android.annotation.SuppressLint;
import android.os.Build;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import androidx.annotation.RequiresApi;
import androidx.concurrent.futures.ResolvableFuture;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
@@ -113,7 +113,7 @@
@LargeTest
@Test
- @SuppressLint("NewApi")
+ @RequiresApi(Build.VERSION_CODES.O)
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
public void testGetWebViewRenderProcess() throws Throwable {
if (WebViewFeature.isFeatureSupported(WebViewFeature.MULTI_PROCESS)
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebViewAssetLoader.java b/webkit/webkit/src/main/java/androidx/webkit/WebViewAssetLoader.java
index 84850a6..29e7657 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebViewAssetLoader.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebViewAssetLoader.java
@@ -60,16 +60,34 @@
* <pre class="prettyprint">
* final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
* .addPathHandler("/assets/", new AssetsPathHandler(this))
- * .addPathHandler("/res/", new ResourcesPathHandler(this))
* .build();
*
* webView.setWebViewClient(new WebViewClient() {
* {@literal @}Override
+ * {@literal @}RequiresApi(21)
* public WebResourceResponse shouldInterceptRequest(WebView view,
* WebResourceRequest request) {
* return assetLoader.shouldInterceptRequest(request.getUrl());
* }
+ *
+ * {@literal @}Override
+ * {@literal @}SuppressWarnings("deprecation") // for API < 21
+ * public WebResourceResponse shouldInterceptRequest(WebView view,
+ * WebResourceRequest request) {
+ * return assetLoader.shouldInterceptRequest(Uri.parse(request));
+ * }
* });
+ *
+ * WebSettings webViewSettings = webView.getSettings();
+ * // Setting this off for security. Off by default for SDK versions >= 16.
+ * webViewSettings.setAllowFileAccessFromFileURLs(false);
+ * // Off by default, deprecated for SDK versions >= 30.
+ * webViewSettings.setAllowUniversalAccessFromFileURLs(false);
+ * // Keeping these off is less critical but still a good idea, especially if your app is not
+ * // using file:// or content:// URLs.
+ * webViewSettings.setAllowFileAccess(false);
+ * webViewSettings.setAllowContentAccess(false);
+ *
* // Assets are hosted under http(s)://appassets.androidplatform.net/assets/... .
* // If the application's assets are in the "main/assets" folder this will read the file
* // from "main/assets/www/index.html" and load it as if it were hosted on:
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
index 97418f7..1c39c8a 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
@@ -545,12 +545,14 @@
* Let's say the injected JavaScript object is named {@code myObject}. We will have following
* methods on that object once it is available to use:
* <pre class="prettyprint">
+ * // Web page (in JavaScript)
* // message needs to be a JavaScript String, MessagePorts is an optional parameter.
* myObject.postMessage(message[, MessagePorts])
*
- * // To receive the message posted from the app side. event has a "data" property, which is the
- * // message string from the app side.
- * myObject.onmessage(event)
+ * // To receive messages posted from the app side, assign a function to the "onmessage"
+ * // property. This function should accept a single "event" argument. "event" has a "data"
+ * // property, which is the message string from the app side.
+ * myObject.onmessage = function(event) { ... }
*
* // To be compatible with DOM EventTarget's addEventListener, it accepts type and listener
* // parameters, where type can be only "message" type and listener can only be a JavaScript
@@ -575,7 +577,8 @@
* console.log(event.data);
* }
* myObject.postMessage("I'm ready!");
- *
+ * </pre>
+ * <pre class="prettyprint">
* // App (in Java)
* WebMessageListener myListener = new WebMessageListener() {
* @Override
@@ -585,7 +588,9 @@
* replyProxy.postMessage("Got it!");
* }
* };
- * WebViewCompat.addWebMessageListener(webView, "myObject", rules, myListener);
+ * if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_MESSAGE_LISTENER)) {
+ * WebViewCompat.addWebMessageListener(webView, "myObject", rules, myListener);
+ * }
* </pre>
*
* <p>
@@ -607,6 +612,11 @@
enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
public static void addWebMessageListener(@NonNull WebView webView, @NonNull String jsObjectName,
@NonNull Set<String> allowedOriginRules, @NonNull WebMessageListener listener) {
+ // TODO(b/159823546): Remove the SDK_INT check and put it into
+ // WebViewFeatureInternal.getFeature() after the bug is resolved.
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
+ throw new AssertionError("Should be on Lollipop and above.");
+ }
final WebViewFeatureInternal feature =
WebViewFeatureInternal.getFeature(WebViewFeature.WEB_MESSAGE_LISTENER);
if (feature.isSupportedByWebView()) {
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewProviderAdapter.java b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewProviderAdapter.java
index 34500d59..f5cb0a2f 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewProviderAdapter.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewProviderAdapter.java
@@ -18,12 +18,14 @@
import android.annotation.SuppressLint;
import android.net.Uri;
+import android.os.Build;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
import androidx.webkit.WebMessageCompat;
import androidx.webkit.WebMessagePortCompat;
import androidx.webkit.WebViewCompat;
@@ -52,6 +54,7 @@
/**
* Adapter method WebViewCompat.insertVisualStateCallback().
*/
+ @RequiresApi(Build.VERSION_CODES.KITKAT)
public void insertVisualStateCallback(
long requestId, @NonNull WebViewCompat.VisualStateCallback callback) {
mImpl.insertVisualStateCallback(requestId,
@@ -75,6 +78,7 @@
/**
* Adapter method for {@link WebViewCompat#postWebMessage(WebView, WebMessageCompat, Uri)}.
*/
+ @RequiresApi(Build.VERSION_CODES.KITKAT)
public void postWebMessage(@NonNull WebMessageCompat message, @NonNull Uri targetOrigin) {
mImpl.postMessageToMainFrame(
BoundaryInterfaceReflectionUtil.createInvocationHandlerFor(
@@ -85,6 +89,7 @@
* Adapter method for {@link WebViewCompat#addWebMessageListener(android.webkit.WebView,
* String, List<String>, androidx.webkit.WebViewCompat.WebMessageListener)}.
*/
+ @RequiresApi(Build.VERSION_CODES.KITKAT)
public void addWebMessageListener(@NonNull String jsObjectName,
@NonNull String[] allowedOriginRules,
@NonNull WebViewCompat.WebMessageListener listener) {
@@ -152,6 +157,7 @@
// WebViewRenderProcessClient is a callback class, so it should be last. See
// https://issuetracker.google.com/issues/139770271.
@SuppressLint("LambdaLast")
+ @RequiresApi(Build.VERSION_CODES.KITKAT)
public void setWebViewRenderProcessClient(@Nullable Executor executor,
@Nullable WebViewRenderProcessClient webViewRenderProcessClient) {
InvocationHandler handler = webViewRenderProcessClient != null
diff --git a/work/workmanager-benchmark/src/androidTest/AndroidManifest.xml b/work/workmanager-benchmark/src/androidTest/AndroidManifest.xml
index 9ad6fef..f48b579 100644
--- a/work/workmanager-benchmark/src/androidTest/AndroidManifest.xml
+++ b/work/workmanager-benchmark/src/androidTest/AndroidManifest.xml
@@ -22,5 +22,8 @@
<application
android:debuggable="false"
tools:replace="android:debuggable">
+ <!-- enable profileableByShell for non-intrusive profiling tools -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
</application>
</manifest>
diff --git a/work/workmanager/api/2.4.0-rc01.txt b/work/workmanager/api/2.4.0-rc01.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/2.4.0-rc01.txt
+++ b/work/workmanager/api/2.4.0-rc01.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/api_lint.ignore b/work/workmanager/api/api_lint.ignore
index 444e9d1..8454552 100644
--- a/work/workmanager/api/api_lint.ignore
+++ b/work/workmanager/api/api_lint.ignore
@@ -45,14 +45,10 @@
Builder methods names should use setFoo() / addFoo() / clearFoo() style: method androidx.work.WorkRequest.Builder.keepResultsForAtLeast(long,java.util.concurrent.TimeUnit)
-MissingNullability: androidx.work.Constraints#NONE:
- Missing nullability on field `NONE` in class `class androidx.work.Constraints`
MissingNullability: androidx.work.Constraints.Builder#setTriggerContentMaxDelay(java.time.Duration) parameter #0:
Missing nullability on parameter `duration` in method `setTriggerContentMaxDelay`
MissingNullability: androidx.work.Constraints.Builder#setTriggerContentUpdateDelay(java.time.Duration) parameter #0:
Missing nullability on parameter `duration` in method `setTriggerContentUpdateDelay`
-MissingNullability: androidx.work.Data#EMPTY:
- Missing nullability on field `EMPTY` in class `class androidx.work.Data`
NoByteOrShort: androidx.work.Data#getByte(String, byte):
@@ -61,19 +57,3 @@
Should avoid odd sized primitives; use `int` instead of `byte` in parameter defaultValue in androidx.work.Data.getByte(String key, byte defaultValue)
NoByteOrShort: androidx.work.Data.Builder#putByte(String, byte) parameter #1:
Should avoid odd sized primitives; use `int` instead of `byte` in parameter value in androidx.work.Data.Builder.putByte(String key, byte value)
-
-
-SetterReturnsThis: androidx.work.WorkRequest.Builder#addTag(String):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.addTag(String)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setBackoffCriteria(androidx.work.BackoffPolicy, java.time.Duration):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setBackoffCriteria(androidx.work.BackoffPolicy,java.time.Duration)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setBackoffCriteria(androidx.work.BackoffPolicy, long, java.util.concurrent.TimeUnit):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setBackoffCriteria(androidx.work.BackoffPolicy,long,java.util.concurrent.TimeUnit)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setConstraints(androidx.work.Constraints):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setConstraints(androidx.work.Constraints)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setInitialDelay(java.time.Duration):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setInitialDelay(java.time.Duration)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setInitialDelay(long, java.util.concurrent.TimeUnit):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setInitialDelay(long,java.util.concurrent.TimeUnit)
-SetterReturnsThis: androidx.work.WorkRequest.Builder#setInputData(androidx.work.Data):
- Methods must return the builder object (return type androidx.work.WorkRequest.Builder<B,W> instead of B): method androidx.work.WorkRequest.Builder.setInputData(androidx.work.Data)
diff --git a/work/workmanager/api/current.txt b/work/workmanager/api/current.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/current.txt
+++ b/work/workmanager/api/current.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/public_plus_experimental_2.4.0-rc01.txt b/work/workmanager/api/public_plus_experimental_2.4.0-rc01.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/public_plus_experimental_2.4.0-rc01.txt
+++ b/work/workmanager/api/public_plus_experimental_2.4.0-rc01.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/public_plus_experimental_current.txt b/work/workmanager/api/public_plus_experimental_current.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/public_plus_experimental_current.txt
+++ b/work/workmanager/api/public_plus_experimental_current.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/restricted_2.4.0-rc01.txt b/work/workmanager/api/restricted_2.4.0-rc01.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/restricted_2.4.0-rc01.txt
+++ b/work/workmanager/api/restricted_2.4.0-rc01.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}
diff --git a/work/workmanager/api/restricted_current.txt b/work/workmanager/api/restricted_current.txt
index 25adbb9..6c0ce36 100644
--- a/work/workmanager/api/restricted_current.txt
+++ b/work/workmanager/api/restricted_current.txt
@@ -46,7 +46,7 @@
method public boolean requiresCharging();
method @RequiresApi(23) public boolean requiresDeviceIdle();
method public boolean requiresStorageNotLow();
- field public static final androidx.work.Constraints! NONE;
+ field public static final androidx.work.Constraints NONE;
}
public static final class Constraints.Builder {
@@ -84,7 +84,7 @@
method public String![]? getStringArray(String);
method public <T> boolean hasKeyWithValueOfType(String, Class<T!>);
method public byte[] toByteArray();
- field public static final androidx.work.Data! EMPTY;
+ field public static final androidx.work.Data EMPTY;
field public static final int MAX_DATA_BYTES = 10240; // 0x2800
}