[go: nahoru, domu]

Add helper methods to Layout, Timeline and TimelineEntry and their builders.

These methods exist to ease creating these objects from LayoutElement
and developers can pass in some of the Material Layout objects.

Bug: 223599331
Bug: 223599928
Bug: 223600065
Test: Manually tested.
Relnote: "Add helper methods to convert LayoutElement to Layout, Timeline, TImelineEntry or their builders."
Change-Id: I2f6d1b81d2aa2228d2b01a424cc432ecb4b352ed
diff --git a/wear/tiles/tiles-material/api/current.txt b/wear/tiles/tiles-material/api/current.txt
index c9f8484..d889a1f 100644
--- a/wear/tiles/tiles-material/api/current.txt
+++ b/wear/tiles/tiles-material/api/current.txt
@@ -218,12 +218,6 @@
   }
 
   public class MultiSlotLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class MultiSlotLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -238,12 +232,6 @@
   }
 
   public class PrimaryLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class PrimaryLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -258,12 +246,6 @@
 
   public class ProgressIndicatorLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement getContent();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class ProgressIndicatorLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
diff --git a/wear/tiles/tiles-material/api/public_plus_experimental_current.txt b/wear/tiles/tiles-material/api/public_plus_experimental_current.txt
index c9f8484..d889a1f 100644
--- a/wear/tiles/tiles-material/api/public_plus_experimental_current.txt
+++ b/wear/tiles/tiles-material/api/public_plus_experimental_current.txt
@@ -218,12 +218,6 @@
   }
 
   public class MultiSlotLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class MultiSlotLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -238,12 +232,6 @@
   }
 
   public class PrimaryLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class PrimaryLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -258,12 +246,6 @@
 
   public class ProgressIndicatorLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement getContent();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class ProgressIndicatorLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
diff --git a/wear/tiles/tiles-material/api/restricted_current.txt b/wear/tiles/tiles-material/api/restricted_current.txt
index c9f8484..d889a1f 100644
--- a/wear/tiles/tiles-material/api/restricted_current.txt
+++ b/wear/tiles/tiles-material/api/restricted_current.txt
@@ -218,12 +218,6 @@
   }
 
   public class MultiSlotLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class MultiSlotLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -238,12 +232,6 @@
   }
 
   public class PrimaryLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class PrimaryLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
@@ -258,12 +246,6 @@
 
   public class ProgressIndicatorLayout implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement {
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement getContent();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout toLayout();
-    method public androidx.wear.tiles.LayoutElementBuilders.Layout.Builder toLayoutBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline toTimeline();
-    method public androidx.wear.tiles.TimelineBuilders.Timeline.Builder toTimelineBuilder();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry toTimelineEntry();
-    method public androidx.wear.tiles.TimelineBuilders.TimelineEntry.Builder toTimelineEntryBuilder();
   }
 
   public static final class ProgressIndicatorLayout.Builder implements androidx.wear.tiles.LayoutElementBuilders.LayoutElement.Builder {
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
index 246f664..f913e63 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
@@ -33,12 +33,9 @@
 import androidx.wear.tiles.DimensionBuilders.DpProp;
 import androidx.wear.tiles.LayoutElementBuilders;
 import androidx.wear.tiles.LayoutElementBuilders.Box;
-import androidx.wear.tiles.LayoutElementBuilders.Layout;
 import androidx.wear.tiles.LayoutElementBuilders.LayoutElement;
 import androidx.wear.tiles.LayoutElementBuilders.Row;
 import androidx.wear.tiles.LayoutElementBuilders.Spacer;
-import androidx.wear.tiles.TimelineBuilders.Timeline;
-import androidx.wear.tiles.TimelineBuilders.TimelineEntry;
 import androidx.wear.tiles.proto.LayoutElementProto;
 
 import java.util.ArrayList;
@@ -175,7 +172,7 @@
                 layoutBuilder.setSecondaryLabelTextContent(mSecondaryLabelText);
             }
 
-            if (mSlotsContent.size() > 0) {
+            if (!mSlotsContent.isEmpty()) {
                 float horizontalPadding = layoutBuilder.getHorizontalPadding();
                 DpProp rowWidth = dp(mDeviceParameters.getScreenWidthDp() - horizontalPadding * 2);
                 Row.Builder rowBuilder =
@@ -207,42 +204,6 @@
         }
     }
 
