Loading core/java/android/widget/DateTimeView.java +4 −2 Original line number Diff line number Diff line Loading @@ -450,8 +450,10 @@ public class DateTimeView extends TextView { public void removeView(DateTimeView v) { synchronized (mAttachedViews) { mAttachedViews.remove(v); if (mAttachedViews.isEmpty()) { final boolean removed = mAttachedViews.remove(v); // Only unregister once when we remove the last view in the list otherwise we risk // trying to unregister a receiver that is no longer registered. if (removed && mAttachedViews.isEmpty()) { unregister(getApplicationContextIfAvailable(v.getContext())); } } Loading core/tests/coretests/src/android/widget/DateTimeViewTest.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.widget; import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest public class DateTimeViewTest { @UiThreadTest @Test public void additionalOnDetachedFromWindow_noException() { final DateTimeView dateTimeView = new DateTimeView(InstrumentationRegistry.getContext()); dateTimeView.onAttachedToWindow(); dateTimeView.onAttachedToWindow(); // Even there is an additional detach (abnormal), DateTimeView should not unregister // receiver again that raises "java.lang.IllegalArgumentException: Receiver not registered". dateTimeView.onDetachedFromWindow(); } } Loading
core/java/android/widget/DateTimeView.java +4 −2 Original line number Diff line number Diff line Loading @@ -450,8 +450,10 @@ public class DateTimeView extends TextView { public void removeView(DateTimeView v) { synchronized (mAttachedViews) { mAttachedViews.remove(v); if (mAttachedViews.isEmpty()) { final boolean removed = mAttachedViews.remove(v); // Only unregister once when we remove the last view in the list otherwise we risk // trying to unregister a receiver that is no longer registered. if (removed && mAttachedViews.isEmpty()) { unregister(getApplicationContextIfAvailable(v.getContext())); } } Loading
core/tests/coretests/src/android/widget/DateTimeViewTest.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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 android.widget; import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) @SmallTest public class DateTimeViewTest { @UiThreadTest @Test public void additionalOnDetachedFromWindow_noException() { final DateTimeView dateTimeView = new DateTimeView(InstrumentationRegistry.getContext()); dateTimeView.onAttachedToWindow(); dateTimeView.onAttachedToWindow(); // Even there is an additional detach (abnormal), DateTimeView should not unregister // receiver again that raises "java.lang.IllegalArgumentException: Receiver not registered". dateTimeView.onDetachedFromWindow(); } }