diff --git a/src/com/android/settings/core/lifecycle/ObservableDialogFragment.java b/src/com/android/settings/core/lifecycle/ObservableDialogFragment.java new file mode 100644 index 00000000000..17b41688e9e --- /dev/null +++ b/src/com/android/settings/core/lifecycle/ObservableDialogFragment.java @@ -0,0 +1,57 @@ +/* + * 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. + */ +package com.android.settings.core.lifecycle; + +import android.app.DialogFragment; + +/** + * {@link DialogFragment} that has hooks to observe fragment lifecycle events. + */ +public class ObservableDialogFragment extends DialogFragment { + + protected final Lifecycle mLifecycle = new Lifecycle(); + + @Override + public void onStart() { + mLifecycle.onStart(); + super.onStart(); + } + + @Override + public void onResume() { + mLifecycle.onResume(); + super.onResume(); + } + + @Override + public void onPause() { + mLifecycle.onPause(); + super.onPause(); + } + + @Override + public void onStop() { + mLifecycle.onStop(); + super.onStop(); + } + + @Override + public void onDestroy() { + mLifecycle.onDestroy(); + super.onDestroy(); + } + +} diff --git a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java index 042d5ca6c41..cd30fad7686 100644 --- a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java +++ b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java @@ -40,13 +40,23 @@ import static org.junit.Assert.assertTrue; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class LifecycleTest { + public static class TestDialogFragment extends ObservableDialogFragment { + + final TestObserver mFragObserver; + + public TestDialogFragment() { + mFragObserver = new TestObserver(); + mLifecycle.addObserver(mFragObserver); + } + } + public static class TestActivity extends ObservableActivity { - final Fragment mFragment; + final TestDialogFragment mFragment; final TestObserver mActObserver; public TestActivity() { - mFragment = new Fragment(); + mFragment = new TestDialogFragment(); mActObserver = new TestObserver(); getLifecycle().addObserver(mActObserver); } @@ -102,14 +112,19 @@ public class LifecycleTest { TestActivity activity = ac.get(); ac.create().start(); + assertTrue(activity.mFragment.mFragObserver.mOnStartObserved); assertTrue(activity.mActObserver.mOnStartObserved); ac.resume(); + assertTrue(activity.mFragment.mFragObserver.mOnResumeObserved); assertTrue(activity.mActObserver.mOnResumeObserved); ac.pause(); + assertTrue(activity.mFragment.mFragObserver.mOnPauseObserved); assertTrue(activity.mActObserver.mOnPauseObserved); ac.stop(); + assertTrue(activity.mFragment.mFragObserver.mOnStopObserved); assertTrue(activity.mActObserver.mOnStopObserved); ac.destroy(); + assertTrue(activity.mFragment.mFragObserver.mOnDestroyObserved); assertTrue(activity.mActObserver.mOnDestroyObserved); } }