-    /** Returns the {@link Layout} object containing this layout template. */
-    @NonNull
-    public Layout toLayout() {
-        return toLayoutBuilder().build();
-    }
-
-    /** Returns the {@link Layout.Builder} object containing this layout template. */
-    @NonNull
-    public Layout.Builder toLayoutBuilder() {
-        return new Layout.Builder().setRoot(mElement);
-    }
-
-    /** Returns the {@link TimelineEntry.Builder} object containing this layout template. */
-    @NonNull
-    public TimelineEntry.Builder toTimelineEntryBuilder() {
-        return new TimelineEntry.Builder().setLayout(toLayout());
-    }
-
-    /** Returns the {@link TimelineEntry} object containing this layout template. */
-    @NonNull
-    public TimelineEntry toTimelineEntry() {
-        return toTimelineEntryBuilder().build();
-    }
-
-    /** Returns the {@link Timeline.Builder} object containing this layout template. */
-    @NonNull
-    public Timeline.Builder toTimelineBuilder() {
-        return new Timeline.Builder().addTimelineEntry(toTimelineEntry());
-    }
-
-    /** Returns the {@link Timeline} object containing this layout template. */
-    @NonNull
-    public Timeline toTimeline() {
-        return toTimelineBuilder().build();
-    }
-
     /** @hide */
     @NonNull
     @Override
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
index 585f8f2..90245c3 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
@@ -43,13 +43,10 @@
 import androidx.wear.tiles.LayoutElementBuilders;
 import androidx.wear.tiles.LayoutElementBuilders.Box;
 import androidx.wear.tiles.LayoutElementBuilders.Column;
-import androidx.wear.tiles.LayoutElementBuilders.Layout;
 import androidx.wear.tiles.LayoutElementBuilders.LayoutElement;
 import androidx.wear.tiles.LayoutElementBuilders.Spacer;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Padding;
-import androidx.wear.tiles.TimelineBuilders.Timeline;
-import androidx.wear.tiles.TimelineBuilders.TimelineEntry;
 import androidx.wear.tiles.material.CompactChip;
 import androidx.wear.tiles.proto.LayoutElementProto;
 
@@ -267,42 +264,6 @@
         }
     }
 
-    /** Returns the {@link Layout} object containing this layout template. */
-    @NonNull
-    public Layout toLayout() {
-        return toLayoutBuilder().build();
-    }
-
-    /** Returns the {@link Layout.Builder} object containing this layout template. */
-    @NonNull
-    public Layout.Builder toLayoutBuilder() {
-        return new Layout.Builder().setRoot(mElement);
-    }
-
-    /** Returns the {@link TimelineEntry.Builder} object containing this layout template. */
-    @NonNull
-    public TimelineEntry.Builder toTimelineEntryBuilder() {
-        return new TimelineEntry.Builder().setLayout(toLayout());
-    }
-
-    /** Returns the {@link TimelineEntry} object containing this layout template. */
-    @NonNull
-    public TimelineEntry toTimelineEntry() {
-        return toTimelineEntryBuilder().build();
-    }
-
-    /** Returns the {@link Timeline.Builder} object containing this layout template. */
-    @NonNull
-    public Timeline.Builder toTimelineBuilder() {
-        return new Timeline.Builder().addTimelineEntry(toTimelineEntry());
-    }
-
-    /** Returns the {@link Timeline} object containing this layout template. */
-    @NonNull
-    public Timeline toTimeline() {
-        return toTimelineBuilder().build();
-    }
-
     /** @hide */
     @NonNull
     @Override
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/ProgressIndicatorLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/ProgressIndicatorLayout.java
index 06e41d0..cc0d270 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/ProgressIndicatorLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/ProgressIndicatorLayout.java
@@ -32,12 +32,9 @@
 import androidx.wear.tiles.DimensionBuilders.DpProp;
 import androidx.wear.tiles.LayoutElementBuilders;
 import androidx.wear.tiles.LayoutElementBuilders.Box;
-import androidx.wear.tiles.LayoutElementBuilders.Layout;
 import androidx.wear.tiles.LayoutElementBuilders.LayoutElement;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Padding;
-import androidx.wear.tiles.TimelineBuilders.Timeline;
-import androidx.wear.tiles.TimelineBuilders.TimelineEntry;
 import androidx.wear.tiles.material.CircularProgressIndicator;
 import androidx.wear.tiles.proto.LayoutElementProto;
 
@@ -152,42 +149,6 @@
         }
     }
 
-    /** Returns the {@link Layout} object containing this layout template. */
-    @NonNull
-    public Layout toLayout() {
-        return toLayoutBuilder().build();
-    }
-
-    /** Returns the {@link Layout.Builder} object containing this layout template. */
-    @NonNull
-    public Layout.Builder toLayoutBuilder() {
-        return new Layout.Builder().setRoot(mElement);
-    }
-
-    /** Returns the {@link TimelineEntry.Builder} object containing this layout template. */
-    @NonNull
-    public TimelineEntry.Builder toTimelineEntryBuilder() {
-        return new TimelineEntry.Builder().setLayout(toLayout());
-    }
-
-    /** Returns the {@link TimelineEntry} object containing this layout template. */
-    @NonNull
-    public TimelineEntry toTimelineEntry() {
-        return toTimelineEntryBuilder().build();
-    }
-
-    /** Returns the {@link Timeline.Builder} object containing this layout template. */
-    @NonNull
-    public Timeline.Builder toTimelineBuilder() {
-        return new Timeline.Builder().addTimelineEntry(toTimelineEntry());
-    }
-
-    /** Returns the {@link Timeline} object containing this layout template. */
-    @NonNull
-    public Timeline toTimeline() {
-        return toTimelineBuilder().build();
-    }
-
     /** Get the inner content from this layout. */
     @NonNull
     public LayoutElement getContent() {
diff --git a/wear/tiles/tiles/api/current.txt b/wear/tiles/tiles/api/current.txt
index 37c11ec..d2a5bf8 100644
--- a/wear/tiles/tiles/api/current.txt
+++ b/wear/tiles/tiles/api/current.txt
@@ -554,6 +554,7 @@
   }
 
   public static final class LayoutElementBuilders.Layout {
+    method public static androidx.wear.tiles.LayoutElementBuilders.Layout fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement? getRoot();
   }
 
