Merge "Fix FloatingActionButton hide() and show()" into nyc-support-24.1-dev
diff --git a/buildSrc/studioCompat.gradle b/buildSrc/studioCompat.gradle
index 0c6aa48..123eec1 100644
--- a/buildSrc/studioCompat.gradle
+++ b/buildSrc/studioCompat.gradle
@@ -76,7 +76,7 @@
                         new ApiModule("api24", ApiModule.CURRENT)
                 ],
                 dependencies : [":support-compat"],
-                folder : "v4",
+                folder : "core-utils",
                 moduleName : "support-core-utils"
         ],
         coreui : [
diff --git a/core-combined/Android.mk b/core-combined/Android.mk
deleted file mode 100644
index d183f4d..0000000
--- a/core-combined/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2016 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.
-
-LOCAL_PATH := $(call my-dir)
-
-# Here is the final static library that apps can link against.
-# Applications that use this library must specify
-#
-#   LOCAL_STATIC_ANDROID_LIBRARIES := \
-#       android-support-v4
-#
-# in their makefiles to include the resources and their dependencies in their package.
-include $(CLEAR_VARS)
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE := android-support-v4
-LOCAL_SDK_VERSION := 9
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    android-support-compat \
-    android-support-media-compat \
-    android-support-core-utils \
-    android-support-core-ui \
-    android-support-fragment
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-LOCAL_JAR_EXCLUDE_FILES := none
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/core-combined/build.gradle b/core-combined/build.gradle
deleted file mode 100644
index f0226e3..0000000
--- a/core-combined/build.gradle
+++ /dev/null
@@ -1,64 +0,0 @@
-apply plugin: 'com.android.library'
-
-archivesBaseName = 'support-v4'
-dependencies {
-    compile project(':support-compat')
-    compile project(':support-media-compat')
-    compile project(':support-core-utils')
-    compile project(':support-core-ui')
-    compile project(':support-fragment')
-}
-
-android {
-    compileSdkVersion project.ext.currentSdk
-
-    defaultConfig {
-        minSdkVersion 9
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-        // This disables the builds tools automatic vector -> PNG generation
-        generatedDensities = []
-    }
-
-    sourceSets {
-        main.manifest.srcFile 'AndroidManifest.xml'
-    }
-
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_7
-        targetCompatibility JavaVersion.VERSION_1_7
-    }
-}
-
-uploadArchives {
-    repositories {
-        mavenDeployer {
-            repository(url: uri(rootProject.ext.supportRepoOut)) {
-            }
-
-            pom.project {
-                name 'Android Support Library v4'
-                description "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 4 or later."
-                url 'http://developer.android.com/tools/extras/support-library.html'
-                inceptionYear '2011'
-
-                licenses {
-                    license {
-                        name 'The Apache Software License, Version 2.0'
-                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
-                        distribution 'repo'
-                    }
-                }
-
-                scm {
-                    url "http://source.android.com"
-                    connection "scm:git:https://android.googlesource.com/platform/frameworks/support"
-                }
-                developers {
-                    developer {
-                        name 'The Android Open Source Project'
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/core-utils/Android.mk b/core-utils/Android.mk
new file mode 100644
index 0000000..8063cb3
--- /dev/null
+++ b/core-utils/Android.mk
@@ -0,0 +1,122 @@
+# Copyright (C) 2011 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# A helper sub-library that makes direct use of Gingerbread APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-gingerbread
+LOCAL_SDK_VERSION := 9
+LOCAL_SRC_FILES := $(call all-java-files-under, gingerbread)
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    android-support-annotations \
+    android-support-compat
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of Honeycomb APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-honeycomb
+LOCAL_SDK_VERSION := 11
+LOCAL_SRC_FILES := $(call all-java-files-under, honeycomb)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-gingerbread
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of JellyBean APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-jellybean
+LOCAL_SDK_VERSION := 16
+LOCAL_SRC_FILES := $(call all-java-files-under, jellybean)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-honeycomb
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of KitKat APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-kitkat
+LOCAL_SDK_VERSION := 19
+LOCAL_SRC_FILES := $(call all-java-files-under, kitkat)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-jellybean
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of V20 APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-api20
+LOCAL_SDK_VERSION := 20
+LOCAL_SRC_FILES := $(call all-java-files-under, api20)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-kitkat
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of Lollipop APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-api21
+LOCAL_SDK_VERSION := 21
+LOCAL_SRC_FILES := $(call all-java-files-under, api21)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api20
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of V23 APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-api23
+LOCAL_SDK_VERSION := 23
+LOCAL_SRC_FILES := $(call all-java-files-under, api23)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api21
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# A helper sub-library that makes direct use of V24 APIs.
+include $(CLEAR_VARS)
+LOCAL_MODULE := android-support-core-utils-api24
+LOCAL_SDK_VERSION := $(SUPPORT_CURRENT_SDK_VERSION)
+LOCAL_SRC_FILES := $(call all-java-files-under, api24)
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api23
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+# -----------------------------------------------------------------------
+
+# Here is the final static library that apps can link against.
+include $(CLEAR_VARS)
+LOCAL_USE_AAPT2 := true
+LOCAL_MODULE := android-support-core-utils
+LOCAL_SDK_VERSION := 9
+LOCAL_AIDL_INCLUDES := frameworks/support/v4/java
+LOCAL_SRC_FILES := $(call all-java-files-under, java) \
+    $(call all-Iaidl-files-under, java)
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+LOCAL_STATIC_JAVA_LIBRARIES += android-support-core-utils-api24
+LOCAL_SHARED_ANDROID_LIBRARIES := \
+    android-support-compat \
+    android-support-annotations
+LOCAL_JAR_EXCLUDE_FILES := none
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/core-combined/AndroidManifest.xml b/core-utils/AndroidManifest.xml
similarity index 91%
rename from core-combined/AndroidManifest.xml
rename to core-utils/AndroidManifest.xml
index d76c581..586a28e 100644
--- a/core-combined/AndroidManifest.xml
+++ b/core-utils/AndroidManifest.xml
@@ -15,7 +15,7 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
-          package="android.support.v4">
-    <uses-sdk android:minSdkVersion="9" tools:overrideLibrary="android.support.v4"/>
+          package="android.support.coreutils">
+    <uses-sdk android:minSdkVersion="9" tools:overrideLibrary="android.support.coreutils"/>
     <application />
 </manifest>
diff --git a/v4/api20/android/support/v4/print/PrintHelperApi20.java b/core-utils/api20/android/support/v4/print/PrintHelperApi20.java
similarity index 100%
rename from v4/api20/android/support/v4/print/PrintHelperApi20.java
rename to core-utils/api20/android/support/v4/print/PrintHelperApi20.java
diff --git a/v4/api21/android/support/v4/graphics/drawable/RoundedBitmapDrawable21.java b/core-utils/api21/android/support/v4/graphics/drawable/RoundedBitmapDrawable21.java
similarity index 100%
rename from v4/api21/android/support/v4/graphics/drawable/RoundedBitmapDrawable21.java
rename to core-utils/api21/android/support/v4/graphics/drawable/RoundedBitmapDrawable21.java
diff --git a/v4/api21/android/support/v4/provider/DocumentsContractApi21.java b/core-utils/api21/android/support/v4/provider/DocumentsContractApi21.java
similarity index 100%
rename from v4/api21/android/support/v4/provider/DocumentsContractApi21.java
rename to core-utils/api21/android/support/v4/provider/DocumentsContractApi21.java
diff --git a/v4/api23/android/support/v4/print/PrintHelperApi23.java b/core-utils/api23/android/support/v4/print/PrintHelperApi23.java
similarity index 100%
rename from v4/api23/android/support/v4/print/PrintHelperApi23.java
rename to core-utils/api23/android/support/v4/print/PrintHelperApi23.java
diff --git a/v4/api24/android/support/v4/print/PrintHelperApi24.java b/core-utils/api24/android/support/v4/print/PrintHelperApi24.java
similarity index 100%
rename from v4/api24/android/support/v4/print/PrintHelperApi24.java
rename to core-utils/api24/android/support/v4/print/PrintHelperApi24.java
diff --git a/core-utils/build.gradle b/core-utils/build.gradle
new file mode 100644
index 0000000..38d4887
--- /dev/null
+++ b/core-utils/build.gradle
@@ -0,0 +1,133 @@
+apply plugin: 'com.android.library'
+archivesBaseName = 'support-core-utils'
+
+
+createApiSourceSets(project, gradle.ext.studioCompat.modules.coreutils.apiTargets)
+dependencies {
+    compile project(':support-compat')
+    androidTestCompile ('com.android.support.test:runner:0.4.1') {
+        exclude module: 'support-annotations'
+    }
+    androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1') {
+        exclude module: 'support-annotations'
+    }
+    androidTestCompile 'org.mockito:mockito-core:1.9.5'
+    androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
+    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
+    testCompile 'junit:junit:4.12'
+}
+
+sourceCompatibility = JavaVersion.VERSION_1_7
+targetCompatibility = JavaVersion.VERSION_1_7
+setApiModuleDependencies(project, dependencies, gradle.ext.studioCompat.modules.coreutils.dependencies)
+
+android {
+    compileSdkVersion 9
+
+    defaultConfig {
+        minSdkVersion 9
+        // TODO: get target from branch
+        //targetSdkVersion 19
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+
+    sourceSets {
+        main.manifest.srcFile 'AndroidManifest.xml'
+        main.java.srcDirs = ['java']
+        main.aidl.srcDirs = ['java']
+
+        androidTest.setRoot('tests')
+        androidTest.java.srcDir 'tests/java'
+        androidTest.manifest.srcFile 'tests/AndroidManifest.xml'
+    }
+
+    lintOptions {
+        // TODO: fix errors and reenable.
+        abortOnError false
+    }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_7
+        targetCompatibility JavaVersion.VERSION_1_7
+    }
+
+    testOptions {
+        unitTests.returnDefaultValues = true
+        compileSdkVersion project.ext.currentSdk
+    }
+}
+
+android.libraryVariants.all { variant ->
+    def name = variant.buildType.name
+
+    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
+        return; // Skip debug builds.
+    }
+    def suffix = name.capitalize()
+
+    def jarTask = project.tasks.create(name: "jar${suffix}", type: Jar){
+        dependsOn variant.javaCompile
+        from variant.javaCompile.destinationDir
+        from 'LICENSE.txt'
+    }
+    def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
+        source android.sourceSets.main.java
+        classpath = files(variant.javaCompile.classpath.files) + files(
+                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
+    }
+
+    def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
+        classifier = 'javadoc'
+        from 'build/docs/javadoc'
+    }
+
+    def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
+        classifier = 'sources'
+        from android.sourceSets.main.java.srcDirs
+        exclude('android/content/pm/**')
+        exclude('android/service/media/**')
+    }
+
+    project.ext.allSS.each { ss ->
+        javadocTask.source ss.java
+        sourcesJarTask.from ss.java.srcDirs
+    }
+
+    artifacts.add('archives', javadocJarTask);
+    artifacts.add('archives', sourcesJarTask);
+}
+
+uploadArchives {
+    repositories {
+        mavenDeployer {
+            repository(url: uri(rootProject.ext.supportRepoOut)) {
+            }
+
+            pom.project {
+                name 'Android Support Library v4'
+                description "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 4 or later."
+                url 'http://developer.android.com/tools/extras/support-library.html'
+                inceptionYear '2011'
+
+                licenses {
+                    license {
+                        name 'The Apache Software License, Version 2.0'
+                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                        distribution 'repo'
+                    }
+                }
+
+                scm {
+                    url "http://source.android.com"
+                    connection "scm:git:https://android.googlesource.com/platform/frameworks/support"
+                }
+                developers {
+                    developer {
+                        name 'The Android Open Source Project'
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/v4/gingerbread/android/support/v4/graphics/drawable/RoundedBitmapDrawable.java b/core-utils/gingerbread/android/support/v4/graphics/drawable/RoundedBitmapDrawable.java
similarity index 100%
rename from v4/gingerbread/android/support/v4/graphics/drawable/RoundedBitmapDrawable.java
rename to core-utils/gingerbread/android/support/v4/graphics/drawable/RoundedBitmapDrawable.java
diff --git a/v4/honeycomb/android/support/v4/app/TaskStackBuilderHoneycomb.java b/core-utils/honeycomb/android/support/v4/app/TaskStackBuilderHoneycomb.java
similarity index 100%
rename from v4/honeycomb/android/support/v4/app/TaskStackBuilderHoneycomb.java
rename to core-utils/honeycomb/android/support/v4/app/TaskStackBuilderHoneycomb.java
diff --git a/v4/java/android/support/v4/app/AppLaunchChecker.java b/core-utils/java/android/support/v4/app/AppLaunchChecker.java
similarity index 100%
rename from v4/java/android/support/v4/app/AppLaunchChecker.java
rename to core-utils/java/android/support/v4/app/AppLaunchChecker.java
diff --git a/v4/java/android/support/v4/app/NavUtils.java b/core-utils/java/android/support/v4/app/NavUtils.java
similarity index 100%
rename from v4/java/android/support/v4/app/NavUtils.java
rename to core-utils/java/android/support/v4/app/NavUtils.java
diff --git a/v4/java/android/support/v4/app/TaskStackBuilder.java b/core-utils/java/android/support/v4/app/TaskStackBuilder.java
similarity index 100%
rename from v4/java/android/support/v4/app/TaskStackBuilder.java
rename to core-utils/java/android/support/v4/app/TaskStackBuilder.java
diff --git a/v4/java/android/support/v4/app/package.html b/core-utils/java/android/support/v4/app/package.html
similarity index 100%
rename from v4/java/android/support/v4/app/package.html
rename to core-utils/java/android/support/v4/app/package.html
diff --git a/v4/java/android/support/v4/content/AsyncTaskLoader.java b/core-utils/java/android/support/v4/content/AsyncTaskLoader.java
similarity index 100%
rename from v4/java/android/support/v4/content/AsyncTaskLoader.java
rename to core-utils/java/android/support/v4/content/AsyncTaskLoader.java
diff --git a/v4/java/android/support/v4/content/CursorLoader.java b/core-utils/java/android/support/v4/content/CursorLoader.java
similarity index 100%
rename from v4/java/android/support/v4/content/CursorLoader.java
rename to core-utils/java/android/support/v4/content/CursorLoader.java
diff --git a/v4/java/android/support/v4/content/FileProvider.java b/core-utils/java/android/support/v4/content/FileProvider.java
similarity index 100%
rename from v4/java/android/support/v4/content/FileProvider.java
rename to core-utils/java/android/support/v4/content/FileProvider.java
diff --git a/v4/java/android/support/v4/content/Loader.java b/core-utils/java/android/support/v4/content/Loader.java
similarity index 100%
rename from v4/java/android/support/v4/content/Loader.java
rename to core-utils/java/android/support/v4/content/Loader.java
diff --git a/v4/java/android/support/v4/content/LocalBroadcastManager.java b/core-utils/java/android/support/v4/content/LocalBroadcastManager.java
similarity index 100%
rename from v4/java/android/support/v4/content/LocalBroadcastManager.java
rename to core-utils/java/android/support/v4/content/LocalBroadcastManager.java
diff --git a/v4/java/android/support/v4/content/PermissionChecker.java b/core-utils/java/android/support/v4/content/PermissionChecker.java
similarity index 100%
rename from v4/java/android/support/v4/content/PermissionChecker.java
rename to core-utils/java/android/support/v4/content/PermissionChecker.java
diff --git a/v4/java/android/support/v4/content/WakefulBroadcastReceiver.java b/core-utils/java/android/support/v4/content/WakefulBroadcastReceiver.java
similarity index 100%
rename from v4/java/android/support/v4/content/WakefulBroadcastReceiver.java
rename to core-utils/java/android/support/v4/content/WakefulBroadcastReceiver.java
diff --git a/v4/java/android/support/v4/content/package.html b/core-utils/java/android/support/v4/content/package.html
similarity index 100%
rename from v4/java/android/support/v4/content/package.html
rename to core-utils/java/android/support/v4/content/package.html
diff --git a/v4/java/android/support/v4/content/res/TypedArrayUtils.java b/core-utils/java/android/support/v4/content/res/TypedArrayUtils.java
similarity index 100%
rename from v4/java/android/support/v4/content/res/TypedArrayUtils.java
rename to core-utils/java/android/support/v4/content/res/TypedArrayUtils.java
diff --git a/v4/java/android/support/v4/graphics/ColorUtils.java b/core-utils/java/android/support/v4/graphics/ColorUtils.java
similarity index 100%
rename from v4/java/android/support/v4/graphics/ColorUtils.java
rename to core-utils/java/android/support/v4/graphics/ColorUtils.java
diff --git a/v4/java/android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory.java b/core-utils/java/android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory.java
similarity index 100%
rename from v4/java/android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory.java
rename to core-utils/java/android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory.java
diff --git a/v4/java/android/support/v4/print/PrintHelper.java b/core-utils/java/android/support/v4/print/PrintHelper.java
similarity index 100%
rename from v4/java/android/support/v4/print/PrintHelper.java
rename to core-utils/java/android/support/v4/print/PrintHelper.java
diff --git a/v4/java/android/support/v4/provider/DocumentFile.java b/core-utils/java/android/support/v4/provider/DocumentFile.java
similarity index 100%
rename from v4/java/android/support/v4/provider/DocumentFile.java
rename to core-utils/java/android/support/v4/provider/DocumentFile.java
diff --git a/v4/java/android/support/v4/provider/RawDocumentFile.java b/core-utils/java/android/support/v4/provider/RawDocumentFile.java
similarity index 100%
rename from v4/java/android/support/v4/provider/RawDocumentFile.java
rename to core-utils/java/android/support/v4/provider/RawDocumentFile.java
diff --git a/v4/java/android/support/v4/provider/SingleDocumentFile.java b/core-utils/java/android/support/v4/provider/SingleDocumentFile.java
similarity index 100%
rename from v4/java/android/support/v4/provider/SingleDocumentFile.java
rename to core-utils/java/android/support/v4/provider/SingleDocumentFile.java
diff --git a/v4/java/android/support/v4/provider/TreeDocumentFile.java b/core-utils/java/android/support/v4/provider/TreeDocumentFile.java
similarity index 100%
rename from v4/java/android/support/v4/provider/TreeDocumentFile.java
rename to core-utils/java/android/support/v4/provider/TreeDocumentFile.java
diff --git a/v4/java/android/support/v4/text/BidiFormatter.java b/core-utils/java/android/support/v4/text/BidiFormatter.java
similarity index 100%
rename from v4/java/android/support/v4/text/BidiFormatter.java
rename to core-utils/java/android/support/v4/text/BidiFormatter.java
diff --git a/v4/jellybean/android/support/v4/app/NavUtilsJB.java b/core-utils/jellybean/android/support/v4/app/NavUtilsJB.java
similarity index 100%
rename from v4/jellybean/android/support/v4/app/NavUtilsJB.java
rename to core-utils/jellybean/android/support/v4/app/NavUtilsJB.java
diff --git a/v4/jellybean/android/support/v4/app/TaskStackBuilderJellybean.java b/core-utils/jellybean/android/support/v4/app/TaskStackBuilderJellybean.java
similarity index 100%
rename from v4/jellybean/android/support/v4/app/TaskStackBuilderJellybean.java
rename to core-utils/jellybean/android/support/v4/app/TaskStackBuilderJellybean.java
diff --git a/v4/kitkat/android/support/v4/print/PrintHelperKitkat.java b/core-utils/kitkat/android/support/v4/print/PrintHelperKitkat.java
similarity index 100%
rename from v4/kitkat/android/support/v4/print/PrintHelperKitkat.java
rename to core-utils/kitkat/android/support/v4/print/PrintHelperKitkat.java
diff --git a/v4/kitkat/android/support/v4/provider/DocumentsContractApi19.java b/core-utils/kitkat/android/support/v4/provider/DocumentsContractApi19.java
similarity index 100%
rename from v4/kitkat/android/support/v4/provider/DocumentsContractApi19.java
rename to core-utils/kitkat/android/support/v4/provider/DocumentsContractApi19.java
diff --git a/v4/tests/AndroidManifest.xml b/core-utils/tests/AndroidManifest.xml
similarity index 100%
rename from v4/tests/AndroidManifest.xml
rename to core-utils/tests/AndroidManifest.xml
diff --git a/v4/tests/NO_DOCS b/core-utils/tests/NO_DOCS
similarity index 100%
rename from v4/tests/NO_DOCS
rename to core-utils/tests/NO_DOCS
diff --git a/v4/tests/java/android/support/v4/content/FileProviderTest.java b/core-utils/tests/java/android/support/v4/content/FileProviderTest.java
similarity index 100%
rename from v4/tests/java/android/support/v4/content/FileProviderTest.java
rename to core-utils/tests/java/android/support/v4/content/FileProviderTest.java
diff --git a/v4/tests/java/android/support/v4/graphics/ColorUtilsTest.java b/core-utils/tests/java/android/support/v4/graphics/ColorUtilsTest.java
similarity index 100%
rename from v4/tests/java/android/support/v4/graphics/ColorUtilsTest.java
rename to core-utils/tests/java/android/support/v4/graphics/ColorUtilsTest.java
diff --git a/v4/tests/java/android/support/v4/text/BidiFormatterTest.java b/core-utils/tests/java/android/support/v4/text/BidiFormatterTest.java
similarity index 100%
rename from v4/tests/java/android/support/v4/text/BidiFormatterTest.java
rename to core-utils/tests/java/android/support/v4/text/BidiFormatterTest.java
diff --git a/v4/tests/res/xml/paths.xml b/core-utils/tests/res/xml/paths.xml
similarity index 100%
rename from v4/tests/res/xml/paths.xml
rename to core-utils/tests/res/xml/paths.xml
diff --git a/design/src/android/support/design/widget/BottomNavigationView.java b/design/src/android/support/design/widget/BottomNavigationView.java
index 0f04ce3..c5e6ea1 100644
--- a/design/src/android/support/design/widget/BottomNavigationView.java
+++ b/design/src/android/support/design/widget/BottomNavigationView.java
@@ -59,12 +59,12 @@
  * <pre>
  * &lt;android.support.design.widget.BottomNavigationView
  *     xmlns:android="http://schemas.android.com/apk/res/android"
- *     xmlns:app="http://schemas.android.com/apk/res-auto"
+ *     xmlns:design="http://schema.android.com/apk/res/android.support.design"
  *     android:id="@+id/navigation"
  *     android:layout_width="wrap_content"
  *     android:layout_height="match_parent"
  *     android:layout_gravity="start"
- *     app:menu="@menu/my_navigation_items" /&gt;
+ *     design:menu="@menu/my_navigation_items" /&gt;
  * </pre>
  */
 public class BottomNavigationView extends FrameLayout {
diff --git a/design/tests/res/layout/design_text_input.xml b/design/tests/res/layout/design_text_input.xml
index 79b6446..d7f21a8 100644
--- a/design/tests/res/layout/design_text_input.xml
+++ b/design/tests/res/layout/design_text_input.xml
@@ -32,6 +32,7 @@
                 android:id="@+id/textinput_edittext"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:imeOptions="flagNoExtractUi"
                 android:hint="@string/textinput_hint"/>
 
     </android.support.design.widget.TextInputLayout>
@@ -46,6 +47,7 @@
             android:id="@+id/textinput_edittext_pwd"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:imeOptions="flagNoExtractUi"
             android:hint="@string/textinput_hint"
             android:inputType="textPassword"/>
 
diff --git a/settings.gradle b/settings.gradle
index f29434a..fcdd6c3 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -22,10 +22,10 @@
 project(':support-fragment').projectDir = new File(rootDir, 'fragment')
 
 include ':support-core-utils'
-project(':support-core-utils').projectDir = new File(rootDir, 'v4')
+project(':support-core-utils').projectDir = new File(rootDir, 'core-utils')
 
 include ':support-v4'
-project(':support-v4').projectDir = new File(rootDir, 'core-combined')
+project(':support-v4').projectDir = new File(rootDir, 'v4')
 
 include ':support-appcompat-v7'
 project(':support-appcompat-v7').projectDir = new File(rootDir, 'v7/appcompat')
diff --git a/v4/Android.mk b/v4/Android.mk
index 8063cb3..d183f4d 100644
--- a/v4/Android.mk
+++ b/v4/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2011 The Android Open Source Project
+# Copyright (C) 2016 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.
@@ -14,109 +14,24 @@
 
 LOCAL_PATH := $(call my-dir)
 
-# A helper sub-library that makes direct use of Gingerbread APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-gingerbread
-LOCAL_SDK_VERSION := 9
-LOCAL_SRC_FILES := $(call all-java-files-under, gingerbread)
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    android-support-annotations \
-    android-support-compat
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of Honeycomb APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-honeycomb
-LOCAL_SDK_VERSION := 11
-LOCAL_SRC_FILES := $(call all-java-files-under, honeycomb)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-gingerbread
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of JellyBean APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-jellybean
-LOCAL_SDK_VERSION := 16
-LOCAL_SRC_FILES := $(call all-java-files-under, jellybean)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-honeycomb
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of KitKat APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-kitkat
-LOCAL_SDK_VERSION := 19
-LOCAL_SRC_FILES := $(call all-java-files-under, kitkat)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-jellybean
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of V20 APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-api20
-LOCAL_SDK_VERSION := 20
-LOCAL_SRC_FILES := $(call all-java-files-under, api20)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-kitkat
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of Lollipop APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-api21
-LOCAL_SDK_VERSION := 21
-LOCAL_SRC_FILES := $(call all-java-files-under, api21)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api20
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of V23 APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-api23
-LOCAL_SDK_VERSION := 23
-LOCAL_SRC_FILES := $(call all-java-files-under, api23)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api21
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
-# A helper sub-library that makes direct use of V24 APIs.
-include $(CLEAR_VARS)
-LOCAL_MODULE := android-support-core-utils-api24
-LOCAL_SDK_VERSION := $(SUPPORT_CURRENT_SDK_VERSION)
-LOCAL_SRC_FILES := $(call all-java-files-under, api24)
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-core-utils-api23
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# -----------------------------------------------------------------------
-
 # Here is the final static library that apps can link against.
+# Applications that use this library must specify
+#
+#   LOCAL_STATIC_ANDROID_LIBRARIES := \
+#       android-support-v4
+#
+# in their makefiles to include the resources and their dependencies in their package.
 include $(CLEAR_VARS)
 LOCAL_USE_AAPT2 := true
-LOCAL_MODULE := android-support-core-utils
+LOCAL_MODULE := android-support-v4
 LOCAL_SDK_VERSION := 9
-LOCAL_AIDL_INCLUDES := frameworks/support/v4/java
-LOCAL_SRC_FILES := $(call all-java-files-under, java) \
-    $(call all-Iaidl-files-under, java)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-core-utils-api24
-LOCAL_SHARED_ANDROID_LIBRARIES := \
+LOCAL_STATIC_JAVA_LIBRARIES := \
     android-support-compat \
-    android-support-annotations
+    android-support-media-compat \
+    android-support-core-utils \
+    android-support-core-ui \
+    android-support-fragment
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 LOCAL_JAR_EXCLUDE_FILES := none
 LOCAL_JAVA_LANGUAGE_VERSION := 1.7
 include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/v4/AndroidManifest.xml b/v4/AndroidManifest.xml
index 586a28e..d76c581 100644
--- a/v4/AndroidManifest.xml
+++ b/v4/AndroidManifest.xml
@@ -15,7 +15,7 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
-          package="android.support.coreutils">
-    <uses-sdk android:minSdkVersion="9" tools:overrideLibrary="android.support.coreutils"/>
+          package="android.support.v4">
+    <uses-sdk android:minSdkVersion="9" tools:overrideLibrary="android.support.v4"/>
     <application />
 </manifest>
diff --git a/v4/build.gradle b/v4/build.gradle
index 38d4887..f0226e3 100644
--- a/v4/build.gradle
+++ b/v4/build.gradle
@@ -1,101 +1,32 @@
 apply plugin: 'com.android.library'
-archivesBaseName = 'support-core-utils'
 
-
-createApiSourceSets(project, gradle.ext.studioCompat.modules.coreutils.apiTargets)
+archivesBaseName = 'support-v4'
 dependencies {
     compile project(':support-compat')
-    androidTestCompile ('com.android.support.test:runner:0.4.1') {
-        exclude module: 'support-annotations'
-    }
-    androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1') {
-        exclude module: 'support-annotations'
-    }
-    androidTestCompile 'org.mockito:mockito-core:1.9.5'
-    androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
-    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
-    testCompile 'junit:junit:4.12'
+    compile project(':support-media-compat')
+    compile project(':support-core-utils')
+    compile project(':support-core-ui')
+    compile project(':support-fragment')
 }
 
-sourceCompatibility = JavaVersion.VERSION_1_7
-targetCompatibility = JavaVersion.VERSION_1_7
-setApiModuleDependencies(project, dependencies, gradle.ext.studioCompat.modules.coreutils.dependencies)
-
 android {
-    compileSdkVersion 9
+    compileSdkVersion project.ext.currentSdk
 
     defaultConfig {
         minSdkVersion 9
-        // TODO: get target from branch
-        //targetSdkVersion 19
-
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        // This disables the builds tools automatic vector -> PNG generation
+        generatedDensities = []
     }
 
     sourceSets {
         main.manifest.srcFile 'AndroidManifest.xml'
-        main.java.srcDirs = ['java']
-        main.aidl.srcDirs = ['java']
-
-        androidTest.setRoot('tests')
-        androidTest.java.srcDir 'tests/java'
-        androidTest.manifest.srcFile 'tests/AndroidManifest.xml'
-    }
-
-    lintOptions {
-        // TODO: fix errors and reenable.
-        abortOnError false
     }
 
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_7
         targetCompatibility JavaVersion.VERSION_1_7
     }
-
-    testOptions {
-        unitTests.returnDefaultValues = true
-        compileSdkVersion project.ext.currentSdk
-    }
-}
-
-android.libraryVariants.all { variant ->
-    def name = variant.buildType.name
-
-    if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
-        return; // Skip debug builds.
-    }
-    def suffix = name.capitalize()
-
-    def jarTask = project.tasks.create(name: "jar${suffix}", type: Jar){
-        dependsOn variant.javaCompile
-        from variant.javaCompile.destinationDir
-        from 'LICENSE.txt'
-    }
-    def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
-        source android.sourceSets.main.java
-        classpath = files(variant.javaCompile.classpath.files) + files(
-                "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
-    }
-
-    def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
-        classifier = 'javadoc'
-        from 'build/docs/javadoc'
-    }
-
-    def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
-        classifier = 'sources'
-        from android.sourceSets.main.java.srcDirs
-        exclude('android/content/pm/**')
-        exclude('android/service/media/**')
-    }
-
-    project.ext.allSS.each { ss ->
-        javadocTask.source ss.java
-        sourcesJarTask.from ss.java.srcDirs
-    }
-
-    artifacts.add('archives', javadocJarTask);
-    artifacts.add('archives', sourcesJarTask);
 }
 
 uploadArchives {
@@ -130,4 +61,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/v7/appcompat/tests/src/android/support/v7/widget/ListPopupWindowTest.java b/v7/appcompat/tests/src/android/support/v7/widget/ListPopupWindowTest.java
index 6a5a58a..e166626 100644
--- a/v7/appcompat/tests/src/android/support/v7/widget/ListPopupWindowTest.java
+++ b/v7/appcompat/tests/src/android/support/v7/widget/ListPopupWindowTest.java
@@ -184,8 +184,7 @@
         mListPopupWindow.getBackground().getPadding(rect);
 
         int emulatedTapX = popupOnScreenXY[0] - rect.left - 20;
-        int emulatedTapY = popupOnScreenXY[1] + mListPopupWindow.getListView().getHeight() +
-                rect.top + rect.bottom + 20;
+        int emulatedTapY = popupOnScreenXY[1] - 20;
 
         // The logic below uses Instrumentation to emulate a tap outside the bounds of the
         // displayed list popup window. This tap is then treated by the framework to be "split" as