Loading libs/WindowManager/Shell/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ <uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" /> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <uses-permission android:name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE" /> <uses-permission android:name="android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION" /> <application> <activity Loading libs/WindowManager/Shell/res/drawable/open_by_default_settings_dialog_dismiss_button_background.xml→libs/WindowManager/Shell/res/drawable/open_by_default_settings_dialog_confirm_button_background.xml +0 −0 File moved. View file libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml +2 −2 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ </RadioGroup> <Button android:id="@+id/open_by_default_settings_dialog_dismiss_button" android:id="@+id/open_by_default_settings_dialog_confirm_button" android:layout_width="wrap_content" android:layout_height="36dp" android:text="@string/open_by_default_dialog_dismiss_button_text" Loading @@ -122,7 +122,7 @@ android:textSize="14sp" android:textFontWeight="500" android:textColor="?androidprv:attr/materialColorOnPrimary" android:background="@drawable/open_by_default_settings_dialog_dismiss_button_background"/> android:background="@drawable/open_by_default_settings_dialog_confirm_button_background"/> </LinearLayout> </ScrollView> </FrameLayout> Loading libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/AppToWebUtils.kt +28 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,13 @@ import android.content.Context import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager import android.content.pm.verify.domain.DomainVerificationManager import android.content.pm.verify.domain.DomainVerificationUserState import android.net.Uri import com.android.internal.protolog.ProtoLog import com.android.wm.shell.protolog.ShellProtoLogGroup private const val TAG = "AppToWebUtils" private val GenericBrowserIntent = Intent() .setAction(Intent.ACTION_VIEW) Loading Loading @@ -59,3 +65,24 @@ fun getBrowserIntent(uri: Uri, packageManager: PackageManager): Intent? { intent.setComponent(component) return intent } /** * Returns the [DomainVerificationUserState] of the user associated with the given * [DomainVerificationManager] and the given package. */ fun getDomainVerificationUserState( manager: DomainVerificationManager, packageName: String ): DomainVerificationUserState? { try { return manager.getDomainVerificationUserState(packageName) } catch (e: PackageManager.NameNotFoundException) { ProtoLog.w( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "%s: Failed to get domain verification user state: %s", TAG, e.message!! ) return null } } libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialog.kt +32 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.wm.shell.apptoweb import android.app.ActivityManager.RunningTaskInfo import android.app.TaskInfo import android.content.Context import android.content.pm.verify.domain.DomainVerificationManager import android.graphics.Bitmap import android.graphics.PixelFormat import android.view.LayoutInflater Loading @@ -30,6 +31,7 @@ import android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL import android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL import android.view.WindowlessWindowManager import android.widget.ImageView import android.widget.RadioButton import android.widget.TextView import android.window.TaskConstants import com.android.wm.shell.R Loading Loading @@ -58,8 +60,17 @@ internal class OpenByDefaultDialog( private lateinit var appIconView: ImageView private lateinit var appNameView: TextView private lateinit var openInAppButton: RadioButton private lateinit var openInBrowserButton: RadioButton private val domainVerificationManager = context.getSystemService(DomainVerificationManager::class.java)!! private val packageName = taskInfo.baseActivity?.packageName!! init { createDialog() initializeRadioButtons() bindAppInfo(appIconBitmap, appName) } Loading Loading @@ -111,9 +122,30 @@ internal class OpenByDefaultDialog( closeMenu() } dialog.setConfirmButtonClickListener { setDefaultLinkHandlingSetting() closeMenu() } listener.onDialogCreated() } private fun initializeRadioButtons() { openInAppButton = dialog.requireViewById(R.id.open_in_app_button) openInBrowserButton = dialog.requireViewById(R.id.open_in_browser_button) val userState = getDomainVerificationUserState(domainVerificationManager, packageName) ?: return val openInApp = userState.isLinkHandlingAllowed openInAppButton.isChecked = openInApp openInBrowserButton.isChecked = !openInApp } private fun setDefaultLinkHandlingSetting() { domainVerificationManager.setDomainVerificationLinkHandlingAllowed( packageName, openInAppButton.isChecked) } private fun closeMenu() { dialogContainer?.releaseView() dialogContainer = null Loading Loading
libs/WindowManager/Shell/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ <uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" /> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <uses-permission android:name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE" /> <uses-permission android:name="android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION" /> <application> <activity Loading
libs/WindowManager/Shell/res/drawable/open_by_default_settings_dialog_dismiss_button_background.xml→libs/WindowManager/Shell/res/drawable/open_by_default_settings_dialog_confirm_button_background.xml +0 −0 File moved. View file
libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml +2 −2 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ </RadioGroup> <Button android:id="@+id/open_by_default_settings_dialog_dismiss_button" android:id="@+id/open_by_default_settings_dialog_confirm_button" android:layout_width="wrap_content" android:layout_height="36dp" android:text="@string/open_by_default_dialog_dismiss_button_text" Loading @@ -122,7 +122,7 @@ android:textSize="14sp" android:textFontWeight="500" android:textColor="?androidprv:attr/materialColorOnPrimary" android:background="@drawable/open_by_default_settings_dialog_dismiss_button_background"/> android:background="@drawable/open_by_default_settings_dialog_confirm_button_background"/> </LinearLayout> </ScrollView> </FrameLayout> Loading
libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/AppToWebUtils.kt +28 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,13 @@ import android.content.Context import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager import android.content.pm.verify.domain.DomainVerificationManager import android.content.pm.verify.domain.DomainVerificationUserState import android.net.Uri import com.android.internal.protolog.ProtoLog import com.android.wm.shell.protolog.ShellProtoLogGroup private const val TAG = "AppToWebUtils" private val GenericBrowserIntent = Intent() .setAction(Intent.ACTION_VIEW) Loading Loading @@ -59,3 +65,24 @@ fun getBrowserIntent(uri: Uri, packageManager: PackageManager): Intent? { intent.setComponent(component) return intent } /** * Returns the [DomainVerificationUserState] of the user associated with the given * [DomainVerificationManager] and the given package. */ fun getDomainVerificationUserState( manager: DomainVerificationManager, packageName: String ): DomainVerificationUserState? { try { return manager.getDomainVerificationUserState(packageName) } catch (e: PackageManager.NameNotFoundException) { ProtoLog.w( ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE, "%s: Failed to get domain verification user state: %s", TAG, e.message!! ) return null } }
libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialog.kt +32 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.wm.shell.apptoweb import android.app.ActivityManager.RunningTaskInfo import android.app.TaskInfo import android.content.Context import android.content.pm.verify.domain.DomainVerificationManager import android.graphics.Bitmap import android.graphics.PixelFormat import android.view.LayoutInflater Loading @@ -30,6 +31,7 @@ import android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL import android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL import android.view.WindowlessWindowManager import android.widget.ImageView import android.widget.RadioButton import android.widget.TextView import android.window.TaskConstants import com.android.wm.shell.R Loading Loading @@ -58,8 +60,17 @@ internal class OpenByDefaultDialog( private lateinit var appIconView: ImageView private lateinit var appNameView: TextView private lateinit var openInAppButton: RadioButton private lateinit var openInBrowserButton: RadioButton private val domainVerificationManager = context.getSystemService(DomainVerificationManager::class.java)!! private val packageName = taskInfo.baseActivity?.packageName!! init { createDialog() initializeRadioButtons() bindAppInfo(appIconBitmap, appName) } Loading Loading @@ -111,9 +122,30 @@ internal class OpenByDefaultDialog( closeMenu() } dialog.setConfirmButtonClickListener { setDefaultLinkHandlingSetting() closeMenu() } listener.onDialogCreated() } private fun initializeRadioButtons() { openInAppButton = dialog.requireViewById(R.id.open_in_app_button) openInBrowserButton = dialog.requireViewById(R.id.open_in_browser_button) val userState = getDomainVerificationUserState(domainVerificationManager, packageName) ?: return val openInApp = userState.isLinkHandlingAllowed openInAppButton.isChecked = openInApp openInBrowserButton.isChecked = !openInApp } private fun setDefaultLinkHandlingSetting() { domainVerificationManager.setDomainVerificationLinkHandlingAllowed( packageName, openInAppButton.isChecked) } private fun closeMenu() { dialogContainer?.releaseView() dialogContainer = null Loading