DO NOT MERGE: Merge Oreo MR1 into master

Exempt-From-Owner-Approval: Changes already landed internally
Change-Id: I98a5f23166133cf5ee1c70ac6549cd814fa80be6
diff --git a/library/main/src/com/android/setupwizardlib/util/Partner.java b/library/main/src/com/android/setupwizardlib/util/Partner.java
index d6e4919..67f5546 100644
--- a/library/main/src/com/android/setupwizardlib/util/Partner.java
+++ b/library/main/src/com/android/setupwizardlib/util/Partner.java
@@ -26,6 +26,9 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
+import android.support.annotation.AnyRes;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.StringRes;
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
@@ -56,7 +59,7 @@
      *
      * @see #getResourceEntry(android.content.Context, int)
      */
-    public static Drawable getDrawable(Context context, int id) {
+    public static Drawable getDrawable(Context context, @DrawableRes int id) {
         final ResourceEntry entry = getResourceEntry(context, id);
         return entry.resources.getDrawable(entry.id);
     }
@@ -67,12 +70,21 @@
      *
      * @see #getResourceEntry(android.content.Context, int)
      */
-    public static String getString(Context context, int id) {
+    public static String getString(Context context, @StringRes int id) {
         final ResourceEntry entry = getResourceEntry(context, id);
         return entry.resources.getString(entry.id);
     }
 
     /**
+     * Convenience method to get a CharSequence from partner overlay, or if not available, the text
+     * from the original context.
+     */
+    public static CharSequence getText(Context context, @StringRes int id) {
+        final ResourceEntry entry = getResourceEntry(context, id);
+        return entry.resources.getText(id);
+    }
+
+    /**
      * Find an entry of resource in the overlay package provided by partners. It will first look for
      * the resource in the overlay package, and if not available, will return the one in the
      * original context.
@@ -82,7 +94,7 @@
      * {@code entry.resources.getString(entry.id)}, or other methods available in
      * {@link android.content.res.Resources}.
      */
-    public static ResourceEntry getResourceEntry(Context context, int id) {
+    public static ResourceEntry getResourceEntry(Context context, @AnyRes int id) {
         final Partner partner = Partner.get(context);
         if (partner != null) {
             final Resources ourResources = context.getResources();
diff --git a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
index 9f1d2e7..9c79eb5 100644
--- a/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
+++ b/library/main/src/com/android/setupwizardlib/view/IllustrationVideoView.java
@@ -233,4 +233,8 @@
     public void onSeekComplete(MediaPlayer mp) {
         mp.start();
     }
+
+    public int getCurrentPosition() {
+        return mMediaPlayer == null ? 0 : mMediaPlayer.getCurrentPosition();
+    }
 }
diff --git a/library/platform/res/values-v23/styles.xml b/library/platform/res/values-v23/styles.xml
index 2eb5caf..9fff5f1 100644
--- a/library/platform/res/values-v23/styles.xml
+++ b/library/platform/res/values-v23/styles.xml
@@ -92,7 +92,7 @@
         <item name="android:listPreferredItemPaddingEnd">?attr/suwMarginSides</item>
         <item name="android:listPreferredItemPaddingStart">?attr/suwMarginSides</item>
         <item name="android:navigationBarColor">@android:color/black</item>
-        <item name="android:statusBarColor">?android:attr/colorPrimary</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:textAppearanceListItem">@style/TextAppearance.SuwGlifItemTitle</item>
         <item name="android:textAppearanceListItemSmall">@style/TextAppearance.SuwGlifItemSummary</item>
         <item name="android:textColorLink">@color/suw_color_accent_glif_dark</item>
@@ -124,7 +124,7 @@
         <item name="android:listPreferredItemPaddingEnd">?attr/suwMarginSides</item>
         <item name="android:listPreferredItemPaddingStart">?attr/suwMarginSides</item>
         <item name="android:navigationBarColor">@android:color/black</item>
-        <item name="android:statusBarColor">?android:attr/colorPrimary</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:textAppearanceListItem">@style/TextAppearance.SuwGlifItemTitle</item>
         <item name="android:textAppearanceListItemSmall">@style/TextAppearance.SuwGlifItemSummary</item>
         <item name="android:textColorLink">@color/suw_color_accent_glif_light</item>
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
index e4e311f..aea2c03 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java
@@ -20,9 +20,13 @@
 import static org.junit.Assert.assertNull;
 import static org.robolectric.RuntimeEnvironment.application;
 
+import android.annotation.TargetApi;
+import android.app.Activity;
 import android.content.Context;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
 import android.view.ContextThemeWrapper;
 import android.widget.Button;
 
@@ -63,4 +67,21 @@
             assertEquals("ff4285f4", Integer.toHexString(button.getTextColors().getDefaultColor()));
         }
     }
+
+    @TargetApi(VERSION_CODES.LOLLIPOP)
+    @Config(sdk = Config.NEWEST_SDK)
+    @Test
+    public void glifThemeLight_statusBarColorShouldBeTransparent() {
+        GlifThemeActivity activity = Robolectric.setupActivity(GlifThemeActivity.class);
+        assertEquals(0x00000000, activity.getWindow().getStatusBarColor());
+    }
+
+    private static class GlifThemeActivity extends Activity {
+
+        @Override
+        protected void onCreate(@Nullable Bundle savedInstanceState) {
+            setTheme(R.style.SuwThemeGlif_Light);
+            super.onCreate(savedInstanceState);
+        }
+    }
 }