-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Android 12: Security and privacy - Pending intents mutability #16082
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…f Android 12 migration changes
PendingIntent that contains a RemoteInput requires a mutable flag. Comments can have voice reply enabled which will come through the remoteInput (EXTRA_VOICE_OR_INLINE_REPLY) For more details, see: https://issuetracker.google.com/issues/204328125
This version fixes a platform bug causing pending intent crash on targetSdkVersion 31. For more details, see: https://issuetracker.google.com/issues/194108978
…ter upgrading to 2.7.0 For more details, see: https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove-default
This commit updates immutable pending intent flag to stories lib > FrameSaveNotifier
|
You can trigger optional UI/connected tests for these changes by visiting CircleCI here. |
|
You can test the changes on this Pull Request by downloading the APKs: |
ravishanker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did a quick smoke test of flows and notifications.
Great effort. Thanks for making this happen! 🙇🏻♂️
|
Please feel free to merge this after resolving conflicts. Make sure to pull-in latest trunk as I noticed it required me to uninstall the previous due to database upgrade. |
# Conflicts: # build.gradle
Generated by 🚫 dangerJS |
|
Found 1 violations: The PR caused the following dependency changes:-+--- com.automattic:stories:1.2.1
-| +--- androidx.databinding:viewbinding:4.2.2 (*)
-| +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.4.20 -> 1.5.32 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
-| +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc
-| | \--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-jvm:1.0-M1-1.4.0-rc
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.4.0-rc -> 1.6.0 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.4.0-rc -> 1.6.0
-| +--- org.jetbrains.kotlin:kotlin-reflect:1.4.20
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.4.20 -> 1.6.0 (*)
-| +--- androidx.appcompat:appcompat:1.0.2 -> 1.3.1 (*)
-| +--- androidx.constraintlayout:constraintlayout:1.1.3 -> 2.0.4 (*)
-| +--- androidx.core:core-ktx:1.2.0 -> 1.7.0 (*)
-| +--- androidx.navigation:navigation-fragment-ktx:2.0.0 -> 2.3.5
-| | +--- androidx.navigation:navigation-fragment:2.3.5
-| | | +--- androidx.fragment:fragment:1.2.4 -> 1.3.6 (*)
-| | | \--- androidx.navigation:navigation-runtime:2.3.5 -> 2.4.0-beta02 (*)
-| | +--- androidx.navigation:navigation-runtime-ktx:2.3.5 -> 2.4.0-beta02 (*)
-| | +--- androidx.fragment:fragment-ktx:1.2.4
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
-| | | +--- androidx.fragment:fragment:1.2.4 -> 1.3.6 (*)
-| | | +--- androidx.activity:activity-ktx:1.1.0 -> 1.3.1 (*)
-| | | +--- androidx.core:core-ktx:1.1.0 -> 1.7.0 (*)
-| | | +--- androidx.collection:collection-ktx:1.1.0 (*)
-| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0
-| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
-| | | | \--- androidx.lifecycle:lifecycle-livedata-core:2.2.0 -> 2.3.1 (*)
-| | | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
-| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.6.0 (*)
-| +--- androidx.navigation:navigation-ui-ktx:2.0.0 -> 2.3.5
-| | +--- androidx.navigation:navigation-ui:2.3.5
-| | | +--- androidx.navigation:navigation-runtime:2.3.5 -> 2.4.0-beta02 (*)
-| | | +--- androidx.customview:customview:1.1.0 (*)
-| | | +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
-| | | +--- com.google.android.material:material:1.0.0 -> 1.6.0-alpha01 (*)
-| | | \--- androidx.transition:transition:1.3.0 (*)
-| | +--- androidx.navigation:navigation-runtime-ktx:2.3.5 -> 2.4.0-beta02 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.6.0 (*)
-| +--- androidx.emoji:emoji:1.0.0
-| | \--- androidx.core:core:1.0.0 -> 1.7.0 (*)
-| +--- androidx.recyclerview:recyclerview:1.1.0 (*)
-| +--- com.google.android.material:material:1.2.1 -> 1.6.0-alpha01 (*)
-| +--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0
-| | +--- com.github.bumptech.glide:gifdecoder:4.11.0
-| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | +--- com.github.bumptech.glide:disklrucache:4.11.0
-| | +--- com.github.bumptech.glide:annotations:4.11.0
-| | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
-| | +--- androidx.vectordrawable:vectordrawable-animated:1.0.0 -> 1.1.0 (*)
-| | \--- androidx.exifinterface:exifinterface:1.0.0 -> 1.1.0-beta01
-| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| +--- jp.wasabeef:glide-transformations:4.3.0
-| | \--- com.github.bumptech.glide:glide:4.11.0 (*)
-| +--- org.greenrobot:eventbus:3.3.1
-| | \--- org.greenrobot:eventbus-java:3.3.1
-| +--- com.automattic.stories:photoeditor:1.2.1
-| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc (*)
-| | +--- androidx.appcompat:appcompat:1.0.2 -> 1.3.1 (*)
-| | +--- androidx.core:core-ktx:1.2.0 -> 1.7.0 (*)
-| | +--- androidx.camera:camera-core:1.0.0-alpha06
-| | | +--- com.google.auto.value:auto-value-annotations:1.6.3
-| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.2.0 (*)
-| | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.3.1 (*)
-| | | +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.1.0-beta01 (*)
-| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
-| | | \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.0.0 (*)
-| | +--- androidx.camera:camera-camera2:1.0.0-alpha06
-| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| | | +--- androidx.camera:camera-core:1.0.0-alpha06 (*)
-| | | +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
-| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.0.0 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9 -> 1.5.2 (*)
-| | +--- com.google.android.material:material:1.2.1 -> 1.6.0-alpha01 (*)
-| | +--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0 (*)
-| | +--- jp.wasabeef:glide-transformations:4.3.0 (*)
-| | +--- com.github.chrisbanes:PhotoView:2.3.0
-| | | \--- androidx.appcompat:appcompat:1.0.0 -> 1.3.1 (*)
-| | +--- com.automattic.stories:mp4compose:1.2.1
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
-| | | \--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0 (*)
-| | \--- androidx.emoji:emoji:1.0.0 (*)
-| +--- androidx.lifecycle:lifecycle-common-java8:2.2.0 -> 2.3.0 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
-| +--- androidx.lifecycle:lifecycle-livedata-ktx:2.2.0
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0 -> 1.5.2 (*)
-| | +--- androidx.lifecycle:lifecycle-livedata:2.2.0 (*)
-| | \--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0 (*)
-| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9 -> 1.5.2 (*)
-| \--- com.github.chrisbanes:PhotoView:2.3.0 (*)
++--- com.automattic:stories:trunk-2f8aaff7fb03bdbd0e2efbe111626bf3c6a7aa44
+| +--- androidx.databinding:viewbinding:4.2.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.4.20 -> 1.5.32 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc
+| | \--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-jvm:1.0-M1-1.4.0-rc
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.4.0-rc -> 1.6.0 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.4.0-rc -> 1.6.0
+| +--- org.jetbrains.kotlin:kotlin-reflect:1.4.20
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.4.20 -> 1.6.0 (*)
+| +--- androidx.appcompat:appcompat:1.0.2 -> 1.3.1 (*)
+| +--- androidx.constraintlayout:constraintlayout:1.1.3 -> 2.0.4 (*)
+| +--- androidx.core:core-ktx:1.2.0 -> 1.7.0 (*)
+| +--- androidx.navigation:navigation-fragment-ktx:2.0.0 -> 2.3.5
+| | +--- androidx.navigation:navigation-fragment:2.3.5
+| | | +--- androidx.fragment:fragment:1.2.4 -> 1.3.6 (*)
+| | | \--- androidx.navigation:navigation-runtime:2.3.5 -> 2.4.0-beta02 (*)
+| | +--- androidx.navigation:navigation-runtime-ktx:2.3.5 -> 2.4.0-beta02 (*)
+| | +--- androidx.fragment:fragment-ktx:1.2.4
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
+| | | +--- androidx.fragment:fragment:1.2.4 -> 1.3.6 (*)
+| | | +--- androidx.activity:activity-ktx:1.1.0 -> 1.3.1 (*)
+| | | +--- androidx.core:core-ktx:1.1.0 -> 1.7.0 (*)
+| | | +--- androidx.collection:collection-ktx:1.1.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0
+| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
+| | | | \--- androidx.lifecycle:lifecycle-livedata-core:2.2.0 -> 2.3.1 (*)
+| | | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
+| | +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.6.0 (*)
+| +--- androidx.navigation:navigation-ui-ktx:2.0.0 -> 2.3.5
+| | +--- androidx.navigation:navigation-ui:2.3.5
+| | | +--- androidx.navigation:navigation-runtime:2.3.5 -> 2.4.0-beta02 (*)
+| | | +--- androidx.customview:customview:1.1.0 (*)
+| | | +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
+| | | +--- com.google.android.material:material:1.0.0 -> 1.6.0-alpha01 (*)
+| | | \--- androidx.transition:transition:1.3.0 (*)
+| | +--- androidx.navigation:navigation-runtime-ktx:2.3.5 -> 2.4.0-beta02 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.6.0 (*)
+| +--- androidx.emoji:emoji:1.0.0
+| | \--- androidx.core:core:1.0.0 -> 1.7.0 (*)
+| +--- androidx.recyclerview:recyclerview:1.1.0 (*)
+| +--- com.google.android.material:material:1.2.1 -> 1.6.0-alpha01 (*)
+| +--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0
+| | +--- com.github.bumptech.glide:gifdecoder:4.11.0
+| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
+| | +--- com.github.bumptech.glide:disklrucache:4.11.0
+| | +--- com.github.bumptech.glide:annotations:4.11.0
+| | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
+| | +--- androidx.vectordrawable:vectordrawable-animated:1.0.0 -> 1.1.0 (*)
+| | \--- androidx.exifinterface:exifinterface:1.0.0 -> 1.1.0-beta01
+| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
+| +--- jp.wasabeef:glide-transformations:4.3.0
+| | \--- com.github.bumptech.glide:glide:4.11.0 (*)
+| +--- org.greenrobot:eventbus:3.3.1
+| | \--- org.greenrobot:eventbus-java:3.3.1
+| +--- com.automattic.stories:photoeditor:trunk-2f8aaff7fb03bdbd0e2efbe111626bf3c6a7aa44
+| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-serialization-runtime:1.0-M1-1.4.0-rc (*)
+| | +--- androidx.appcompat:appcompat:1.0.2 -> 1.3.1 (*)
+| | +--- androidx.core:core-ktx:1.2.0 -> 1.7.0 (*)
+| | +--- androidx.camera:camera-core:1.0.0-alpha06
+| | | +--- com.google.auto.value:auto-value-annotations:1.6.3
+| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | | +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.2.0 (*)
+| | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.3.1 (*)
+| | | +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.1.0-beta01 (*)
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
+| | | +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
+| | | \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.0.0 (*)
+| | +--- androidx.camera:camera-camera2:1.0.0-alpha06
+| | | +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| | | +--- androidx.camera:camera-core:1.0.0-alpha06 (*)
+| | | +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
+| | | \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.0.0 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9 -> 1.5.2 (*)
+| | +--- com.google.android.material:material:1.2.1 -> 1.6.0-alpha01 (*)
+| | +--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0 (*)
+| | +--- jp.wasabeef:glide-transformations:4.3.0 (*)
+| | +--- com.github.chrisbanes:PhotoView:2.3.0
+| | | \--- androidx.appcompat:appcompat:1.0.0 -> 1.3.1 (*)
+| | +--- com.automattic.stories:mp4compose:trunk-2f8aaff7fb03bdbd0e2efbe111626bf3c6a7aa44
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20 -> 1.5.32 (*)
+| | | \--- com.github.bumptech.glide:glide:4.10.0 -> 4.11.0 (*)
+| | \--- androidx.emoji:emoji:1.0.0 (*)
+| +--- androidx.lifecycle:lifecycle-common-java8:2.2.0 -> 2.3.0 (*)
+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0 -> 2.3.1 (*)
+| +--- androidx.lifecycle:lifecycle-livedata-ktx:2.2.0
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.50 -> 1.6.0 (*)
+| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0 -> 1.5.2 (*)
+| | +--- androidx.lifecycle:lifecycle-livedata:2.2.0 (*)
+| | \--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9 -> 1.5.2 (*)
+| \--- com.github.chrisbanes:PhotoView:2.3.0 (*)
-+--- com.automattic.stories:mp4compose:1.2.1 (*)
++--- com.automattic.stories:mp4compose:trunk-2f8aaff7fb03bdbd0e2efbe111626bf3c6a7aa44 (*)
-+--- androidx.work:work-runtime:2.4.0
-| +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-| +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.2.0 (*)
-| +--- androidx.room:room-runtime:2.2.5 -> 2.3.0
-| | +--- androidx.room:room-common:2.3.0
-| | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | +--- androidx.sqlite:sqlite-framework:2.1.0
-| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | \--- androidx.sqlite:sqlite:2.1.0
-| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | +--- androidx.sqlite:sqlite:2.1.0 (*)
-| | +--- androidx.arch.core:core-runtime:2.0.1 -> 2.1.0 (*)
-| | \--- androidx.annotation:annotation-experimental:1.1.0
-| +--- androidx.sqlite:sqlite:2.1.0 (*)
-| +--- androidx.sqlite:sqlite-framework:2.1.0 (*)
-| +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
-| \--- androidx.lifecycle:lifecycle-service:2.1.0 -> 2.2.0 (*)
++--- androidx.work:work-runtime:2.7.0
+| +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
+| +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+| +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.2.0 (*)
+| +--- androidx.startup:startup-runtime:1.0.0 (*)
+| +--- androidx.core:core:1.6.0 -> 1.7.0 (*)
+| +--- androidx.room:room-runtime:2.2.5 -> 2.3.0
+| | +--- androidx.room:room-common:2.3.0
+| | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
+| | +--- androidx.sqlite:sqlite-framework:2.1.0
+| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
+| | | \--- androidx.sqlite:sqlite:2.1.0
+| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
+| | +--- androidx.sqlite:sqlite:2.1.0 (*)
+| | +--- androidx.arch.core:core-runtime:2.0.1 -> 2.1.0 (*)
+| | \--- androidx.annotation:annotation-experimental:1.1.0
+| +--- androidx.sqlite:sqlite:2.1.0 (*)
+| +--- androidx.sqlite:sqlite-framework:2.1.0 (*)
+| +--- androidx.core:core:1.1.0 -> 1.7.0 (*)
+| \--- androidx.lifecycle:lifecycle-service:2.1.0 -> 2.2.0 (*)
-+--- androidx.work:work-runtime-ktx:2.4.0
-| +--- androidx.work:work-runtime:2.4.0 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.71 -> 1.6.0 (*)
-| \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.4 -> 1.5.2 (*)
++--- androidx.work:work-runtime-ktx:2.7.0
+| +--- androidx.work:work-runtime:2.7.0 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.5.30 -> 1.6.0 (*)
+| \--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0 -> 1.5.2 (*)
-\--- androidx.work:work-gcm:2.4.0
- +--- androidx.work:work-runtime:2.4.0 (*)
- +--- com.google.android.gms:play-services-gcm:17.0.0
- | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
- | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
- | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
- | +--- com.google.android.gms:play-services-base:17.0.0 -> 17.1.0
- | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
- | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
- | | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
- | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1
- | | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
- | | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
- | | | \--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
- | | \--- com.google.android.gms:play-services-tasks:17.0.0
- | | \--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
- | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
- | +--- com.google.android.gms:play-services-iid:17.0.0
- | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
- | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
- | | +--- com.google.android.gms:play-services-base:17.0.0 -> 17.1.0 (*)
- | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
- | | +--- com.google.android.gms:play-services-stats:17.0.0
- | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
- | | | \--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
- | | \--- com.google.android.gms:play-services-tasks:17.0.0 (*)
- | \--- com.google.android.gms:play-services-stats:17.0.0 (*)
- \--- androidx.room:room-runtime:2.2.5 -> 2.3.0 (*)
+\--- androidx.work:work-gcm:2.7.0
+ +--- androidx.work:work-runtime:2.7.0 (*)
+ +--- com.google.android.gms:play-services-gcm:17.0.0
+ | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+ | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
+ | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+ | +--- com.google.android.gms:play-services-base:17.0.0 -> 17.1.0
+ | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+ | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
+ | | +--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
+ | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1
+ | | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+ | | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
+ | | | \--- androidx.fragment:fragment:1.0.0 -> 1.3.6 (*)
+ | | \--- com.google.android.gms:play-services-tasks:17.0.0
+ | | \--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
+ | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
+ | +--- com.google.android.gms:play-services-iid:17.0.0
+ | | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
+ | | +--- androidx.core:core:1.0.0 -> 1.7.0 (*)
+ | | +--- com.google.android.gms:play-services-base:17.0.0 -> 17.1.0 (*)
+ | | +--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
+ | | +--- com.google.android.gms:play-services-stats:17.0.0
+ | | | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+ | | | \--- com.google.android.gms:play-services-basement:17.0.0 -> 17.1.1 (*)
+ | | \--- com.google.android.gms:play-services-tasks:17.0.0 (*)
+ | \--- com.google.android.gms:play-services-stats:17.0.0 (*)
+ \--- androidx.room:room-runtime:2.2.5 -> 2.3.0 (*)
Please review and act accordingly
|
Closes #16065
References: Automattic/stories-android#721
This PR includes the following changes:
PendingIntentflags to include the mutability flag as part ofAndroid 12migration changes for notifications and widgets (seeDetailssection).androidxWorkVersionto2.7.0that fixes a platform bug causing pending intent crash ontargetSdkVersion 31(2a2f7f0, 3441794)Details:
List of all the notification types used in the app and classes setting pending intent mutability for them:
NotificationHelper.handleDefaultPush)AlarmManagerAlarmManagerAlarmManagerWorkManagerWorkManagerWorkManagerAdditionally,
WidgetUtilssets pending intent mutability forStatswidgets.It is important that pending intents mutability for all notifications and widgets are correctly set. Quoting the doc:
For the reasons above, all pending intents are made immutable (8176ba3) except for comments notifications that allow direct replies and voice remote input (76d8c36).
For the notifications using
AlarmManager(PENDING_DRAFTS,QUICK_START_REMINDER,POST_PUBLISHED), it seems we do not need a mutable pending intent as they're not repeating alarms.To test:
Make sure that at least the special notifications have their pending intent mutability set correctly.
Test.1 Comments
Test.2 Quick Start Reminders
Test.3 Post Published
FABto create a post to schedule it for a future timePost SettingsPublish DatePublish Datetwo minutes in the futureNotificationtowhen publishedTest.4 Adhoc Notification
If you suspect any other notification (from the notifications table above) should have a pending intent mutability other than what is set, test it out or test for a random notification type.
Note that
PENDING_DRAFTSnotifications are not displayed due to an existing bug: #14240Test.5 Stats Widgets
WordPressMerge Instructions
Make sure that referencedStories LibPR is merged totrunkUpdateStories Libversion fromtrunkRemoveNot Ready for MergelabelMerge the PRRegression Notes
Potential unintended areas of impact
Push notifications
What I did to test those areas of impact (or what existing automated tests I relied on)
See
To TestsectionWhat automated tests I added (or what prevented me from doing so) - N/A
PR submission checklist:
RELEASE-NOTES.txtif necessary.