diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK index 8b61c439ef5276..bbbe250659175b 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/BUCK @@ -13,6 +13,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("third-party/android/support/v7/appcompat-orig:appcompat"), react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), react_native_dep("third-party/android/support/v4:lib-support-v4"), react_native_dep("third-party/java/buck-android-support:buck-android-support"), diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java index 91b2c523dbff83..37335d4e6ef6b9 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/testing/ReactAppTestActivity.java @@ -1,18 +1,15 @@ /** * Copyright (c) 2014-present, Facebook, Inc. * - *
This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ package com.facebook.react.testing; -import static com.facebook.react.bridge.UiThreadUtil.runOnUiThread; - import android.content.Intent; import android.graphics.Bitmap; -import android.os.AsyncTask; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; +import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewTreeObserver; import android.widget.FrameLayout; @@ -47,8 +44,7 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; - -public class ReactAppTestActivity extends FragmentActivity +public class ReactAppTestActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, PermissionAwareActivity { public static final String EXTRA_IS_FABRIC_TEST = "is_fabric_test"; diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK index e39c0147a7cb75..efd71434c7371b 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/BUCK @@ -7,6 +7,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("third-party/android/support/v7/appcompat-orig:appcompat"), react_native_dep("third-party/android/support/v4:lib-support-v4"), react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_dep("third-party/java/junit:junit"), diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ShareTestCase.java b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ShareTestCase.java index ccfa9f2b862d6a..22ab9e5579fac6 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ShareTestCase.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/ShareTestCase.java @@ -7,17 +7,9 @@ package com.facebook.react.tests; -import java.util.ArrayList; -import java.util.List; - -import android.app.Activity; -import android.app.AlertDialog; import android.app.Instrumentation.ActivityMonitor; -import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; -import android.content.IntentFilter.MalformedMimeTypeException; -import android.support.v4.app.DialogFragment; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.testing.ReactInstanceSpecForTest; diff --git a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TimePickerDialogTestCase.java b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TimePickerDialogTestCase.java index 3af83b91877572..0b16eb2fa9ba9b 100644 --- a/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TimePickerDialogTestCase.java +++ b/ReactAndroid/src/androidTest/java/com/facebook/react/tests/TimePickerDialogTestCase.java @@ -10,9 +10,9 @@ import java.util.ArrayList; import java.util.List; +import android.app.DialogFragment; import android.app.TimePickerDialog; import android.content.DialogInterface; -import android.support.v4.app.DialogFragment; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.testing.ReactInstanceSpecForTest; @@ -94,7 +94,7 @@ private DialogFragment showDialog(WritableMap options) { waitForBridgeAndUIIdle(); getInstrumentation().waitForIdleSync(); - return (DialogFragment) getActivity().getSupportFragmentManager() + return (DialogFragment) getActivity().getFragmentManager() .findFragmentByTag(TimePickerDialogModule.FRAGMENT_TAG); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/BUCK b/ReactAndroid/src/main/java/com/facebook/react/BUCK index 743bb34bb69448..4beafaa8c97bbf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/BUCK @@ -10,6 +10,7 @@ rn_android_library( "PUBLIC", ], deps = [ + react_native_dep("third-party/android/support/v7/appcompat-orig:appcompat"), react_native_dep("java/com/facebook/systrace:systrace"), react_native_dep("libraries/fbcore/src/main/java/com/facebook/common/logging:logging"), react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java b/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java index bbe9cad4473816..c9f178168b4dc6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java @@ -9,9 +9,9 @@ import javax.annotation.Nullable; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; @@ -21,7 +21,7 @@ /** * Base Activity for React Native applications. */ -public abstract class ReactActivity extends Activity +public abstract class ReactActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, PermissionAwareActivity { private final ReactActivityDelegate mDelegate; diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java index c0691c748db507..c47034a4a943d6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java @@ -11,7 +11,6 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; import android.view.KeyEvent; import com.facebook.infer.annotation.Assertions; @@ -20,17 +19,17 @@ import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.PermissionListener; +import javax.annotation.Nonnull; import javax.annotation.Nullable; /** - * Delegate class for {@link ReactActivity} and {@link ReactFragmentActivity}. You can subclass this + * Delegate class for {@link ReactActivity}. You can subclass this * to provide custom implementations for e.g. {@link #getReactNativeHost()}, if your Application * class doesn't implement {@link ReactApplication}. */ public class ReactActivityDelegate { private final @Nullable Activity mActivity; - private final @Nullable FragmentActivity mFragmentActivity; private final @Nullable String mMainComponentName; private @Nullable ReactRootView mReactRootView; @@ -38,18 +37,9 @@ public class ReactActivityDelegate { private @Nullable PermissionListener mPermissionListener; private @Nullable Callback mPermissionsCallback; - public ReactActivityDelegate(Activity activity, @Nullable String mainComponentName) { + public ReactActivityDelegate(@Nonnull Activity activity, @Nullable String mainComponentName) { mActivity = activity; mMainComponentName = mainComponentName; - mFragmentActivity = null; - } - - public ReactActivityDelegate( - FragmentActivity fragmentActivity, - @Nullable String mainComponentName) { - mFragmentActivity = fragmentActivity; - mMainComponentName = mainComponentName; - mActivity = null; } protected @Nullable Bundle getLaunchOptions() { @@ -206,10 +196,7 @@ public void invoke(Object... args) { } private Context getContext() { - if (mActivity != null) { - return mActivity; - } - return Assertions.assertNotNull(mFragmentActivity); + return Assertions.assertNotNull(mActivity); } private Activity getPlainActivity() { diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java b/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java index b104b91e4ef521..b8f311d641b8c0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactFragmentActivity.java @@ -7,126 +7,11 @@ package com.facebook.react; -import javax.annotation.Nullable; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.view.KeyEvent; - -import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; -import com.facebook.react.modules.core.PermissionAwareActivity; -import com.facebook.react.modules.core.PermissionListener; - /** * @deprecated * ReactFragmentActivity will be removed in 0.57 release. * Use {@link ReactActivity} instead. */ @Deprecated -public abstract class ReactFragmentActivity extends FragmentActivity implements - DefaultHardwareBackBtnHandler, PermissionAwareActivity { - - private final ReactActivityDelegate mDelegate; - - protected ReactFragmentActivity() { - mDelegate = createReactActivityDelegate(); - } - - /** - * Returns the name of the main component registered from JavaScript. - * This is used to schedule rendering of the component. - * e.g. "MoviesApp" - */ - protected @Nullable String getMainComponentName() { - return null; - } - - /** - * Called at construction time, override if you have a custom delegate implementation. - */ - protected ReactActivityDelegate createReactActivityDelegate() { - return new ReactActivityDelegate(this, getMainComponentName()); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mDelegate.onCreate(savedInstanceState); - } - - @Override - protected void onPause() { - super.onPause(); - mDelegate.onPause(); - } - - @Override - protected void onResume() { - super.onResume(); - mDelegate.onResume(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mDelegate.onDestroy(); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - mDelegate.onActivityResult(requestCode, resultCode, data); - } - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - return mDelegate.onKeyUp(keyCode, event) || super.onKeyUp(keyCode, event); - } - - @Override - public void onBackPressed() { - if (!mDelegate.onBackPressed()) { - super.onBackPressed(); - } - } - - @Override - public void invokeDefaultOnBackPressed() { - super.onBackPressed(); - } - - @Override - public void onNewIntent(Intent intent) { - if (!mDelegate.onNewIntent(intent)) { - super.onNewIntent(intent); - } - } - - @Override - public void requestPermissions( - String[] permissions, - int requestCode, - PermissionListener listener) { - mDelegate.requestPermissions(permissions, requestCode, listener); - } - - @Override - public void onRequestPermissionsResult( - int requestCode, - String[] permissions, - int[] grantResults) { - mDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults); - } - - protected final ReactNativeHost getReactNativeHost() { - return mDelegate.getReactNativeHost(); - } - - protected final ReactInstanceManager getReactInstanceManager() { - return mDelegate.getReactInstanceManager(); - } - - protected final void loadApp(String appKey) { - mDelegate.loadApp(appKey); - } +public abstract class ReactFragmentActivity extends ReactActivity { } diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK index 2674bdc7fde4e2..62fb35dfe9eac3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BUCK @@ -4,8 +4,7 @@ rn_android_library( name = "blob", srcs = glob(["**/*.java"]), provided_deps = [ - react_native_dep("third-party/android/support-annotations:android-support-annotations"), - react_native_dep("third-party/android/support/v4:lib-support-v4"), + react_native_dep("third-party/android/support-annotations:android-support-annotations") ], visibility = [ "PUBLIC", diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK index c8017cafb89ea2..f4f96da9e7591f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/BUCK @@ -3,9 +3,6 @@ load("//ReactNative:DEFS.bzl", "react_native_dep", "react_native_target", "rn_an rn_android_library( name = "datepicker", srcs = glob(["**/*.java"]), - provided_deps = [ - react_native_dep("third-party/android/support/v4:lib-support-v4"), - ], visibility = [ "PUBLIC", ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java index 8ba3c5555205f2..efae91c48ec5ff 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogFragment.java @@ -16,12 +16,12 @@ import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Dialog; -import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.widget.DatePicker; @SuppressLint("ValidFragment") diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java index 8d531ce65dd323..d29bbda8267eae 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DatePickerDialogModule.java @@ -9,15 +9,13 @@ import javax.annotation.Nullable; -import java.util.Map; - -import android.app.Activity; import android.app.DatePickerDialog.OnDateSetListener; -import android.app.DialogFragment; -import android.app.FragmentManager; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.FragmentManager; +import android.support.v7.app.AppCompatActivity; import android.widget.DatePicker; import com.facebook.react.bridge.NativeModule; @@ -120,48 +118,28 @@ public void onDismiss(DialogInterface dialog) { */ @ReactMethod public void open(@Nullable final ReadableMap options, Promise promise) { - Activity activity = getCurrentActivity(); + AppCompatActivity activity = (AppCompatActivity) getCurrentActivity(); if (activity == null) { promise.reject( ERROR_NO_ACTIVITY, "Tried to open a DatePicker dialog while not attached to an Activity"); return; } - // We want to support both android.app.Activity and the pre-Honeycomb FragmentActivity - // (for apps that use it for legacy reasons). This unfortunately leads to some code duplication. - if (activity instanceof android.support.v4.app.FragmentActivity) { - android.support.v4.app.FragmentManager fragmentManager = - ((android.support.v4.app.FragmentActivity) activity).getSupportFragmentManager(); - android.support.v4.app.DialogFragment oldFragment = - (android.support.v4.app.DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } - SupportDatePickerDialogFragment fragment = new SupportDatePickerDialogFragment(); - if (options != null) { - final Bundle args = createFragmentArguments(options); - fragment.setArguments(args); - } - final DatePickerDialogListener listener = new DatePickerDialogListener(promise); - fragment.setOnDismissListener(listener); - fragment.setOnDateSetListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); - } else { - FragmentManager fragmentManager = activity.getFragmentManager(); - DialogFragment oldFragment = (DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } - DatePickerDialogFragment fragment = new DatePickerDialogFragment(); - if (options != null) { - final Bundle args = createFragmentArguments(options); - fragment.setArguments(args); - } - final DatePickerDialogListener listener = new DatePickerDialogListener(promise); - fragment.setOnDismissListener(listener); - fragment.setOnDateSetListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); + + FragmentManager fragmentManager = activity.getSupportFragmentManager(); + DialogFragment oldFragment = (DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); + if (oldFragment != null) { + oldFragment.dismiss(); + } + DatePickerDialogFragment fragment = new DatePickerDialogFragment(); + if (options != null) { + final Bundle args = createFragmentArguments(options); + fragment.setArguments(args); } + final DatePickerDialogListener listener = new DatePickerDialogListener(promise); + fragment.setOnDismissListener(listener); + fragment.setOnDateSetListener(listener); + fragment.show(fragmentManager, FRAGMENT_TAG); } private Bundle createFragmentArguments(ReadableMap options) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java index 18c3ea2faac9db..1ac315f8136d4a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/DismissableDatePickerDialog.java @@ -10,7 +10,6 @@ import android.app.DatePickerDialog; import javax.annotation.Nullable; -import android.app.DatePickerDialog; import android.content.Context; import android.os.Build; diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/SupportDatePickerDialogFragment.java b/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/SupportDatePickerDialogFragment.java deleted file mode 100644 index 582dc8c954e315..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/datepicker/SupportDatePickerDialogFragment.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.modules.datepicker; - -import javax.annotation.Nullable; - -import android.annotation.SuppressLint; -import android.app.DatePickerDialog.OnDateSetListener; -import android.app.Dialog; -import android.content.DialogInterface; -import android.content.DialogInterface.OnDismissListener; -import android.os.Bundle; -import android.support.v4.app.DialogFragment; - -@SuppressLint("ValidFragment") -public class SupportDatePickerDialogFragment extends DialogFragment { - - @Nullable - private OnDateSetListener mOnDateSetListener; - @Nullable - private OnDismissListener mOnDismissListener; - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - final Bundle args = getArguments(); - return DatePickerDialogFragment.createDialog(args, getActivity(), mOnDateSetListener); - } - - @Override - public void onDismiss(DialogInterface dialog) { - super.onDismiss(dialog); - if (mOnDismissListener != null) { - mOnDismissListener.onDismiss(dialog); - } - } - - /*package*/ void setOnDateSetListener(@Nullable OnDateSetListener onDateSetListener) { - mOnDateSetListener = onDateSetListener; - } - - /*package*/ void setOnDismissListener(@Nullable OnDismissListener onDismissListener) { - mOnDismissListener = onDismissListener; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK index 6f0bb554ba19f6..0049c8b9812348 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/BUCK @@ -3,9 +3,6 @@ load("//ReactNative:DEFS.bzl", "react_native_dep", "react_native_target", "rn_an rn_android_library( name = "dialog", srcs = glob(["**/*.java"]), - provided_deps = [ - react_native_dep("third-party/android/support/v4:lib-support-v4"), - ], visibility = [ "PUBLIC", ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java index df1f45aca0e0e9..071d41870a35e7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/DialogModule.java @@ -16,7 +16,6 @@ import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnDismissListener; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.Callback; @@ -76,21 +75,11 @@ private class FragmentManagerHelper { // Exactly one of the two is null private final @Nullable android.app.FragmentManager mFragmentManager; - private final @Nullable android.support.v4.app.FragmentManager mSupportFragmentManager; private @Nullable Object mFragmentToShow; - private boolean isUsingSupportLibrary() { - return mSupportFragmentManager != null; - } - - public FragmentManagerHelper(android.support.v4.app.FragmentManager supportFragmentManager) { - mFragmentManager = null; - mSupportFragmentManager = supportFragmentManager; - } public FragmentManagerHelper(android.app.FragmentManager fragmentManager) { mFragmentManager = fragmentManager; - mSupportFragmentManager = null; } public void showPendingAlert() { @@ -98,27 +87,16 @@ public void showPendingAlert() { if (mFragmentToShow == null) { return; } - if (isUsingSupportLibrary()) { - ((SupportAlertFragment) mFragmentToShow).show(mSupportFragmentManager, FRAGMENT_TAG); - } else { - ((AlertFragment) mFragmentToShow).show(mFragmentManager, FRAGMENT_TAG); - } + + ((AlertFragment) mFragmentToShow).show(mFragmentManager, FRAGMENT_TAG); mFragmentToShow = null; } private void dismissExisting() { - if (isUsingSupportLibrary()) { - SupportAlertFragment oldFragment = - (SupportAlertFragment) mSupportFragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } - } else { - AlertFragment oldFragment = - (AlertFragment) mFragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } + AlertFragment oldFragment = + (AlertFragment) mFragmentManager.findFragmentByTag(FRAGMENT_TAG); + if (oldFragment != null) { + oldFragment.dismiss(); } } @@ -130,26 +108,14 @@ public void showNewAlert(boolean isInForeground, Bundle arguments, Callback acti AlertFragmentListener actionListener = actionCallback != null ? new AlertFragmentListener(actionCallback) : null; - if (isUsingSupportLibrary()) { - SupportAlertFragment alertFragment = new SupportAlertFragment(actionListener, arguments); - if (isInForeground) { - if (arguments.containsKey(KEY_CANCELABLE)) { - alertFragment.setCancelable(arguments.getBoolean(KEY_CANCELABLE)); - } - alertFragment.show(mSupportFragmentManager, FRAGMENT_TAG); - } else { - mFragmentToShow = alertFragment; + AlertFragment alertFragment = new AlertFragment(actionListener, arguments); + if (isInForeground) { + if (arguments.containsKey(KEY_CANCELABLE)) { + alertFragment.setCancelable(arguments.getBoolean(KEY_CANCELABLE)); } + alertFragment.show(mFragmentManager, FRAGMENT_TAG); } else { - AlertFragment alertFragment = new AlertFragment(actionListener, arguments); - if (isInForeground) { - if (arguments.containsKey(KEY_CANCELABLE)) { - alertFragment.setCancelable(arguments.getBoolean(KEY_CANCELABLE)); - } - alertFragment.show(mFragmentManager, FRAGMENT_TAG); - } else { - mFragmentToShow = alertFragment; - } + mFragmentToShow = alertFragment; } } } @@ -276,10 +242,7 @@ public void run() { if (activity == null) { return null; } - if (activity instanceof FragmentActivity) { - return new FragmentManagerHelper(((FragmentActivity) activity).getSupportFragmentManager()); - } else { - return new FragmentManagerHelper(activity.getFragmentManager()); - } + + return new FragmentManagerHelper(activity.getFragmentManager()); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/SupportAlertFragment.java b/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/SupportAlertFragment.java deleted file mode 100644 index 0b360683d4dc45..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/SupportAlertFragment.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.modules.dialog; - -import javax.annotation.Nullable; - -import android.annotation.SuppressLint; -import android.app.Dialog; -import android.content.DialogInterface; -import android.os.Bundle; - -import android.support.v4.app.DialogFragment; - -/** - * {@link AlertFragment} for apps that use the Support FragmentActivity and FragmentManager - * for legacy reasons. - */ -public class SupportAlertFragment extends DialogFragment implements DialogInterface.OnClickListener { - - private final @Nullable DialogModule.AlertFragmentListener mListener; - - public SupportAlertFragment() { - mListener = null; - } - - @SuppressLint("ValidFragment") - public SupportAlertFragment(@Nullable DialogModule.AlertFragmentListener listener, Bundle arguments) { - mListener = listener; - setArguments(arguments); - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - return AlertFragment.createDialog(getActivity(), getArguments(), this); - } - - @Override - public void onClick(DialogInterface dialog, int which) { - if (mListener != null) { - mListener.onClick(dialog, which); - } - } - - @Override - public void onDismiss(DialogInterface dialog) { - super.onDismiss(dialog); - if (mListener != null) { - mListener.onDismiss(dialog); - } - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK index 168d551e5de779..93c5855738164f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/BUCK @@ -4,8 +4,7 @@ rn_android_library( name = "fresco", srcs = glob(["**/*.java"]), provided_deps = [ - react_native_dep("third-party/android/support-annotations:android-support-annotations"), - react_native_dep("third-party/android/support/v4:lib-support-v4"), + react_native_dep("third-party/android/support-annotations:android-support-annotations") ], visibility = [ "PUBLIC", diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK index 76a899eb4b8097..8d5f2f87a37239 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/network/BUCK @@ -3,9 +3,6 @@ load("//ReactNative:DEFS.bzl", "react_native_dep", "react_native_target", "rn_an rn_android_library( name = "network", srcs = glob(["**/*.java"]), - provided_deps = [ - react_native_dep("third-party/android/support/v4:lib-support-v4"), - ], visibility = [ "PUBLIC", ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK index 5b51a3ef489e2c..d3dd5ef5e93eb4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/BUCK @@ -3,9 +3,6 @@ load("//ReactNative:DEFS.bzl", "react_native_dep", "react_native_target", "rn_an rn_android_library( name = "timepicker", srcs = glob(["**/*.java"]), - provided_deps = [ - react_native_dep("third-party/android/support/v4:lib-support-v4"), - ], visibility = [ "PUBLIC", ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/SupportTimePickerDialogFragment.java b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/SupportTimePickerDialogFragment.java deleted file mode 100644 index 3dc5579cbd49e1..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/SupportTimePickerDialogFragment.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.modules.timepicker; - -import javax.annotation.Nullable; - -import android.app.Dialog; -import android.app.TimePickerDialog.OnTimeSetListener; -import android.content.DialogInterface; -import android.content.DialogInterface.OnDismissListener; -import android.os.Bundle; -import android.support.v4.app.DialogFragment; - -@SuppressWarnings("ValidFragment") -public class SupportTimePickerDialogFragment extends DialogFragment { - - @Nullable - private OnTimeSetListener mOnTimeSetListener; - @Nullable - private OnDismissListener mOnDismissListener; - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - final Bundle args = getArguments(); - return TimePickerDialogFragment.createDialog(args, getActivity(), mOnTimeSetListener); - } - - @Override - public void onDismiss(DialogInterface dialog) { - super.onDismiss(dialog); - if (mOnDismissListener != null) { - mOnDismissListener.onDismiss(dialog); - } - } - - public void setOnDismissListener(@Nullable OnDismissListener onDismissListener) { - mOnDismissListener = onDismissListener; - } - - public void setOnTimeSetListener(@Nullable OnTimeSetListener onTimeSetListener) { - mOnTimeSetListener = onTimeSetListener; - } -} diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerDialogModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerDialogModule.java index d74f3a712ddca7..d336b927580592 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerDialogModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/timepicker/TimePickerDialogModule.java @@ -99,41 +99,20 @@ public void open(@Nullable final ReadableMap options, Promise promise) { "Tried to open a TimePicker dialog while not attached to an Activity"); return; } - // We want to support both android.app.Activity and the pre-Honeycomb FragmentActivity - // (for apps that use it for legacy reasons). This unfortunately leads to some code duplication. - if (activity instanceof android.support.v4.app.FragmentActivity) { - android.support.v4.app.FragmentManager fragmentManager = - ((android.support.v4.app.FragmentActivity) activity).getSupportFragmentManager(); - android.support.v4.app.DialogFragment oldFragment = - (android.support.v4.app.DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } - SupportTimePickerDialogFragment fragment = new SupportTimePickerDialogFragment(); - if (options != null) { - Bundle args = createFragmentArguments(options); - fragment.setArguments(args); - } - TimePickerDialogListener listener = new TimePickerDialogListener(promise); - fragment.setOnDismissListener(listener); - fragment.setOnTimeSetListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); - } else { - FragmentManager fragmentManager = activity.getFragmentManager(); - DialogFragment oldFragment = (DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); - if (oldFragment != null) { - oldFragment.dismiss(); - } - TimePickerDialogFragment fragment = new TimePickerDialogFragment(); - if (options != null) { - final Bundle args = createFragmentArguments(options); - fragment.setArguments(args); - } - TimePickerDialogListener listener = new TimePickerDialogListener(promise); - fragment.setOnDismissListener(listener); - fragment.setOnTimeSetListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); + FragmentManager fragmentManager = activity.getFragmentManager(); + DialogFragment oldFragment = (DialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); + if (oldFragment != null) { + oldFragment.dismiss(); + } + TimePickerDialogFragment fragment = new TimePickerDialogFragment(); + if (options != null) { + final Bundle args = createFragmentArguments(options); + fragment.setArguments(args); } + TimePickerDialogListener listener = new TimePickerDialogListener(promise); + fragment.setOnDismissListener(listener); + fragment.setOnTimeSetListener(listener); + fragment.show(fragmentManager, FRAGMENT_TAG); } private Bundle createFragmentArguments(ReadableMap options) {