diff options
author | Glen Kuhne <kuh@google.com> | 2016-03-11 13:32:08 -0800 |
---|---|---|
committer | Glen Kuhne <kuh@google.com> | 2016-03-11 13:37:38 -0800 |
commit | ef7480f78d994c786248a1ee8a601abf39aec696 (patch) | |
tree | 3ce69ee2f8e298304f32572521111f4ce68c32a7 /service | |
parent | 963a22849edcbebdfe3bf2ecf2329a20789dbd7a (diff) | |
parent | ea91131081772e97c65581b9a290dee21ee79a83 (diff) |
resolve merge conflicts of ea91131081 to nyc-dev
Change-Id: I0662ccf4f80c3b0b48314aef3a5807ce27a13659
Diffstat (limited to 'service')
3 files changed, 44 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java new file mode 100644 index 000000000..b2792cb95 --- /dev/null +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -0,0 +1,38 @@ +/* + * 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 com.android.server.wifi; + +/** + * WiFi dependency injector using thread-safe lazy singleton pattern. To be used for accessing + * various wifi class instances and as a handle for mock injection. + */ +public class WifiInjector { + // see: https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom + private static class LazyHolder { + public static final WifiInjector sInstance = new WifiInjector(); + } + + public static WifiInjector getInstance() { + return LazyHolder.sInstance; + } + + private final WifiMetrics mWifiMetrics = new WifiMetrics(); + + public WifiMetrics getWifiMetrics() { + return mWifiMetrics; + } +} diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 8ea51814e..925686c1b 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -154,6 +154,7 @@ public class WifiServiceImpl extends IWifiManager.Stub { /* Manages affiliated certificates for current user */ private final WifiCertManager mCertManager; + private final WifiInjector mWifiInjector; /** * Asynchronous channel to WifiStateMachine */ @@ -310,17 +311,18 @@ public class WifiServiceImpl extends IWifiManager.Stub { public WifiServiceImpl(Context context) { mContext = context; + mWifiInjector = WifiInjector.getInstance(); FrameworkFacade facade = new FrameworkFacade(); HandlerThread wifiThread = new HandlerThread("WifiService"); wifiThread.start(); - mWifiMetrics = new WifiMetrics(); + mWifiMetrics = mWifiInjector.getWifiMetrics(); mTrafficPoller = new WifiTrafficPoller(mContext, wifiThread.getLooper(), WifiNative.getWlanNativeInterface().getInterfaceName()); mUserManager = UserManager.get(mContext); HandlerThread wifiStateMachineThread = new HandlerThread("WifiStateMachine"); wifiStateMachineThread.start(); mWifiStateMachine = new WifiStateMachine(mContext, facade, - wifiStateMachineThread.getLooper(), mUserManager, mWifiMetrics, + wifiStateMachineThread.getLooper(), mUserManager, mWifiInjector, new BackupManagerProxy()); mSettingsStore = new WifiSettingsStore(mContext); mWifiStateMachine.enableRssiPolling(true); diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index ef5d6e966..90539dfcc 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -1126,11 +1126,11 @@ public class WifiStateMachine extends StateMachine implements WifiNative.PnoEven private final BackupManagerProxy mBackupManagerProxy; public WifiStateMachine(Context context, FrameworkFacade facade, Looper looper, - UserManager userManager, WifiMetrics wifiMetrics, + UserManager userManager, WifiInjector wifiInjector, BackupManagerProxy backupManagerProxy) { super("WifiStateMachine", looper); - mWifiMetrics = wifiMetrics; + mWifiMetrics = wifiInjector.getWifiMetrics(); mContext = context; mFacade = facade; mUserManager = userManager; |