Show error when user pulls to refresh without network connection
am: 395c3f8baf

Change-Id: I0862ebf05e1fc4ea8bfc460492eb1b62f61f1100
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a6c3efd..3a2fa2d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1853,4 +1853,7 @@
 
     <!-- Confirm button text for dialog to turn auto-sync on [CHAR LIMIT=30] -->
     <string name="turn_auto_sync_on_dialog_confirm_btn">Turn on</string>
+
+    <!-- No network connection error message [CHAR LIMIT=50] -->
+    <string name="connection_error_message">No connection</string>
 </resources>
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index a496dd0..4740cf4 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -182,6 +182,10 @@
         }
     }
 
+    public void showConnectionErrorMsg() {
+        Snackbar.make(mLayoutRoot, R.string.connection_error_message, Snackbar.LENGTH_LONG).show();
+    }
+
     private final ContactListFilterListener mFilterListener = new ContactListFilterListener() {
         @Override
         public void onContactListFilterChanged() {
@@ -733,7 +737,6 @@
                 }).show();
     }
 
-
     private class SaveServiceListener extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index c128009..8143b9e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -58,6 +58,7 @@
 import com.android.contacts.ContactsDrawerActivity;
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter;
+import com.android.contacts.activities.PeopleActivity;
 import com.android.contacts.common.Experiments;
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.list.ContactEntryListFragment;
@@ -557,6 +558,14 @@
             @Override
             public void onRefresh() {
                 mHandler.removeCallbacks(mCancelRefresh);
+
+                final boolean isNetworkConnected = SyncUtil.isNetworkConnected(getContext());
+                if (!isNetworkConnected) {
+                    mSwipeRefreshLayout.setRefreshing(false);
+                    ((PeopleActivity)getActivity()).showConnectionErrorMsg();
+                    return;
+                }
+
                 syncContacts(getFilter());
                 mHandler.postDelayed(mCancelRefresh, Flags.getInstance(getContext())
                         .getInteger(Experiments.PULL_TO_REFRESH_CANCEL_REFRESH_MILLIS));
@@ -579,6 +588,7 @@
         if (filter == null) {
             return;
         }
+
         final Bundle bundle = new Bundle();
         bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
         bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
diff --git a/src/com/android/contacts/util/SyncUtil.java b/src/com/android/contacts/util/SyncUtil.java
index 6c17c05..34e6e8c 100644
--- a/src/com/android/contacts/util/SyncUtil.java
+++ b/src/com/android/contacts/util/SyncUtil.java
@@ -18,6 +18,8 @@
 import android.accounts.Account;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.provider.ContactsContract;
 
 import com.android.contacts.common.model.account.GoogleAccountType;
@@ -90,4 +92,11 @@
         }
         return SYNC_SETTING_SYNC_ON;
     }
+
+    public static boolean isNetworkConnected(Context context) {
+        ConnectivityManager cm =
+                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+        return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
+    }
 }
\ No newline at end of file