@@ -1001,6 +1002,7 @@
   }
 
   public static final class TimelineBuilders.Timeline {
+    method public static androidx.wear.tiles.TimelineBuilders.Timeline fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.tiles.TimelineBuilders.TimelineEntry!> getTimelineEntries();
   }
 
@@ -1011,6 +1013,7 @@
   }
 
   public static final class TimelineBuilders.TimelineEntry {
+    method public static androidx.wear.tiles.TimelineBuilders.TimelineEntry fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.Layout? getLayout();
     method public androidx.wear.tiles.TimelineBuilders.TimeInterval? getValidity();
   }
diff --git a/wear/tiles/tiles/api/public_plus_experimental_current.txt b/wear/tiles/tiles/api/public_plus_experimental_current.txt
index 161cb59..9b585a1 100644
--- a/wear/tiles/tiles/api/public_plus_experimental_current.txt
+++ b/wear/tiles/tiles/api/public_plus_experimental_current.txt
@@ -568,6 +568,7 @@
   }
 
   public static final class LayoutElementBuilders.Layout {
+    method public static androidx.wear.tiles.LayoutElementBuilders.Layout fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement? getRoot();
   }
 
@@ -1018,6 +1019,7 @@
   }
 
   public static final class TimelineBuilders.Timeline {
+    method public static androidx.wear.tiles.TimelineBuilders.Timeline fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.tiles.TimelineBuilders.TimelineEntry!> getTimelineEntries();
   }
 
@@ -1028,6 +1030,7 @@
   }
 
   public static final class TimelineBuilders.TimelineEntry {
+    method public static androidx.wear.tiles.TimelineBuilders.TimelineEntry fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.Layout? getLayout();
     method public androidx.wear.tiles.TimelineBuilders.TimeInterval? getValidity();
   }
diff --git a/wear/tiles/tiles/api/restricted_current.txt b/wear/tiles/tiles/api/restricted_current.txt
index 37c11ec..d2a5bf8 100644
--- a/wear/tiles/tiles/api/restricted_current.txt
+++ b/wear/tiles/tiles/api/restricted_current.txt
@@ -554,6 +554,7 @@
   }
 
   public static final class LayoutElementBuilders.Layout {
+    method public static androidx.wear.tiles.LayoutElementBuilders.Layout fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.LayoutElement? getRoot();
   }
 
@@ -1001,6 +1002,7 @@
   }
 
   public static final class TimelineBuilders.Timeline {
+    method public static androidx.wear.tiles.TimelineBuilders.Timeline fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public java.util.List<androidx.wear.tiles.TimelineBuilders.TimelineEntry!> getTimelineEntries();
   }
 
@@ -1011,6 +1013,7 @@
   }
 
   public static final class TimelineBuilders.TimelineEntry {
+    method public static androidx.wear.tiles.TimelineBuilders.TimelineEntry fromLayoutElement(androidx.wear.tiles.LayoutElementBuilders.LayoutElement);
     method public androidx.wear.tiles.LayoutElementBuilders.Layout? getLayout();
     method public androidx.wear.tiles.TimelineBuilders.TimeInterval? getValidity();
   }
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
index d696c43..1da6e2a 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
@@ -3579,6 +3579,12 @@
             return new Layout(proto);
         }
 
+        /** Returns the {@link Layout} object containing the given layout element. */
+        @NonNull
+        public static Layout fromLayoutElement(@NonNull LayoutElement layoutElement) {
+            return new Builder().setRoot(layoutElement).build();
+        }
+
         /** @hide */
         @RestrictTo(Scope.LIBRARY_GROUP)
         @NonNull
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
index 7902f89..647d4cc 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
@@ -139,6 +139,15 @@
             return new TimelineEntry(proto);
         }
 
+        /** Returns the {@link TimelineEntry} object containing the given layout element. */
+        @NonNull
+        public static TimelineEntry fromLayoutElement(
+                @NonNull LayoutElementBuilders.LayoutElement layoutElement
+        ) {
+            return new Builder()
+                    .setLayout(Layout.fromLayoutElement(layoutElement)).build();
+        }
+
         /** @hide */
         @RestrictTo(Scope.LIBRARY_GROUP)
         @NonNull
@@ -212,6 +221,15 @@
             return new Timeline(proto);
         }
 
+        /** Returns the {@link Timeline} object containing the given layout element. */
+        @NonNull
+        public static Timeline fromLayoutElement(
+                @NonNull LayoutElementBuilders.LayoutElement layoutElement
+        ) {
+            return new Builder()
+                    .addTimelineEntry(TimelineEntry.fromLayoutElement(layoutElement)).build();
+        }
+
         /** @hide */
         @RestrictTo(Scope.LIBRARY_GROUP)
         @NonNull