Loading core/java/android/service/controls/TokenProvider.aidldeleted 100644 → 0 +0 −7 Original line number Diff line number Diff line package android.service.controls; /** @hide */ interface TokenProvider { void setAuthToken(String token); String getAccountName(); } No newline at end of file packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +1 −81 Original line number Diff line number Diff line Loading @@ -16,19 +16,14 @@ package com.android.systemui.controls.ui import android.accounts.Account import android.accounts.AccountManager import android.app.Dialog import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.ServiceConnection import android.content.SharedPreferences import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.os.IBinder import android.service.controls.Control import android.service.controls.TokenProvider import android.service.controls.actions.ControlAction import android.util.Log import android.view.ContextThemeWrapper Loading Loading @@ -61,68 +56,6 @@ import java.text.Collator import javax.inject.Inject import javax.inject.Singleton // TEMP CODE for MOCK private const val TOKEN = "https://www.googleapis.com/auth/assistant" private const val SCOPE = "oauth2:" + TOKEN private var tokenProviderConnection: TokenProviderConnection? = null class TokenProviderConnection( val cc: ControlsController, val context: Context, val structure: StructureInfo? ) : ServiceConnection { private var mTokenProvider: TokenProvider? = null override fun onServiceConnected(cName: ComponentName, binder: IBinder) { Thread({ Log.i(ControlsUiController.TAG, "TokenProviderConnection connected") mTokenProvider = TokenProvider.Stub.asInterface(binder) val mLastAccountName = mTokenProvider?.getAccountName() if (mLastAccountName == null || mLastAccountName.isEmpty()) { Log.e(ControlsUiController.TAG, "NO ACCOUNT IS SET. Open HomeMock app") } else { mTokenProvider?.setAuthToken(getAuthToken(mLastAccountName)) structure?.let { cc.subscribeToFavorites(it) } } }, "TokenProviderThread").start() } override fun onServiceDisconnected(cName: ComponentName) { mTokenProvider = null } fun getAuthToken(accountName: String): String? { val am = AccountManager.get(context) val accounts = am.getAccountsByType("com.google") if (accounts == null || accounts.size == 0) { Log.w(ControlsUiController.TAG, "No com.google accounts found") return null } var account: Account? = null for (a in accounts) { if (a.name.equals(accountName)) { account = a break } } if (account == null) { account = accounts[0] } try { return am.blockingGetAuthToken(account!!, SCOPE, true) } catch (e: Throwable) { Log.e(ControlsUiController.TAG, "Error getting auth token", e) return null } } } private data class ControlKey(val componentName: ComponentName, val controlId: String) @Singleton Loading Loading @@ -215,21 +148,10 @@ class ControlsUiControllerImpl @Inject constructor ( ControlKey(selectedStructure.componentName, it.ci.controlId) } listingCallback = createCallback(::showControlsView) controlsController.get().subscribeToFavorites(selectedStructure) } controlsListingController.get().addCallback(listingCallback) // Temp code to pass auth tokenProviderConnection = TokenProviderConnection(controlsController.get(), context, selectedStructure) val serviceIntent = Intent() serviceIntent.setComponent(ComponentName("com.android.systemui.home.mock", "com.android.systemui.home.mock.AuthService")) if (!context.bindService(serviceIntent, tokenProviderConnection!!, Context.BIND_AUTO_CREATE)) { controlsController.get().subscribeToFavorites(selectedStructure) } } private fun showInitialSetupView(items: List<SelectionItem>) { Loading Loading @@ -393,8 +315,6 @@ class ControlsUiControllerImpl @Inject constructor ( activeDialog?.dismiss() controlsController.get().unsubscribe() context.unbindService(tokenProviderConnection) tokenProviderConnection = null parent.removeAllViews() controlsById.clear() Loading Loading
core/java/android/service/controls/TokenProvider.aidldeleted 100644 → 0 +0 −7 Original line number Diff line number Diff line package android.service.controls; /** @hide */ interface TokenProvider { void setAuthToken(String token); String getAccountName(); } No newline at end of file
packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +1 −81 Original line number Diff line number Diff line Loading @@ -16,19 +16,14 @@ package com.android.systemui.controls.ui import android.accounts.Account import android.accounts.AccountManager import android.app.Dialog import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.ServiceConnection import android.content.SharedPreferences import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.os.IBinder import android.service.controls.Control import android.service.controls.TokenProvider import android.service.controls.actions.ControlAction import android.util.Log import android.view.ContextThemeWrapper Loading Loading @@ -61,68 +56,6 @@ import java.text.Collator import javax.inject.Inject import javax.inject.Singleton // TEMP CODE for MOCK private const val TOKEN = "https://www.googleapis.com/auth/assistant" private const val SCOPE = "oauth2:" + TOKEN private var tokenProviderConnection: TokenProviderConnection? = null class TokenProviderConnection( val cc: ControlsController, val context: Context, val structure: StructureInfo? ) : ServiceConnection { private var mTokenProvider: TokenProvider? = null override fun onServiceConnected(cName: ComponentName, binder: IBinder) { Thread({ Log.i(ControlsUiController.TAG, "TokenProviderConnection connected") mTokenProvider = TokenProvider.Stub.asInterface(binder) val mLastAccountName = mTokenProvider?.getAccountName() if (mLastAccountName == null || mLastAccountName.isEmpty()) { Log.e(ControlsUiController.TAG, "NO ACCOUNT IS SET. Open HomeMock app") } else { mTokenProvider?.setAuthToken(getAuthToken(mLastAccountName)) structure?.let { cc.subscribeToFavorites(it) } } }, "TokenProviderThread").start() } override fun onServiceDisconnected(cName: ComponentName) { mTokenProvider = null } fun getAuthToken(accountName: String): String? { val am = AccountManager.get(context) val accounts = am.getAccountsByType("com.google") if (accounts == null || accounts.size == 0) { Log.w(ControlsUiController.TAG, "No com.google accounts found") return null } var account: Account? = null for (a in accounts) { if (a.name.equals(accountName)) { account = a break } } if (account == null) { account = accounts[0] } try { return am.blockingGetAuthToken(account!!, SCOPE, true) } catch (e: Throwable) { Log.e(ControlsUiController.TAG, "Error getting auth token", e) return null } } } private data class ControlKey(val componentName: ComponentName, val controlId: String) @Singleton Loading Loading @@ -215,21 +148,10 @@ class ControlsUiControllerImpl @Inject constructor ( ControlKey(selectedStructure.componentName, it.ci.controlId) } listingCallback = createCallback(::showControlsView) controlsController.get().subscribeToFavorites(selectedStructure) } controlsListingController.get().addCallback(listingCallback) // Temp code to pass auth tokenProviderConnection = TokenProviderConnection(controlsController.get(), context, selectedStructure) val serviceIntent = Intent() serviceIntent.setComponent(ComponentName("com.android.systemui.home.mock", "com.android.systemui.home.mock.AuthService")) if (!context.bindService(serviceIntent, tokenProviderConnection!!, Context.BIND_AUTO_CREATE)) { controlsController.get().subscribeToFavorites(selectedStructure) } } private fun showInitialSetupView(items: List<SelectionItem>) { Loading Loading @@ -393,8 +315,6 @@ class ControlsUiControllerImpl @Inject constructor ( activeDialog?.dismiss() controlsController.get().unsubscribe() context.unbindService(tokenProviderConnection) tokenProviderConnection = null parent.removeAllViews() controlsById.clear() Loading