Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68ffbba1 authored by Paul Stewart's avatar Paul Stewart Committed by Android (Google) Code Review
Browse files

Merge changes Iddeebeb8,Idd1e37a3 into nyc-dev

* changes:
  WifiManager: Use ConnectivityThread
  Create ConnectivityThread
parents db9fba37 bf8cbb05
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ import android.media.soundtrigger.SoundTriggerManager;
import android.media.tv.ITvInputManager;
import android.media.tv.TvInputManager;
import android.net.ConnectivityManager;
import android.net.ConnectivityThread;
import android.net.EthernetManager;
import android.net.IConnectivityManager;
import android.net.IEthernetManager;
@@ -500,7 +501,8 @@ final class SystemServiceRegistry {
            public WifiManager createService(ContextImpl ctx) {
                IBinder b = ServiceManager.getService(Context.WIFI_SERVICE);
                IWifiManager service = IWifiManager.Stub.asInterface(b);
                return new WifiManager(ctx.getOuterContext(), service);
                return new WifiManager(ctx.getOuterContext(), service,
                        ConnectivityThread.getInstanceLooper());
            }});

        registerService(Context.WIFI_P2P_SERVICE, WifiP2pManager.class,
+51 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net;

import android.os.HandlerThread;
import android.os.Looper;

/**
 * Shared singleton connectivity thread for the system.  This is a thread for
 * connectivity operations such as AsyncChannel connections to system services.
 * Various connectivity manager objects can use this singleton as a common
 * resource for their handlers instead of creating separate threads of their own.
 * @hide
 */
public final class ConnectivityThread extends HandlerThread {
    private static ConnectivityThread sInstance;

    private ConnectivityThread() {
        super("ConnectivityThread");
    }

    private static synchronized ConnectivityThread getInstance() {
        if (sInstance == null) {
            sInstance = new ConnectivityThread();
            sInstance.start();
        }
        return sInstance;
    }

    public static ConnectivityThread get() {
        return getInstance();
    }

    public static Looper getInstanceLooper() {
        return getInstance().getLooper();
    }
}
+4 −7
Original line number Diff line number Diff line
@@ -671,9 +671,7 @@ public class WifiManager {

    private AsyncChannel mAsyncChannel;
    private CountDownLatch mConnected;

    /* TODO(b/27432949): Use a common connectivity thread for this. */
    private HandlerThread mHandlerThread;
    private Looper mLooper;

    /**
     * Create a new WifiManager instance.
@@ -685,9 +683,10 @@ public class WifiManager {
     * @hide - hide this because it takes in a parameter of type IWifiManager, which
     * is a system private class.
     */
    public WifiManager(Context context, IWifiManager service) {
    public WifiManager(Context context, IWifiManager service, Looper looper) {
        mContext = context;
        mService = service;
        mLooper = looper;
        mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion;
    }

@@ -1978,12 +1977,10 @@ public class WifiManager {
                        "getWifiServiceMessenger() returned null!  This is invalid.");
            }

            mHandlerThread = new HandlerThread("WifiManager");
            mAsyncChannel = new AsyncChannel();
            mConnected = new CountDownLatch(1);

            mHandlerThread.start();
            Handler handler = new ServiceHandler(mHandlerThread.getLooper());
            Handler handler = new ServiceHandler(mLooper);
            mAsyncChannel.connect(mContext, handler, messenger);
            try {
                mConnected.await();