Reload page on network connectivity

This change will auto reload the page that failed to load due
to network connectivity problem when the network becomes
available.

Change-Id: I85e5ddce48f95c398959a2e64141c87e4c83e0ca
diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java
index 74a355a..9faa996 100644
--- a/src/com/android/browser/NetworkStateHandler.java
+++ b/src/com/android/browser/NetworkStateHandler.java
@@ -62,19 +62,22 @@
             public void onReceive(Context context, Intent intent) {
                 if (intent.getAction().equals(
                         ConnectivityManager.CONNECTIVITY_ACTION)) {
+                    final ConnectivityManager cm = (ConnectivityManager)
+                            context.getSystemService(Context.CONNECTIVITY_SERVICE);
+                    NetworkInfo info = cm.getActiveNetworkInfo();
 
-                    NetworkInfo info = intent.getParcelableExtra(
-                            ConnectivityManager.EXTRA_NETWORK_INFO);
+                    if (info == null) {
+                        onNetworkToggle(false);
+                        return;
+                    }
+
                     String typeName = info.getTypeName();
                     String subtypeName = info.getSubtypeName();
                     sendNetworkType(typeName.toLowerCase(),
                             (subtypeName != null ? subtypeName.toLowerCase() : ""));
                     BrowserSettings.getInstance().updateConnectionType();
 
-                    boolean noConnection = intent.getBooleanExtra(
-                            ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
-
-                    onNetworkToggle(!noConnection);
+                    onNetworkToggle(info.isConnectedOrConnecting());
                 }
             }
         };
@@ -105,6 +108,10 @@
         if (w != null) {
             w.setNetworkAvailable(up);
         }
+        Tab t = mController.getCurrentTab();
+        if (t != null) {
+            t.setNetworkAvailable(up);
+        }
     }
 
     boolean isNetworkUp() {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 107ab07..c4260da 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -357,6 +357,12 @@
         }
     }
 
+    public void setNetworkAvailable(boolean networkUp) {
+        if (networkUp && mReceivedError && (mMainView != null)) {
+            mMainView.reload();
+        }
+    }
+
     // -------------------------------------------------------------------------
     // WebViewClient implementation for the main WebView
     // -------------------------------------------------------------------------