Merge "Don't run openOptionsMenu test without FEATURE_OPTIONS_PANEL"
diff --git a/api/current.txt b/api/current.txt
index 767cdfe..8757fb5 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -1678,13 +1678,13 @@
package android.support.percent {
- public class PercentFrameLayout extends android.widget.FrameLayout {
+ public deprecated class PercentFrameLayout extends android.widget.FrameLayout {
ctor public PercentFrameLayout(android.content.Context);
ctor public PercentFrameLayout(android.content.Context, android.util.AttributeSet);
ctor public PercentFrameLayout(android.content.Context, android.util.AttributeSet, int);
}
- public static class PercentFrameLayout.LayoutParams extends android.widget.FrameLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
+ public static deprecated class PercentFrameLayout.LayoutParams extends android.widget.FrameLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
ctor public PercentFrameLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
ctor public PercentFrameLayout.LayoutParams(int, int);
ctor public PercentFrameLayout.LayoutParams(int, int, int);
@@ -1695,7 +1695,7 @@
method public android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo();
}
- public class PercentLayoutHelper {
+ public deprecated class PercentLayoutHelper {
ctor public PercentLayoutHelper(android.view.ViewGroup);
method public void adjustChildren(int, int);
method public static void fetchWidthAndHeight(android.view.ViewGroup.LayoutParams, android.content.res.TypedArray, int, int);
@@ -1704,7 +1704,7 @@
method public void restoreOriginalParams();
}
- public static class PercentLayoutHelper.PercentLayoutInfo {
+ public static deprecated class PercentLayoutHelper.PercentLayoutInfo {
ctor public PercentLayoutHelper.PercentLayoutInfo();
method public void fillLayoutParams(android.view.ViewGroup.LayoutParams, int, int);
method public deprecated void fillMarginLayoutParams(android.view.ViewGroup.MarginLayoutParams, int, int);
@@ -1722,17 +1722,17 @@
field public float widthPercent;
}
- public static abstract interface PercentLayoutHelper.PercentLayoutParams {
+ public static abstract deprecated interface PercentLayoutHelper.PercentLayoutParams {
method public abstract android.support.percent.PercentLayoutHelper.PercentLayoutInfo getPercentLayoutInfo();
}
- public class PercentRelativeLayout extends android.widget.RelativeLayout {
+ public deprecated class PercentRelativeLayout extends android.widget.RelativeLayout {
ctor public PercentRelativeLayout(android.content.Context);
ctor public PercentRelativeLayout(android.content.Context, android.util.AttributeSet);
ctor public PercentRelativeLayout(android.content.Context, android.util.AttributeSet, int);
}
- public static class PercentRelativeLayout.LayoutParams extends android.widget.RelativeLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
+ public static deprecated class PercentRelativeLayout.LayoutParams extends android.widget.RelativeLayout.LayoutParams implements android.support.percent.PercentLayoutHelper.PercentLayoutParams {
ctor public PercentRelativeLayout.LayoutParams(android.content.Context, android.util.AttributeSet);
ctor public PercentRelativeLayout.LayoutParams(int, int);
ctor public PercentRelativeLayout.LayoutParams(android.view.ViewGroup.LayoutParams);
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryExtension.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryExtension.groovy
index b3b5783..f9a2581 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryExtension.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryExtension.groovy
@@ -16,11 +16,38 @@
package android.support;
+import org.gradle.api.Project
+
/**
* Extension for {@link SupportLibraryPlugin}.
*/
class SupportLibraryExtension {
+ Project project
String name;
String description;
String inceptionYear;
-}
+ Collection<License> licenses = [];
+
+ SupportLibraryExtension(Project project) {
+ this.project = project
+ }
+
+ License license(Closure closure) {
+ def license = project.configure(new License(), closure)
+ licenses.add(license)
+ return license
+ }
+
+ class License {
+ String name;
+ String url;
+
+ void url(String p) {
+ url = p
+ }
+
+ void name(String p) {
+ name = p
+ }
+ }
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
index 4c9f797..87a5abf 100644
--- a/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportLibraryPlugin.groovy
@@ -42,7 +42,7 @@
@Override
public void apply(Project project) {
SupportLibraryExtension supportLibraryExtension =
- project.getExtensions().create("supportLibrary", SupportLibraryExtension);
+ project.getExtensions().create("supportLibrary", SupportLibraryExtension, project);
project.apply(ImmutableMap.of("plugin", "com.android.library"));
project.apply(ImmutableMap.of("plugin", ErrorProneBasePlugin.class));
@@ -142,6 +142,15 @@
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
+
+ supportLibraryExtension.getLicenses().each {
+ SupportLibraryExtension.License supportLicense ->
+ license {
+ name supportLicense.name
+ url supportLicense.url
+ distribution 'repo'
+ }
+ }
}
scm {
diff --git a/buildSrc/src/main/groovy/android/support/doclava/DoclavaJavadocOptionFileOption.java b/buildSrc/src/main/groovy/android/support/doclava/DoclavaJavadocOptionFileOption.java
index 4bd67a3..db3f318 100644
--- a/buildSrc/src/main/groovy/android/support/doclava/DoclavaJavadocOptionFileOption.java
+++ b/buildSrc/src/main/groovy/android/support/doclava/DoclavaJavadocOptionFileOption.java
@@ -61,9 +61,14 @@
*/
public DoclavaJavadocOptionFileOption duplicate() {
final Iterable<String> value = getValue();
- final ArrayList<String> valueCopy = new ArrayList<>();
- for (String item : value) {
- valueCopy.add(item);
+ final ArrayList<String> valueCopy;
+ if (value != null) {
+ valueCopy = new ArrayList<>();
+ for (String item : value) {
+ valueCopy.add(item);
+ }
+ } else {
+ valueCopy = null;
}
return new DoclavaJavadocOptionFileOption(getOption(), valueCopy);
}
diff --git a/compat/AndroidManifest.xml b/compat/AndroidManifest.xml
index 6a9f6a6..09383ee 100644
--- a/compat/AndroidManifest.xml
+++ b/compat/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.compat">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.compat"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/core-ui/AndroidManifest.xml b/core-ui/AndroidManifest.xml
index 61eba66..b952b5e 100644
--- a/core-ui/AndroidManifest.xml
+++ b/core-ui/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.coreui">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.coreui"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/core-utils/AndroidManifest.xml b/core-utils/AndroidManifest.xml
index b3b404b..5c10a5b 100644
--- a/core-utils/AndroidManifest.xml
+++ b/core-utils/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.coreutils">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.coreutils"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/customtabs/AndroidManifest.xml b/customtabs/AndroidManifest.xml
index 19a1d54..4069dae 100644
--- a/customtabs/AndroidManifest.xml
+++ b/customtabs/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.customtabs">
<uses-sdk android:minSdkVersion="15"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/design/AndroidManifest.xml b/design/AndroidManifest.xml
index e4449de..afae16e 100644
--- a/design/AndroidManifest.xml
+++ b/design/AndroidManifest.xml
@@ -18,6 +18,7 @@
package="android.support.design">
<uses-sdk android:minSdkVersion="14"
tools:overrideLibrary="android.support.transition"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/dynamic-animation/AndroidManifest.xml b/dynamic-animation/AndroidManifest.xml
index 9e83183..f818402 100644
--- a/dynamic-animation/AndroidManifest.xml
+++ b/dynamic-animation/AndroidManifest.xml
@@ -16,5 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.dynamicanimation">
<uses-sdk android:minSdkVersion="16"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/emoji/appcompat/AndroidManifest.xml b/emoji/appcompat/AndroidManifest.xml
index 81bc0f8..56d8ab5 100644
--- a/emoji/appcompat/AndroidManifest.xml
+++ b/emoji/appcompat/AndroidManifest.xml
@@ -17,6 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.text.emoji.appcompat">
<uses-sdk android:minSdkVersion="19"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/emoji/bundled-typeface/AndroidManifest.xml b/emoji/bundled-typeface/AndroidManifest.xml
index 2c5bc46..5bb7578 100644
--- a/emoji/bundled-typeface/AndroidManifest.xml
+++ b/emoji/bundled-typeface/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.text.emoji.typeface">
<uses-sdk android:minSdkVersion="19"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}"/>
- <application/>
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
\ No newline at end of file
diff --git a/emoji/bundled-typeface/build.gradle b/emoji/bundled-typeface/build.gradle
index 5014649..ab45916 100644
--- a/emoji/bundled-typeface/build.gradle
+++ b/emoji/bundled-typeface/build.gradle
@@ -22,4 +22,14 @@
name 'Android Emoji Compat'
inceptionYear '2017'
description 'Library bundled with assets to enable emoji compatibility in Kitkat and newer devices to avoid the empty emoji characters.'
+
+ license {
+ name 'SIL Open Font License, Version 1.1'
+ url 'http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web'
+ }
+
+ license {
+ name 'Unicode, Inc. License'
+ url 'http://www.unicode.org/copyright.html#License'
+ }
}
\ No newline at end of file
diff --git a/emoji/core/AndroidManifest.xml b/emoji/core/AndroidManifest.xml
index b288921..815858d 100644
--- a/emoji/core/AndroidManifest.xml
+++ b/emoji/core/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.text.emoji">
<uses-sdk android:minSdkVersion="19"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/emoji/core/build.gradle b/emoji/core/build.gradle
index 29890fe..07ab923 100644
--- a/emoji/core/build.gradle
+++ b/emoji/core/build.gradle
@@ -20,6 +20,7 @@
androidTestCompile libs.mockito_core
androidTestCompile libs.dexmaker
androidTestCompile libs.dexmaker_mockito
+ androidTestCompile project(path: ':support-testutils')
}
android {
@@ -31,6 +32,10 @@
sourceSets {
main.java.srcDir 'src'
+ main.resources {
+ srcDirs = ['.']
+ includes = ['third_party/**/LICENSE']
+ }
}
}
@@ -38,4 +43,14 @@
name 'Android Emoji Compat'
inceptionYear '2017'
description 'Core library to enable emoji compatibility in Kitkat and newer devices to avoid the empty emoji characters.'
-}
\ No newline at end of file
+
+ license {
+ name 'SIL Open Font License, Version 1.1'
+ url 'http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web'
+ }
+
+ license {
+ name 'Unicode, Inc. License'
+ url 'http://www.unicode.org/copyright.html#License'
+ }
+}
diff --git a/emoji/core/tests/java/android/support/text/emoji/EmojiInstrumentationTest.java b/emoji/core/tests/java/android/support/text/emoji/EmojiInstrumentationTest.java
index eb0ba3a..22ee475 100644
--- a/emoji/core/tests/java/android/support/text/emoji/EmojiInstrumentationTest.java
+++ b/emoji/core/tests/java/android/support/text/emoji/EmojiInstrumentationTest.java
@@ -34,16 +34,15 @@
import android.support.test.filters.LargeTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
+import android.support.testutils.PollingCheck;
import android.support.text.emoji.test.R;
import android.support.text.emoji.util.KeyboardUtil;
import android.support.text.emoji.util.TestString;
import android.text.Editable;
-import android.text.Selection;
import android.text.Spannable;
import android.text.Spanned;
import android.text.style.RelativeSizeSpan;
import android.util.TypedValue;
-import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;
import android.widget.TextView;
@@ -102,7 +101,8 @@
// cover the charsequence with RelativeSizeSpan which will triple the size of the
// characters.
- final RelativeSizeSpan sizeSpan = new RelativeSizeSpan(3.0f);
+ final float multiplier = 3.0f;
+ final RelativeSizeSpan sizeSpan = new RelativeSizeSpan(multiplier);
spanned.setSpan(sizeSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// set the new text
mInstrumentation.runOnMainSync(new Runnable() {
@@ -128,18 +128,13 @@
final EditText editText = (EditText) activity.findViewById(R.id.editText);
final TestString string = new TestString(EMOJI_WITH_ZWJ).withPrefix()
.withSuffix();
- final InputConnection inputConnection = editText.onCreateInputConnection(new EditorInfo());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.setComposingTextInBatch(inputConnection, string.toString());
- }
- });
- mInstrumentation.waitForIdleSync();
+ final InputConnection inputConnection = KeyboardUtil.initTextViewForSimulatedIme(
+ mInstrumentation, editText);
+ KeyboardUtil.setComposingTextInBatch(mInstrumentation, inputConnection,
+ string.toString());
Editable editable = editText.getEditableText();
- // 0xf0950 is the remapped codepoint for WOMEN_WITH_BALL
assertThat(editable, hasEmojiAt(EMOJI_WITH_ZWJ, string.emojiStartIndex(),
string.emojiEndIndex()));
}
@@ -150,25 +145,19 @@
final EditText editText = (EditText) activity.findViewById(R.id.editText);
final TestString string = new TestString(EMOJI_WITH_ZWJ).withPrefix()
.withSuffix();
- final InputConnection inputConnection = editText.onCreateInputConnection(new EditorInfo());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.setComposingTextInBatch(inputConnection, string.toString());
- Selection.setSelection(editText.getEditableText(), string.emojiEndIndex());
- }
- });
- mInstrumentation.waitForIdleSync();
+ final InputConnection inputConnection = KeyboardUtil.initTextViewForSimulatedIme(
+ mInstrumentation, editText);
+ KeyboardUtil.setComposingTextInBatch(mInstrumentation, inputConnection, string.toString());
+
+ // assert that emoji is there
final Editable editable = editText.getEditableText();
assertThat(editable, hasEmoji());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.deleteSurrondingText(inputConnection, 1, 0);
- }
- });
- mInstrumentation.waitForIdleSync();
+ // put selection at the end of emoji and back delete
+ KeyboardUtil.setSelection(mInstrumentation, editText.getEditableText(),
+ string.emojiEndIndex());
+ KeyboardUtil.deleteSurroundingText(mInstrumentation, inputConnection, 1, 0);
+
assertThat(editable, not(hasEmoji()));
}
@@ -178,25 +167,20 @@
final EditText editText = (EditText) activity.findViewById(R.id.editText);
final TestString string = new TestString(EMOJI_WITH_ZWJ).withPrefix()
.withSuffix();
- final InputConnection inputConnection = editText.onCreateInputConnection(new EditorInfo());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.setComposingTextInBatch(inputConnection, string.toString());
- Selection.setSelection(editText.getEditableText(), string.emojiStartIndex());
- }
- });
- mInstrumentation.waitForIdleSync();
+ final InputConnection inputConnection = KeyboardUtil.initTextViewForSimulatedIme(
+ mInstrumentation, editText);
+ KeyboardUtil.setComposingTextInBatch(mInstrumentation, inputConnection, string.toString());
+
+ // assert that emoji is there
final Editable editable = editText.getEditableText();
assertThat(editable, hasEmoji());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.deleteSurrondingText(inputConnection, 0, 1);
- }
- });
- mInstrumentation.waitForIdleSync();
+ // put selection at the begining of emoji and forward delete
+ KeyboardUtil.setSelection(mInstrumentation, editText.getEditableText(),
+ string.emojiStartIndex());
+ KeyboardUtil.deleteSurroundingText(mInstrumentation, inputConnection, 0, 1);
+
+
assertThat(editable, not(hasEmoji()));
}
@@ -206,21 +190,26 @@
final EditText editText = (EditText) activity.findViewById(R.id.editText);
final TestString string = new TestString(EMOJI_WITH_ZWJ).withPrefix()
.withSuffix();
- final InputConnection inputConnection = editText.onCreateInputConnection(new EditorInfo());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.setComposingTextInBatch(inputConnection, string.toString());
- Selection.setSelection(editText.getEditableText(), string.emojiEndIndex());
- }
- });
- mInstrumentation.waitForIdleSync();
+ final InputConnection inputConnection = KeyboardUtil.initTextViewForSimulatedIme(
+ mInstrumentation, editText);
+ KeyboardUtil.setComposingTextInBatch(mInstrumentation, inputConnection, string.toString());
+
+ // assert that emoji is there
final Editable editable = editText.getEditableText();
assertThat(editable, hasEmoji());
-
+ // put selection at the end of emoji and back delete
+ KeyboardUtil.setSelection(mInstrumentation, editText.getEditableText(),
+ string.emojiEndIndex());
mInstrumentation.sendKeySync(del());
mInstrumentation.waitForIdleSync();
+
+ PollingCheck.waitFor(new PollingCheck.PollingCheckCondition() {
+ @Override
+ public boolean canProceed() {
+ return not(hasEmoji()).matches(true);
+ }
+ });
assertThat(editable, not(hasEmoji()));
}
@@ -230,20 +219,26 @@
final EditText editText = (EditText) activity.findViewById(R.id.editText);
final TestString string = new TestString(EMOJI_WITH_ZWJ).withPrefix()
.withSuffix();
- final InputConnection inputConnection = editText.onCreateInputConnection(new EditorInfo());
- mInstrumentation.runOnMainSync(new Runnable() {
- @Override
- public void run() {
- KeyboardUtil.setComposingTextInBatch(inputConnection, string.toString());
- Selection.setSelection(editText.getEditableText(), string.emojiStartIndex());
- }
- });
- mInstrumentation.waitForIdleSync();
+ final InputConnection inputConnection = KeyboardUtil.initTextViewForSimulatedIme(
+ mInstrumentation, editText);
+ KeyboardUtil.setComposingTextInBatch(mInstrumentation, inputConnection, string.toString());
+
+ // assert that emoji is there
final Editable editable = editText.getEditableText();
assertThat(editable, hasEmoji());
+ // put selection at the begining of emoji and forward delete
+ KeyboardUtil.setSelection(mInstrumentation, editText.getEditableText(),
+ string.emojiStartIndex());
mInstrumentation.sendKeySync(forwardDel());
mInstrumentation.waitForIdleSync();
+
+ PollingCheck.waitFor(new PollingCheck.PollingCheckCondition() {
+ @Override
+ public boolean canProceed() {
+ return not(hasEmoji()).matches(true);
+ }
+ });
assertThat(editable, not(hasEmoji()));
}
}
diff --git a/emoji/core/tests/java/android/support/text/emoji/util/KeyboardUtil.java b/emoji/core/tests/java/android/support/text/emoji/util/KeyboardUtil.java
index 4764455..0c89b2d 100644
--- a/emoji/core/tests/java/android/support/text/emoji/util/KeyboardUtil.java
+++ b/emoji/core/tests/java/android/support/text/emoji/util/KeyboardUtil.java
@@ -15,8 +15,17 @@
*/
package android.support.text.emoji.util;
+import android.app.Instrumentation;
+import android.text.Selection;
+import android.text.Spannable;
+import android.text.method.QwertyKeyListener;
+import android.text.method.TextKeyListener;
import android.view.KeyEvent;
+import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
+import android.widget.TextView;
+
+import java.util.concurrent.CountDownLatch;
/**
* Utility class for KeyEvents
@@ -65,15 +74,74 @@
return new KeyEvent(currentTime, currentTime, KeyEvent.ACTION_DOWN, keycode, 0);
}
- public static void setComposingTextInBatch(InputConnection input, CharSequence text) {
- input.beginBatchEdit();
- input.setComposingText(text, 1);
- input.endBatchEdit();
+ public static void setComposingTextInBatch(final Instrumentation instrumentation,
+ final InputConnection inputConnection, final CharSequence text)
+ throws InterruptedException {
+ final CountDownLatch latch = new CountDownLatch(1);
+ instrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ inputConnection.beginBatchEdit();
+ inputConnection.setComposingText(text, 1);
+ inputConnection.endBatchEdit();
+ latch.countDown();
+ }
+ });
+
+ latch.await();
+ instrumentation.waitForIdleSync();
}
- public static void deleteSurrondingText(InputConnection input, int before, int after) {
- input.beginBatchEdit();
- input.deleteSurroundingText(before, after);
- input.endBatchEdit();
+ public static void deleteSurroundingText(final Instrumentation instrumentation,
+ final InputConnection inputConnection, final int before, final int after)
+ throws InterruptedException {
+ final CountDownLatch latch = new CountDownLatch(1);
+ instrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ inputConnection.beginBatchEdit();
+ inputConnection.deleteSurroundingText(before, after);
+ inputConnection.endBatchEdit();
+ latch.countDown();
+ }
+ });
+ latch.await();
+ instrumentation.waitForIdleSync();
+ }
+
+ public static void setSelection(Instrumentation instrumentation, final Spannable spannable,
+ final int start) throws InterruptedException {
+ setSelection(instrumentation, spannable, start, start);
+ }
+
+ public static void setSelection(Instrumentation instrumentation, final Spannable spannable,
+ final int start, final int end) throws InterruptedException {
+ final CountDownLatch latch = new CountDownLatch(1);
+ instrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ Selection.setSelection(spannable, start, end);
+ latch.countDown();
+ }
+ });
+ latch.await();
+ instrumentation.waitForIdleSync();
+ }
+
+ public static InputConnection initTextViewForSimulatedIme(Instrumentation instrumentation,
+ final TextView textView) throws InterruptedException {
+ final CountDownLatch latch = new CountDownLatch(1);
+ instrumentation.runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ textView.setKeyListener(
+ QwertyKeyListener.getInstance(false, TextKeyListener.Capitalize.NONE));
+ textView.setText("", TextView.BufferType.EDITABLE);
+ latch.countDown();
+ }
+ });
+ latch.await();
+ instrumentation.waitForIdleSync();
+ return textView.onCreateInputConnection(new EditorInfo());
}
}
diff --git a/emoji/core/tests/res/layout/activity_default.xml b/emoji/core/tests/res/layout/activity_default.xml
index b9a09ca..c8341b8 100644
--- a/emoji/core/tests/res/layout/activity_default.xml
+++ b/emoji/core/tests/res/layout/activity_default.xml
@@ -9,7 +9,8 @@
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
+ android:layout_height="wrap_content"
+ android:textSize="8sp"/>
<android.support.text.emoji.widget.EmojiEditText
android:id="@+id/editText"
diff --git a/exifinterface/AndroidManifest.xml b/exifinterface/AndroidManifest.xml
index 94b3300..344b99b 100644
--- a/exifinterface/AndroidManifest.xml
+++ b/exifinterface/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.exifinterface">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/fragment/AndroidManifest.xml b/fragment/AndroidManifest.xml
index c6fdcc4..725fe43 100644
--- a/fragment/AndroidManifest.xml
+++ b/fragment/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.fragment">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.fragment"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 84939b4..5bc6b35 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=../../../../tools/external/gradle/gradle-3.3-bin.zip
+distributionUrl=../../../../tools/external/gradle/gradle-3.4-bin.zip
diff --git a/graphics/drawable/animated/AndroidManifest.xml b/graphics/drawable/animated/AndroidManifest.xml
index 58017dc..b59fa47 100644
--- a/graphics/drawable/animated/AndroidManifest.xml
+++ b/graphics/drawable/animated/AndroidManifest.xml
@@ -16,6 +16,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.graphics.drawable.animated">
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application/>
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/graphics/drawable/static/AndroidManifest.xml b/graphics/drawable/static/AndroidManifest.xml
index 0383e4c..14821a8 100644
--- a/graphics/drawable/static/AndroidManifest.xml
+++ b/graphics/drawable/static/AndroidManifest.xml
@@ -16,6 +16,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.graphics.drawable">
- <application/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/instantvideo/AndroidManifest.xml b/instantvideo/AndroidManifest.xml
index 08ebcbe..26b46c0 100644
--- a/instantvideo/AndroidManifest.xml
+++ b/instantvideo/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.media.instantvideo">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/media-compat/AndroidManifest.xml b/media-compat/AndroidManifest.xml
index 4e73a70..f5e74a2 100644
--- a/media-compat/AndroidManifest.xml
+++ b/media-compat/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.mediacompat">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.mediacompat"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/percent/AndroidManifest.xml b/percent/AndroidManifest.xml
index fd770ab..58eebfe 100644
--- a/percent/AndroidManifest.xml
+++ b/percent/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.percent">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/percent/build.gradle b/percent/build.gradle
index 1dc9490..90c2962 100644
--- a/percent/build.gradle
+++ b/percent/build.gradle
@@ -3,7 +3,6 @@
dependencies {
compile project(':support-compat')
-
androidTestCompile (libs.test_runner) {
exclude module: 'support-annotations'
}
diff --git a/percent/src/android/support/percent/PercentFrameLayout.java b/percent/src/android/support/percent/PercentFrameLayout.java
index 9dce2bb..b9abd39 100644
--- a/percent/src/android/support/percent/PercentFrameLayout.java
+++ b/percent/src/android/support/percent/PercentFrameLayout.java
@@ -74,7 +74,60 @@
* </pre>
* This will make the aspect ratio 16:9 (1.78:1) with the width fixed at 300dp and height adjusted
* accordingly.
+ *
+ * @deprecated consider using ConstraintLayout and associated layouts instead. The following shows
+ * how to replicate the functionality of percentage layouts with a ConstraintLayout. The Guidelines
+ * are used to define each percentage break point, and then a Button view is stretched to fill
+ * the gap:
+ *
+ * <pre class="prettyprint">
+ * <android.support.constraint.ConstraintLayout
+ * xmlns:android="http://schemas.android.com/apk/res/android"
+ * xmlns:app="http://schemas.android.com/apk/res-auto"
+ * android:layout_width="match_parent"
+ * android:layout_height="match_parent">
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/left_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/right_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/top_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="horizontal"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/bottom_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="horizontal"/>
+ *
+ * <Button
+ * android:text="Button"
+ * android:layout_width="0dp"
+ * android:layout_height="0dp"
+ * android:id="@+id/button"
+ * app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
+ * app:layout_constraintRight_toRightOf="@+id/right_guideline"
+ * app:layout_constraintTop_toTopOf="@+id/top_guideline"
+ * app:layout_constraintBottom_toBottomOf="@+id/bottom_guideline" />
+ *
+ * </android.support.constraint.ConstraintLayout>
*/
+@Deprecated
public class PercentFrameLayout extends FrameLayout {
private final PercentLayoutHelper mHelper = new PercentLayoutHelper(this);
@@ -115,6 +168,10 @@
mHelper.restoreOriginalParams();
}
+ /**
+ * @deprecated this class is deprecated along with its parent class.
+ */
+ @Deprecated
public static class LayoutParams extends FrameLayout.LayoutParams
implements PercentLayoutHelper.PercentLayoutParams {
private PercentLayoutHelper.PercentLayoutInfo mPercentLayoutInfo;
diff --git a/percent/src/android/support/percent/PercentLayoutHelper.java b/percent/src/android/support/percent/PercentLayoutHelper.java
index d681244..44a76c7 100644
--- a/percent/src/android/support/percent/PercentLayoutHelper.java
+++ b/percent/src/android/support/percent/PercentLayoutHelper.java
@@ -67,7 +67,59 @@
* }
* </pre>
* </ol>
+ * @deprecated consider using ConstraintLayout and associated layouts instead. The following shows
+ * how to replicate the functionality of percentage layouts with a ConstraintLayout. The Guidelines
+ * are used to define each percentage break point, and then a Button view is stretched to fill
+ * the gap:
+ *
+ * <pre class="prettyprint">
+ * <android.support.constraint.ConstraintLayout
+ * xmlns:android="http://schemas.android.com/apk/res/android"
+ * xmlns:app="http://schemas.android.com/apk/res-auto"
+ * android:layout_width="match_parent"
+ * android:layout_height="match_parent">
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/left_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/right_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/top_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="horizontal"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/bottom_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="horizontal"/>
+ *
+ * <Button
+ * android:text="Button"
+ * android:layout_width="0dp"
+ * android:layout_height="0dp"
+ * android:id="@+id/button"
+ * app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
+ * app:layout_constraintRight_toRightOf="@+id/right_guideline"
+ * app:layout_constraintTop_toTopOf="@+id/top_guideline"
+ * app:layout_constraintBottom_toBottomOf="@+id/bottom_guideline" />
+ *
+ * </android.support.constraint.ConstraintLayout>
*/
+@Deprecated
public class PercentLayoutHelper {
private static final String TAG = "PercentLayout";
@@ -344,7 +396,10 @@
/**
* Container for information about percentage dimensions and margins. It acts as an extension
* for {@code LayoutParams}.
+ *
+ * @deprecated use ConstraintLayout and Guidelines for layout support.
*/
+ @Deprecated
public static class PercentLayoutInfo {
/** The decimal value of the percentage-based width. */
public float widthPercent;
@@ -555,7 +610,10 @@
*
* Your {@code LayoutParams} subclass should contain an instance of {@code PercentLayoutInfo}
* and the implementation of this interface should be a simple accessor.
+ *
+ * @deprecated this class is deprecated along with its parent class.
*/
+ @Deprecated
public interface PercentLayoutParams {
PercentLayoutInfo getPercentLayoutInfo();
}
diff --git a/percent/src/android/support/percent/PercentRelativeLayout.java b/percent/src/android/support/percent/PercentRelativeLayout.java
index f068d6b..5b10349 100644
--- a/percent/src/android/support/percent/PercentRelativeLayout.java
+++ b/percent/src/android/support/percent/PercentRelativeLayout.java
@@ -73,7 +73,60 @@
* </pre>
* This will make the aspect ratio 16:9 (1.78:1) with the width fixed at 300dp and height adjusted
* accordingly.
+ *
+ * @deprecated consider using ConstraintLayout and associated layouts instead. The following shows
+ * how to replicate the functionality of percentage layouts with a ConstraintLayout. The Guidelines
+ * are used to define each percentage break point, and then a Button view is stretched to fill
+ * the gap:
+ *
+ * <pre class="prettyprint">
+ * <android.support.constraint.ConstraintLayout
+ * xmlns:android="http://schemas.android.com/apk/res/android"
+ * xmlns:app="http://schemas.android.com/apk/res-auto"
+ * android:layout_width="match_parent"
+ * android:layout_height="match_parent">
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/left_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/right_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="vertical"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/top_guideline"
+ * app:layout_constraintGuide_percent=".15"
+ * android:orientation="horizontal"/>
+ *
+ * <android.support.constraint.Guideline
+ * android:layout_width="wrap_content"
+ * android:layout_height="wrap_content"
+ * android:id="@+id/bottom_guideline"
+ * app:layout_constraintGuide_percent=".85"
+ * android:orientation="horizontal"/>
+ *
+ * <Button
+ * android:text="Button"
+ * android:layout_width="0dp"
+ * android:layout_height="0dp"
+ * android:id="@+id/button"
+ * app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
+ * app:layout_constraintRight_toRightOf="@+id/right_guideline"
+ * app:layout_constraintTop_toTopOf="@+id/top_guideline"
+ * app:layout_constraintBottom_toBottomOf="@+id/bottom_guideline" />
+ *
+ * </android.support.constraint.ConstraintLayout>
*/
+@Deprecated
public class PercentRelativeLayout extends RelativeLayout {
private final PercentLayoutHelper mHelper = new PercentLayoutHelper(this);
@@ -114,6 +167,10 @@
mHelper.restoreOriginalParams();
}
+ /**
+ * @deprecated this class is deprecated along with its parent class.
+ */
+ @Deprecated
public static class LayoutParams extends RelativeLayout.LayoutParams
implements PercentLayoutHelper.PercentLayoutParams {
private PercentLayoutHelper.PercentLayoutInfo mPercentLayoutInfo;
diff --git a/recommendation/AndroidManifest.xml b/recommendation/AndroidManifest.xml
index e36c822..09017e0 100644
--- a/recommendation/AndroidManifest.xml
+++ b/recommendation/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.recommendation">
<uses-sdk android:minSdkVersion="21"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/transition/AndroidManifest.xml b/transition/AndroidManifest.xml
index 1059f63..309b695 100644
--- a/transition/AndroidManifest.xml
+++ b/transition/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.transition">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/transition/api14/android/support/transition/ViewOverlayApi14.java b/transition/api14/android/support/transition/ViewOverlayApi14.java
index c45da98..2e39a2c 100644
--- a/transition/api14/android/support/transition/ViewOverlayApi14.java
+++ b/transition/api14/android/support/transition/ViewOverlayApi14.java
@@ -193,7 +193,7 @@
}
@Override
- protected boolean verifyDrawable(Drawable who) {
+ protected boolean verifyDrawable(@NonNull Drawable who) {
return super.verifyDrawable(who) || (mDrawables != null && mDrawables.contains(who));
}
@@ -244,7 +244,7 @@
}
@Override
- public void invalidateDrawable(Drawable drawable) {
+ public void invalidateDrawable(@NonNull Drawable drawable) {
invalidate(drawable.getBounds());
}
@@ -252,7 +252,6 @@
protected void dispatchDraw(Canvas canvas) {
int[] contentViewLocation = new int[2];
int[] hostViewLocation = new int[2];
- ViewGroup parent = (ViewGroup) getParent();
mHostView.getLocationOnScreen(contentViewLocation);
mRequestingView.getLocationOnScreen(hostViewLocation);
canvas.translate(hostViewLocation[0] - contentViewLocation[0],
@@ -283,7 +282,6 @@
private void getOffset(int[] offset) {
int[] contentViewLocation = new int[2];
int[] hostViewLocation = new int[2];
- ViewGroup parent = (ViewGroup) getParent();
mHostView.getLocationOnScreen(contentViewLocation);
mRequestingView.getLocationOnScreen(hostViewLocation);
offset[0] = hostViewLocation[0] - contentViewLocation[0];
@@ -327,6 +325,7 @@
return null;
}
+ @SuppressWarnings("deprecation")
@Override
public ViewParent invalidateChildInParent(int[] location, Rect dirty) {
if (mHostView != null) {
diff --git a/transition/api14/android/support/transition/WindowIdApi14.java b/transition/api14/android/support/transition/WindowIdApi14.java
index 52768c2..f112786 100644
--- a/transition/api14/android/support/transition/WindowIdApi14.java
+++ b/transition/api14/android/support/transition/WindowIdApi14.java
@@ -33,4 +33,8 @@
return o instanceof WindowIdApi14 && ((WindowIdApi14) o).mToken.equals(this.mToken);
}
+ @Override
+ public int hashCode() {
+ return mToken.hashCode();
+ }
}
diff --git a/transition/api18/android/support/transition/WindowIdApi18.java b/transition/api18/android/support/transition/WindowIdApi18.java
index badae42..b8808f0 100644
--- a/transition/api18/android/support/transition/WindowIdApi18.java
+++ b/transition/api18/android/support/transition/WindowIdApi18.java
@@ -34,4 +34,8 @@
return o instanceof WindowIdApi18 && ((WindowIdApi18) o).mWindowId.equals(mWindowId);
}
+ @Override
+ public int hashCode() {
+ return mWindowId.hashCode();
+ }
}
diff --git a/transition/src/android/support/transition/TransitionUtils.java b/transition/src/android/support/transition/TransitionUtils.java
index e3770b8..58fb3dc 100644
--- a/transition/src/android/support/transition/TransitionUtils.java
+++ b/transition/src/android/support/transition/TransitionUtils.java
@@ -83,8 +83,8 @@
int bitmapHeight = Math.round(bounds.height());
if (bitmapWidth > 0 && bitmapHeight > 0) {
float scale = Math.min(1f, ((float) MAX_IMAGE_SIZE) / (bitmapWidth * bitmapHeight));
- bitmapWidth *= scale;
- bitmapHeight *= scale;
+ bitmapWidth = (int) (bitmapWidth * scale);
+ bitmapHeight = (int) (bitmapHeight * scale);
matrix.postTranslate(-bounds.left, -bounds.top);
matrix.postScale(scale, scale);
bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
diff --git a/transition/src/android/support/transition/Visibility.java b/transition/src/android/support/transition/Visibility.java
index 7bc6389..0c6c9d9 100644
--- a/transition/src/android/support/transition/Visibility.java
+++ b/transition/src/android/support/transition/Visibility.java
@@ -412,8 +412,7 @@
}
if (viewToKeep != null) {
- int originalVisibility = -1;
- originalVisibility = viewToKeep.getVisibility();
+ int originalVisibility = viewToKeep.getVisibility();
viewToKeep.setVisibility(View.VISIBLE);
Animator animator = onDisappear(sceneRoot, viewToKeep, startValues, endValues);
if (animator != null) {
diff --git a/transition/tests/res/transition/transition_constructors.xml b/transition/tests/res/transition/transition_constructors.xml
index c820959..8baac3c 100644
--- a/transition/tests/res/transition/transition_constructors.xml
+++ b/transition/tests/res/transition/transition_constructors.xml
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+<transitionSet>
<transition class="android.support.transition.TransitionInflaterTest$InflationFade"/>
<transition class="android.support.transition.TransitionInflaterTest$InflationChangeBounds"/>
<transition class="android.support.transition.TransitionInflaterTest$InflationAutoTransition"/>
diff --git a/tv-provider/AndroidManifest.xml b/tv-provider/AndroidManifest.xml
index 39c540a..f07d090 100644
--- a/tv-provider/AndroidManifest.xml
+++ b/tv-provider/AndroidManifest.xml
@@ -18,6 +18,7 @@
<uses-sdk android:minSdkVersion="21"/>
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v13/AndroidManifest.xml b/v13/AndroidManifest.xml
index 65ef182..6eea520 100644
--- a/v13/AndroidManifest.xml
+++ b/v13/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.v13">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.v13"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}"/>
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v14/preference/AndroidManifest.xml b/v14/preference/AndroidManifest.xml
index 74cff2e..95bab75 100644
--- a/v14/preference/AndroidManifest.xml
+++ b/v14/preference/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v14.preference">
<uses-sdk android:minSdkVersion="14" />
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v17/leanback/AndroidManifest.xml b/v17/leanback/AndroidManifest.xml
index ded4ce8..9176231 100644
--- a/v17/leanback/AndroidManifest.xml
+++ b/v17/leanback/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v17.leanback">
<uses-sdk android:minSdkVersion="17"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v4/AndroidManifest.xml b/v4/AndroidManifest.xml
index 642a916..470f5c2 100644
--- a/v4/AndroidManifest.xml
+++ b/v4/AndroidManifest.xml
@@ -17,6 +17,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="android.support.v4">
<uses-sdk android:minSdkVersion="14" tools:overrideLibrary="android.support.v4"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/appcompat/AndroidManifest.xml b/v7/appcompat/AndroidManifest.xml
index c1ff659..7de91ff 100644
--- a/v7/appcompat/AndroidManifest.xml
+++ b/v7/appcompat/AndroidManifest.xml
@@ -18,6 +18,7 @@
package="android.support.v7.appcompat">
<uses-sdk android:minSdkVersion="14"
tools:overrideLibrary="android.support.graphics.drawable.animated"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application/>
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/cardview/AndroidManifest.xml b/v7/cardview/AndroidManifest.xml
index b83c815..8fcf55a 100644
--- a/v7/cardview/AndroidManifest.xml
+++ b/v7/cardview/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.cardview">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/gridlayout/AndroidManifest.xml b/v7/gridlayout/AndroidManifest.xml
index 6f12842..b6cb783 100644
--- a/v7/gridlayout/AndroidManifest.xml
+++ b/v7/gridlayout/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.gridlayout">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/mediarouter/AndroidManifest.xml b/v7/mediarouter/AndroidManifest.xml
index 5466168..c4577f9 100644
--- a/v7/mediarouter/AndroidManifest.xml
+++ b/v7/mediarouter/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.mediarouter">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/palette/AndroidManifest.xml b/v7/palette/AndroidManifest.xml
index 78735ba..8e5ffaa 100644
--- a/v7/palette/AndroidManifest.xml
+++ b/v7/palette/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.palette">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/preference/AndroidManifest.xml b/v7/preference/AndroidManifest.xml
index 6923656..772b410 100644
--- a/v7/preference/AndroidManifest.xml
+++ b/v7/preference/AndroidManifest.xml
@@ -16,6 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.preference">
<uses-sdk android:minSdkVersion="14" />
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
- <application />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/recyclerview/AndroidManifest.xml b/v7/recyclerview/AndroidManifest.xml
index 5eef157..5b03882 100644
--- a/v7/recyclerview/AndroidManifest.xml
+++ b/v7/recyclerview/AndroidManifest.xml
@@ -16,5 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.v7.recyclerview">
<uses-sdk android:minSdkVersion="14"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>
diff --git a/v7/recyclerview/src/android/support/v7/util/DiffUtil.java b/v7/recyclerview/src/android/support/v7/util/DiffUtil.java
index 6f0a078..6302666 100644
--- a/v7/recyclerview/src/android/support/v7/util/DiffUtil.java
+++ b/v7/recyclerview/src/android/support/v7/util/DiffUtil.java
@@ -205,7 +205,7 @@
// we can reach k from k - 1 or k + 1. Check which one is further in the graph
int x;
final boolean removal;
- if (k == -d || k != d && forward[kOffset + k - 1] < forward[kOffset + k + 1]) {
+ if (k == -d || (k != d && forward[kOffset + k - 1] < forward[kOffset + k + 1])) {
x = forward[kOffset + k + 1];
removal = false;
} else {
@@ -238,8 +238,8 @@
final int backwardK = k + delta;
int x;
final boolean removal;
- if (backwardK == d + delta || backwardK != -d + delta
- && backward[kOffset + backwardK - 1] < backward[kOffset + backwardK + 1]) {
+ if (backwardK == d + delta || (backwardK != -d + delta
+ && backward[kOffset + backwardK - 1] < backward[kOffset + backwardK + 1])) {
x = backward[kOffset + backwardK - 1];
removal = false;
} else {
diff --git a/v7/recyclerview/src/android/support/v7/widget/DefaultItemAnimator.java b/v7/recyclerview/src/android/support/v7/widget/DefaultItemAnimator.java
index 33ad434..11600a8 100644
--- a/v7/recyclerview/src/android/support/v7/widget/DefaultItemAnimator.java
+++ b/v7/recyclerview/src/android/support/v7/widget/DefaultItemAnimator.java
@@ -255,8 +255,8 @@
public boolean animateMove(final ViewHolder holder, int fromX, int fromY,
int toX, int toY) {
final View view = holder.itemView;
- fromX += holder.itemView.getTranslationX();
- fromY += holder.itemView.getTranslationY();
+ fromX += (int) holder.itemView.getTranslationX();
+ fromY += (int) holder.itemView.getTranslationY();
resetAnimation(holder);
int deltaX = toX - fromX;
int deltaY = toY - fromY;
diff --git a/v7/recyclerview/src/android/support/v7/widget/FastScroller.java b/v7/recyclerview/src/android/support/v7/widget/FastScroller.java
index 9e45909..fbe234b 100644
--- a/v7/recyclerview/src/android/support/v7/widget/FastScroller.java
+++ b/v7/recyclerview/src/android/support/v7/widget/FastScroller.java
@@ -228,7 +228,7 @@
switch (mAnimationState) {
case ANIMATION_STATE_FADING_OUT:
mShowHideAnimator.cancel();
- // no break
+ // fall through
case ANIMATION_STATE_OUT:
mAnimationState = ANIMATION_STATE_FADING_IN;
mShowHideAnimator.setFloatValues((float) mShowHideAnimator.getAnimatedValue(), 1);
@@ -248,7 +248,7 @@
switch (mAnimationState) {
case ANIMATION_STATE_FADING_IN:
mShowHideAnimator.cancel();
- // no break
+ // fall through
case ANIMATION_STATE_IN:
mAnimationState = ANIMATION_STATE_FADING_OUT;
mShowHideAnimator.setFloatValues((float) mShowHideAnimator.getAnimatedValue(), 0);
diff --git a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
index 6e9ea69..342a740 100644
--- a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
+++ b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
@@ -4892,7 +4892,7 @@
private float distanceInfluenceForSnapDuration(float f) {
f -= 0.5f; // center the values about 0.
- f *= 0.3f * Math.PI / 2.0f;
+ f *= 0.3f * (float) Math.PI / 2.0f;
return (float) Math.sin(f);
}
@@ -11162,8 +11162,8 @@
* @param scrollVector The vector that points to the target scroll position
*/
protected void normalize(PointF scrollVector) {
- final double magnitude = Math.sqrt(scrollVector.x * scrollVector.x + scrollVector.y
- * scrollVector.y);
+ final float magnitude = (float) Math.sqrt(scrollVector.x * scrollVector.x
+ + scrollVector.y * scrollVector.y);
scrollVector.x /= magnitude;
scrollVector.y /= magnitude;
}
diff --git a/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java b/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
index a0a86b0..b0a2cb3 100644
--- a/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
+++ b/v7/recyclerview/src/android/support/v7/widget/helper/ItemTouchHelper.java
@@ -2283,7 +2283,7 @@
}
}
- private class RecoverAnimation implements Animator.AnimatorListener {
+ private static class RecoverAnimation implements Animator.AnimatorListener {
final float mStartDx;
diff --git a/wearable/AndroidManifest.xml b/wearable/AndroidManifest.xml
index 77ac1b6..e4b1897 100644
--- a/wearable/AndroidManifest.xml
+++ b/wearable/AndroidManifest.xml
@@ -16,5 +16,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.support.wearable">
<uses-sdk android:minSdkVersion="22"/>
- <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ <application>
+ <meta-data android:name="android.support.VERSION" android:value="${support-version}" />
+ </application>
</manifest>