Commit e8601cdf authored by Sriram Ramasubramanian's avatar Sriram Ramasubramanian
Browse files

Bug 721344: Unregister Connectivity Receiver in only if it has been initialized. [r=mfinkle]

parent 24003908
Loading
Loading
Loading
Loading
+7 −11
Original line number Diff line number Diff line
@@ -127,9 +127,7 @@ abstract public class GeckoApp
    public static boolean sIsGeckoReady = false;
    public static int mOrientation;

    private IntentFilter mConnectivityFilter;

    private BroadcastReceiver mConnectivityReceiver;
    private GeckoConnectivityReceiver mConnectivityReceiver;
    private BroadcastReceiver mBatteryReceiver;

    public static BrowserToolbar mBrowserToolbar;
@@ -1585,8 +1583,6 @@ abstract public class GeckoApp
        mGeckoLayout = (RelativeLayout) findViewById(R.id.gecko_layout);
        mMainLayout = (LinearLayout) findViewById(R.id.main_layout);

        mConnectivityFilter = new IntentFilter();
        mConnectivityFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        mConnectivityReceiver = new GeckoConnectivityReceiver();
    }

@@ -1986,7 +1982,7 @@ abstract public class GeckoApp
        // onPause will be followed by either onResume or onStop.
        super.onPause();

        unregisterReceiver(mConnectivityReceiver);
        mConnectivityReceiver.unregisterFor(mAppContext);
        GeckoNetworkManager.getInstance().stop();
        GeckoScreenOrientationListener.getInstance().stop();
    }
@@ -2022,7 +2018,7 @@ abstract public class GeckoApp

        mMainHandler.post(new Runnable() {
            public void run() {
            registerReceiver(mConnectivityReceiver, mConnectivityFilter);
                mConnectivityReceiver.registerFor(mAppContext);
                GeckoNetworkManager.getInstance().start();
                GeckoScreenOrientationListener.getInstance().start();
            }
+26 −3
Original line number Diff line number Diff line
@@ -37,15 +37,15 @@

package org.mozilla.gecko;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class GeckoConnectivityReceiver
    extends BroadcastReceiver
{
public class GeckoConnectivityReceiver extends BroadcastReceiver {
    /*
     * Keep the below constants in sync with
     * http://mxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsINetworkLinkService.idl
@@ -54,6 +54,15 @@ public class GeckoConnectivityReceiver
    private static final String LINK_DATA_DOWN = "down";
    private static final String LINK_DATA_UNKNOWN = "unknown";

    private IntentFilter mFilter;

    private static boolean isRegistered = false;

    public GeckoConnectivityReceiver() {
        mFilter = new IntentFilter();
        mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String status;
@@ -70,4 +79,18 @@ public class GeckoConnectivityReceiver
        if (GeckoApp.checkLaunchState(GeckoApp.LaunchState.GeckoRunning))
            GeckoAppShell.onChangeNetworkLinkStatus(status);
    }

    public void registerFor(Activity activity) {
        if (!isRegistered) {
            activity.registerReceiver(this, mFilter);
            isRegistered = true;
        }
    }

    public void unregisterFor(Activity activity) {
        if (isRegistered) {
            activity.unregisterReceiver(this);
            isRegistered = false;
        }
    }
}