summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-20 16:11:09 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-20 16:11:09 +0000
commitc9abd0d5b3f8f2f6de30df25b7e1b57eb3c3b4c3 (patch)
tree96ff9815ce75fcad0867435e3e83fb023776ee6e
parent8ef70be298d319b1075cef079c03ce1c25a9ea79 (diff)
parent09d75678dab6b290e82f003816a38d925572a7c1 (diff)
downloadTvSettings-c9abd0d5b3f8f2f6de30df25b7e1b57eb3c3b4c3.tar.gz
Snap for 8746144 from 09d75678dab6b290e82f003816a38d925572a7c1 to mainline-os-statsd-release
Change-Id: I5f6cbdacf706269f8e85d21ec74056aa2583753a
-rw-r--r--Settings/AndroidManifest.xml1
-rw-r--r--Settings/com.android.tv.settings.xml1
-rw-r--r--Settings/res/xml/development_prefs.xml1
-rw-r--r--Settings/src/com/android/tv/settings/SettingsPreferenceFragment.java11
-rw-r--r--Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java59
5 files changed, 72 insertions, 1 deletions
diff --git a/Settings/AndroidManifest.xml b/Settings/AndroidManifest.xml
index 588f69ad9..3502483ed 100644
--- a/Settings/AndroidManifest.xml
+++ b/Settings/AndroidManifest.xml
@@ -72,6 +72,7 @@
<uses-permission android:name="com.google.android.assistant.WRITE_HOTWORD_STATE"/>
<uses-permission android:name="android.permission.MANAGE_SLICE_PERMISSIONS"/>
<uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
+ <uses-permission android:name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS"/>
<application
android:name=".TvSettingsApplication"
diff --git a/Settings/com.android.tv.settings.xml b/Settings/com.android.tv.settings.xml
index 5b65009ca..109245878 100644
--- a/Settings/com.android.tv.settings.xml
+++ b/Settings/com.android.tv.settings.xml
@@ -35,5 +35,6 @@
<permission name="android.permission.WRITE_MEDIA_STORAGE"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
<permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
+ <permission name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS"/>
</privapp-permissions>
</permissions>
diff --git a/Settings/res/xml/development_prefs.xml b/Settings/res/xml/development_prefs.xml
index b720b9d80..56f79ee3e 100644
--- a/Settings/res/xml/development_prefs.xml
+++ b/Settings/res/xml/development_prefs.xml
@@ -94,6 +94,7 @@
<Preference
android:key="toggle_adb_wireless"
android:title="@string/enable_adb_wireless"
+ android:summary="@string/connectivity_summary_no_network_connected"
android:fragment="com.android.tv.settings.system.development.WirelessDebuggingFragment" />
<com.android.tv.settings.widget.SwitchWithSoundPreference
diff --git a/Settings/src/com/android/tv/settings/SettingsPreferenceFragment.java b/Settings/src/com/android/tv/settings/SettingsPreferenceFragment.java
index 76351085c..3a6d0ebb6 100644
--- a/Settings/src/com/android/tv/settings/SettingsPreferenceFragment.java
+++ b/Settings/src/com/android/tv/settings/SettingsPreferenceFragment.java
@@ -29,6 +29,7 @@ import android.animation.AnimatorInflater;
import android.annotation.CallSuper;
import android.app.tvsettings.TvSettingsEnums;
import android.content.Context;
+import android.graphics.Rect;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
@@ -59,6 +60,8 @@ import com.android.tv.settings.widget.SettingsViewModel;
import com.android.tv.settings.widget.TsPreference;
import com.android.tv.twopanelsettings.TwoPanelSettingsFragment;
+import java.util.Collections;
+
/**
* A {@link LeanbackPreferenceFragmentCompat} that has hooks to observe fragment lifecycle events
* and allow for instrumentation.
@@ -137,6 +140,14 @@ public abstract class SettingsPreferenceFragment extends LeanbackPreferenceFragm
getActivity().getWindow().setTitle(getPreferenceScreen().getTitle());
view.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
+
+ // Only the one-panel settings should be set as unrestricted keep-clear areas
+ // because they are a side panel, so the PiP can be moved next to it.
+ view.addOnLayoutChangeListener((v, l, t, r, b, oldL, oldT, oldR, oldB) -> {
+ view.setUnrestrictedPreferKeepClearRects(
+ Collections.singletonList(new Rect(0, 0, r - l, b - t)));
+ });
+
}
removeAnimationClipping(view);
}
diff --git a/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java b/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java
index 59dfcde87..4c69ca93c 100644
--- a/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java
+++ b/Settings/src/com/android/tv/settings/vendor/DisplayPreviewFragment.java
@@ -16,18 +16,75 @@
package com.android.tv.settings.vendor;
+import android.hardware.display.DisplayManager;
import android.os.Bundle;
+import android.view.Display;
import androidx.annotation.Keep;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
import com.android.tv.settings.R;
import com.android.tv.settings.SettingsPreferenceFragment;
+import com.android.tv.settings.util.ResolutionSelectionUtils;
+
+import java.util.Objects;
/** A vendor sample of display preview settings. */
@Keep
-public class DisplayPreviewFragment extends SettingsPreferenceFragment {
+public class DisplayPreviewFragment extends SettingsPreferenceFragment implements
+ DisplayManager.DisplayListener {
+ private DisplayManager mDisplayManager;
+ private Display.Mode mCurrentMode = null;
+ private static final String KEY_RESOLUTION_TITLE = "resolution_selection";
+
@Override
public void onCreatePreferences(Bundle bundle, String s) {
setPreferencesFromResource(R.xml.preview_display_vendor, null);
+ mDisplayManager = getDisplayManager();
+ Display display = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
+ if (display.getSystemPreferredDisplayMode() != null) {
+ mDisplayManager.registerDisplayListener(this, null);
+ mCurrentMode = mDisplayManager.getGlobalUserPreferredDisplayMode();
+ updateResolutionTitleDescription(ResolutionSelectionUtils.modeToString(
+ mCurrentMode, getContext()));
+ } else {
+ removeResolutionPreference();
+ }
+ }
+
+ @VisibleForTesting
+ DisplayManager getDisplayManager() {
+ return getContext().getSystemService(DisplayManager.class);
+ }
+
+ @Override
+ public void onDisplayAdded(int displayId) {}
+
+ @Override
+ public void onDisplayRemoved(int displayId) {}
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ Display.Mode newMode = mDisplayManager.getGlobalUserPreferredDisplayMode();
+ if (!Objects.equals(mCurrentMode, newMode)) {
+ updateResolutionTitleDescription(
+ ResolutionSelectionUtils.modeToString(newMode, getContext()));
+ mCurrentMode = newMode;
+ }
+ }
+
+ private void updateResolutionTitleDescription(String summary) {
+ Preference titlePreference = findPreference(KEY_RESOLUTION_TITLE);
+ if (titlePreference != null) {
+ titlePreference.setSummary(summary);
+ }
+ }
+
+ private void removeResolutionPreference() {
+ Preference resolutionPreference = findPreference(KEY_RESOLUTION_TITLE);
+ if (resolutionPreference != null) {
+ getPreferenceScreen().removePreference(resolutionPreference);
+ }
}
}