Merge "Add FLAG_IMMUTABLE to PendingIntent in LegacyModeSmsHandler." into pi-dev am: 44b02956c4 am: 06572a0820 am: 5625595e77 am: 0642423c12 am: a6351932b9 am: 7495bd62c7 am: adf351e352 am: b82eff3558

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Dialer/+/16199731

Change-Id: I0db20998b180459f1e5d3a71f03f0130d015906a
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a93fe2a..723cecf 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,7 +21,7 @@
 
   <uses-sdk
     android:minSdkVersion="24"
-    android:targetSdkVersion="29"/>
+    android:targetSdkVersion="30"/>
 
   <uses-permission android:name="android.permission.CALL_PHONE"/>
   <uses-permission android:name="android.permission.READ_CONTACTS"/>
diff --git a/assets/quantum/AndroidManifest.xml b/assets/quantum/AndroidManifest.xml
index 4cfcd97..28f8eec 100644
--- a/assets/quantum/AndroidManifest.xml
+++ b/assets/quantum/AndroidManifest.xml
@@ -16,6 +16,6 @@
   -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.google.android.assets.quantum">
-  <uses-sdk android:targetSdkVersion="29" />
+  <uses-sdk android:targetSdkVersion="30" />
   <application/>
 </manifest>
diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml
index be0015b..ade5bd4 100644
--- a/java/com/android/dialer/app/AndroidManifest.xml
+++ b/java/com/android/dialer/app/AndroidManifest.xml
@@ -56,7 +56,7 @@
 
   <uses-sdk
     android:minSdkVersion="24"
-    android:targetSdkVersion="29"/>
+    android:targetSdkVersion="30"/>
 
   <application>
 
diff --git a/java/com/android/dialer/assisteddialing/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/AndroidManifest.xml
index 0c2302b..6b44f1b 100644
--- a/java/com/android/dialer/assisteddialing/AndroidManifest.xml
+++ b/java/com/android/dialer/assisteddialing/AndroidManifest.xml
@@ -17,6 +17,6 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
 </manifest>
diff --git a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
index 1405841..fb6e305 100644
--- a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
+++ b/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
@@ -17,7 +17,7 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
   <application>
     <activity
diff --git a/java/com/android/dialer/binary/google/AndroidManifest.xml b/java/com/android/dialer/binary/google/AndroidManifest.xml
index d504d21..8555ff6 100644
--- a/java/com/android/dialer/binary/google/AndroidManifest.xml
+++ b/java/com/android/dialer/binary/google/AndroidManifest.xml
@@ -21,7 +21,7 @@
 
   <uses-sdk
     android:minSdkVersion="24"
-    android:targetSdkVersion="29"/>
+    android:targetSdkVersion="30"/>
 
   <uses-permission android:name="android.permission.CALL_PHONE"/>
   <uses-permission android:name="android.permission.READ_CONTACTS"/>
diff --git a/java/com/android/dialer/calllog/AndroidManifest.xml b/java/com/android/dialer/calllog/AndroidManifest.xml
index a487233..35a798e 100644
--- a/java/com/android/dialer/calllog/AndroidManifest.xml
+++ b/java/com/android/dialer/calllog/AndroidManifest.xml
@@ -18,7 +18,7 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
   <application>
 
diff --git a/java/com/android/dialer/calllog/config/AndroidManifest.xml b/java/com/android/dialer/calllog/config/AndroidManifest.xml
index 73a0f1f..80ba1d5 100644
--- a/java/com/android/dialer/calllog/config/AndroidManifest.xml
+++ b/java/com/android/dialer/calllog/config/AndroidManifest.xml
@@ -18,7 +18,7 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
   <application>
 
diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
index e5b72f2..a7b3aeb 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
@@ -17,7 +17,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/search_box_expanded"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/expanded_search_bar_height"
+    android:layout_height="@dimen/collapsed_search_bar_height"
     android:visibility="invisible">
 
   <ImageButton
diff --git a/java/com/android/dialer/promotion/impl/AndroidManifest.xml b/java/com/android/dialer/promotion/impl/AndroidManifest.xml
index 209072b..55a1657 100644
--- a/java/com/android/dialer/promotion/impl/AndroidManifest.xml
+++ b/java/com/android/dialer/promotion/impl/AndroidManifest.xml
@@ -18,6 +18,6 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
 </manifest>
diff --git a/java/com/android/dialer/shortcuts/AndroidManifest.xml b/java/com/android/dialer/shortcuts/AndroidManifest.xml
index 826ad9c..e54b659 100644
--- a/java/com/android/dialer/shortcuts/AndroidManifest.xml
+++ b/java/com/android/dialer/shortcuts/AndroidManifest.xml
@@ -18,7 +18,7 @@
 
   <uses-sdk
     android:minSdkVersion="24"
-    android:targetSdkVersion="29"/>
+    android:targetSdkVersion="30"/>
 
   <application>
 
diff --git a/java/com/android/dialer/spannable/AndroidManifest.xml b/java/com/android/dialer/spannable/AndroidManifest.xml
index afc1675..e768dac 100644
--- a/java/com/android/dialer/spannable/AndroidManifest.xml
+++ b/java/com/android/dialer/spannable/AndroidManifest.xml
@@ -18,5 +18,5 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 </manifest>
diff --git a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
index 211af86..caba77f 100644
--- a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
+++ b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
@@ -125,7 +125,7 @@
               Channel.builder()
                   .setNumber(number)
                   .setPhoneType(cursor.getInt(POSITION_PHONE_TYPE))
-                  .setLabel(Optional.of(cursor.getString(POSITION_PHONE_LABEL)).or(""))
+                  .setLabel(Optional.fromNullable(cursor.getString(POSITION_PHONE_LABEL)).or(""))
                   .setTechnology(cursor.getInt(POSITION_PHONE_TECHNOLOGY))
                   .build();
         }
diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml
index e2afd9a..7283702 100644
--- a/java/com/android/incallui/AndroidManifest.xml
+++ b/java/com/android/incallui/AndroidManifest.xml
@@ -19,7 +19,7 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
   <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
   <!-- We use this to disable the status bar buttons of home, back and recent
diff --git a/java/com/android/incallui/autoresizetext/AndroidManifest.xml b/java/com/android/incallui/autoresizetext/AndroidManifest.xml
index 9bff6f2..f66ee57 100644
--- a/java/com/android/incallui/autoresizetext/AndroidManifest.xml
+++ b/java/com/android/incallui/autoresizetext/AndroidManifest.xml
@@ -19,7 +19,7 @@
 
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 
   <application />
 </manifest>
diff --git a/java/com/android/incallui/rtt/protocol/AndroidManifest.xml b/java/com/android/incallui/rtt/protocol/AndroidManifest.xml
index c0d39b0..05f4757 100644
--- a/java/com/android/incallui/rtt/protocol/AndroidManifest.xml
+++ b/java/com/android/incallui/rtt/protocol/AndroidManifest.xml
@@ -18,5 +18,5 @@
     package="com.android.incallui.rtt.protocol">
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="26"/>
+      android:targetSdkVersion="30"/>
 </manifest>
\ No newline at end of file
diff --git a/java/com/android/incallui/video/protocol/AndroidManifest.xml b/java/com/android/incallui/video/protocol/AndroidManifest.xml
index c73ce10..8548e99 100644
--- a/java/com/android/incallui/video/protocol/AndroidManifest.xml
+++ b/java/com/android/incallui/video/protocol/AndroidManifest.xml
@@ -18,5 +18,5 @@
     package="com.android.incallui.video.protocol">
   <uses-sdk
       android:minSdkVersion="24"
-      android:targetSdkVersion="29"/>
+      android:targetSdkVersion="30"/>
 </manifest>
diff --git a/java/com/android/voicemail/AndroidManifest.xml b/java/com/android/voicemail/AndroidManifest.xml
index ccd89a9..d5c9a2d 100644
--- a/java/com/android/voicemail/AndroidManifest.xml
+++ b/java/com/android/voicemail/AndroidManifest.xml
@@ -18,7 +18,7 @@
 
   <uses-sdk
     android:minSdkVersion="24"
-    android:targetSdkVersion="29"/>
+    android:targetSdkVersion="30"/>
 
   <!-- Applications using this module should merge these permissions using android_manifest_merge -->
 
diff --git a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
index 9fda373..7be22e4 100644
--- a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
+++ b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
@@ -202,6 +202,9 @@
         new Runnable() {
           @Override
           public void run() {
+            if (networkCallback != null) {
+                networkCallback.waitForIpv4();
+            }
             try {
               while (retryCount > 0) {
                 VvmLog.i(TAG, "fetching voicemail, retry count=" + retryCount);
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
index 86d6452..a7d578d 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
@@ -77,7 +77,11 @@
         new FutureNetworkRequestCallback(config, handle, status);
     callback.requestNetwork();
     try {
-      return callback.getFuture().get();
+      NetworkWrapper ret = callback.getFuture().get();
+      if (ret != null) {
+          callback.waitForIpv4();
+      }
+      return ret;
     } catch (InterruptedException | ExecutionException e) {
       callback.releaseNetwork();
       VvmLog.e(TAG, "can't get future network", e);
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
index c0ab678..5762a09 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
@@ -18,9 +18,12 @@
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.net.ConnectivityManager;
+import android.net.InetAddresses;
+import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
 import android.net.NetworkRequest;
+import android.os.ConditionVariable;
 import android.os.Build.VERSION_CODES;
 import android.os.Handler;
 import android.os.Looper;
@@ -125,6 +128,22 @@
     resultReceived = true;
   }
 
+  private static final int DEFAULT_IPV4_WAIT_DELAY_MS = 500; // in milliseconds
+  private final ConditionVariable mWaitV4Cv = new ConditionVariable();
+  @Override
+  @CallSuper
+  public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
+    boolean hasIPv4 = (lp != null) &&
+            (lp.isReachable(InetAddresses.parseNumericAddress("8.8.8.8")));
+    if(hasIPv4) {
+        mWaitV4Cv.open();
+    }
+  }
+  public void waitForIpv4() {
+    VvmLog.w(TAG, "Waiting for IPV4 address...");
+    mWaitV4Cv.block(DEFAULT_IPV4_WAIT_DELAY_MS);
+  }
+
   @CallSuper
   public void onUnavailable() {
     VvmLog.i(TAG, "onUnavailable");