diff options
Diffstat (limited to 'libs')
108 files changed, 2154 insertions, 692 deletions
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 9e7f9d22db18..575c3f002791 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -47,6 +47,7 @@ import android.util.SparseArray; import android.window.TaskFragmentInfo; import android.window.WindowContainerTransaction; +import androidx.annotation.GuardedBy; import androidx.window.common.EmptyLifecycleCallbacksAdapter; import com.android.internal.annotations.VisibleForTesting; @@ -65,9 +66,11 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen private static final String TAG = "SplitController"; @VisibleForTesting + @GuardedBy("mLock") final SplitPresenter mPresenter; // Currently applied split configuration. + @GuardedBy("mLock") private final List<EmbeddingRule> mSplitRules = new ArrayList<>(); /** * Map from Task id to {@link TaskContainer} which contains all TaskFragment and split pair info @@ -76,6 +79,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen * organizer. */ @VisibleForTesting + @GuardedBy("mLock") final SparseArray<TaskContainer> mTaskContainers = new SparseArray<>(); // Callback to Jetpack to notify about changes to split states. @@ -83,6 +87,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen private Consumer<List<SplitInfo>> mEmbeddingCallback; private final List<SplitInfo> mLastReportedSplitStates = new ArrayList<>(); private final Handler mHandler; + private final Object mLock = new Object(); public SplitController() { final MainThreadExecutor executor = new MainThreadExecutor(); @@ -100,180 +105,183 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen /** Updates the embedding rules applied to future activity launches. */ @Override public void setEmbeddingRules(@NonNull Set<EmbeddingRule> rules) { - mSplitRules.clear(); - mSplitRules.addAll(rules); - for (int i = mTaskContainers.size() - 1; i >= 0; i--) { - updateAnimationOverride(mTaskContainers.valueAt(i)); + synchronized (mLock) { + mSplitRules.clear(); + mSplitRules.addAll(rules); + for (int i = mTaskContainers.size() - 1; i >= 0; i--) { + updateAnimationOverride(mTaskContainers.valueAt(i)); + } } } @NonNull - public List<EmbeddingRule> getSplitRules() { + List<EmbeddingRule> getSplitRules() { return mSplitRules; } /** - * Starts an activity to side of the launchingActivity with the provided split config. - */ - public void startActivityToSide(@NonNull Activity launchingActivity, @NonNull Intent intent, - @Nullable Bundle options, @NonNull SplitRule sideRule, - @Nullable Consumer<Exception> failureCallback, boolean isPlaceholder) { - try { - mPresenter.startActivityToSide(launchingActivity, intent, options, sideRule, - isPlaceholder); - } catch (Exception e) { - if (failureCallback != null) { - failureCallback.accept(e); - } - } - } - - /** * Registers the split organizer callback to notify about changes to active splits. */ @Override public void setSplitInfoCallback(@NonNull Consumer<List<SplitInfo>> callback) { - mEmbeddingCallback = callback; - updateCallbackIfNecessary(); + synchronized (mLock) { + mEmbeddingCallback = callback; + updateCallbackIfNecessary(); + } } @Override public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) { - TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); - if (container == null) { - return; - } + synchronized (mLock) { + TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); + if (container == null) { + return; + } - container.setInfo(taskFragmentInfo); - if (container.isFinished()) { - mPresenter.cleanupContainer(container, false /* shouldFinishDependent */); + container.setInfo(taskFragmentInfo); + if (container.isFinished()) { + mPresenter.cleanupContainer(container, false /* shouldFinishDependent */); + } + updateCallbackIfNecessary(); } - updateCallbackIfNecessary(); } @Override public void onTaskFragmentInfoChanged(@NonNull TaskFragmentInfo taskFragmentInfo) { - TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); - if (container == null) { - return; - } + synchronized (mLock) { + TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); + if (container == null) { + return; + } - final WindowContainerTransaction wct = new WindowContainerTransaction(); - final boolean wasInPip = isInPictureInPicture(container); - container.setInfo(taskFragmentInfo); - final boolean isInPip = isInPictureInPicture(container); - // Check if there are no running activities - consider the container empty if there are no - // non-finishing activities left. - if (!taskFragmentInfo.hasRunningActivity()) { - if (taskFragmentInfo.isTaskFragmentClearedForPip()) { - // Do not finish the dependents if the last activity is reparented to PiP. - // Instead, the original split should be cleanup, and the dependent may be expanded - // to fullscreen. + final WindowContainerTransaction wct = new WindowContainerTransaction(); + final boolean wasInPip = isInPictureInPicture(container); + container.setInfo(taskFragmentInfo); + final boolean isInPip = isInPictureInPicture(container); + // Check if there are no running activities - consider the container empty if there are + // no non-finishing activities left. + if (!taskFragmentInfo.hasRunningActivity()) { + if (taskFragmentInfo.isTaskFragmentClearedForPip()) { + // Do not finish the dependents if the last activity is reparented to PiP. + // Instead, the original split should be cleanup, and the dependent may be + // expanded to fullscreen. + cleanupForEnterPip(wct, container); + mPresenter.cleanupContainer(container, false /* shouldFinishDependent */, wct); + } else if (taskFragmentInfo.isTaskClearedForReuse()) { + // Do not finish the dependents if this TaskFragment was cleared due to + // launching activity in the Task. + mPresenter.cleanupContainer(container, false /* shouldFinishDependent */, wct); + } else if (!container.isWaitingActivityAppear()) { + // Do not finish the container before the expected activity appear until + // timeout. + mPresenter.cleanupContainer(container, true /* shouldFinishDependent */, wct); + } + } else if (wasInPip && isInPip) { + // No update until exit PIP. + return; + } else if (isInPip) { + // Enter PIP. + // All overrides will be cleanup. + container.setLastRequestedBounds(null /* bounds */); + container.setLastRequestedWindowingMode(WINDOWING_MODE_UNDEFINED); cleanupForEnterPip(wct, container); - mPresenter.cleanupContainer(container, false /* shouldFinishDependent */, wct); - } else if (taskFragmentInfo.isTaskClearedForReuse()) { - // Do not finish the dependents if this TaskFragment was cleared due to launching - // activity in the Task. - mPresenter.cleanupContainer(container, false /* shouldFinishDependent */, wct); - } else if (!container.isWaitingActivityAppear()) { - // Do not finish the container before the expected activity appear until timeout. - mPresenter.cleanupContainer(container, true /* shouldFinishDependent */, wct); + } else if (wasInPip) { + // Exit PIP. + // Updates the presentation of the container. Expand or launch placeholder if + // needed. + updateContainer(wct, container); } - } else if (wasInPip && isInPip) { - // No update until exit PIP. - return; - } else if (isInPip) { - // Enter PIP. - // All overrides will be cleanup. - container.setLastRequestedBounds(null /* bounds */); - container.setLastRequestedWindowingMode(WINDOWING_MODE_UNDEFINED); - cleanupForEnterPip(wct, container); - } else if (wasInPip) { - // Exit PIP. - // Updates the presentation of the container. Expand or launch placeholder if needed. - updateContainer(wct, container); + mPresenter.applyTransaction(wct); + updateCallbackIfNecessary(); } - mPresenter.applyTransaction(wct); - updateCallbackIfNecessary(); } @Override public void onTaskFragmentVanished(@NonNull TaskFragmentInfo taskFragmentInfo) { - final TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); - if (container != null) { - // Cleanup if the TaskFragment vanished is not requested by the organizer. - removeContainer(container); - // Make sure the top container is updated. - final TaskFragmentContainer newTopContainer = getTopActiveContainer( - container.getTaskId()); - if (newTopContainer != null) { - final WindowContainerTransaction wct = new WindowContainerTransaction(); - updateContainer(wct, newTopContainer); - mPresenter.applyTransaction(wct); + synchronized (mLock) { + final TaskFragmentContainer container = getContainer( + taskFragmentInfo.getFragmentToken()); + if (container != null) { + // Cleanup if the TaskFragment vanished is not requested by the organizer. + removeContainer(container); + // Make sure the top container is updated. + final TaskFragmentContainer newTopContainer = getTopActiveContainer( + container.getTaskId()); + if (newTopContainer != null) { + final WindowContainerTransaction wct = new WindowContainerTransaction(); + updateContainer(wct, newTopContainer); + mPresenter.applyTransaction(wct); + } + updateCallbackIfNecessary(); } - updateCallbackIfNecessary(); + cleanupTaskFragment(taskFragmentInfo.getFragmentToken()); } - cleanupTaskFragment(taskFragmentInfo.getFragmentToken()); } @Override public void onTaskFragmentParentInfoChanged(@NonNull IBinder fragmentToken, @NonNull Configuration parentConfig) { - final TaskFragmentContainer container = getContainer(fragmentToken); - if (container != null) { - onTaskConfigurationChanged(container.getTaskId(), parentConfig); - if (isInPictureInPicture(parentConfig)) { - // No need to update presentation in PIP until the Task exit PIP. - return; + synchronized (mLock) { + final TaskFragmentContainer container = getContainer(fragmentToken); + if (container != null) { + onTaskConfigurationChanged(container.getTaskId(), parentConfig); + if (isInPictureInPicture(parentConfig)) { + // No need to update presentation in PIP until the Task exit PIP. + return; + } + mPresenter.updateContainer(container); + updateCallbackIfNecessary(); } - mPresenter.updateContainer(container); - updateCallbackIfNecessary(); } } @Override public void onActivityReparentToTask(int taskId, @NonNull Intent activityIntent, @NonNull IBinder activityToken) { - // If the activity belongs to the current app process, we treat it as a new activity launch. - final Activity activity = getActivity(activityToken); - if (activity != null) { - // We don't allow split as primary for new launch because we currently only support - // launching to top. We allow split as primary for activity reparent because the - // activity may be split as primary before it is reparented out. In that case, we want - // to show it as primary again when it is reparented back. - if (!resolveActivityToContainer(activity, true /* isOnReparent */)) { - // When there is no embedding rule matched, try to place it in the top container - // like a normal launch. - placeActivityInTopContainer(activity); + synchronized (mLock) { + // If the activity belongs to the current app process, we treat it as a new activity + // launch. + final Activity activity = getActivity(activityToken); + if (activity != null) { + // We don't allow split as primary for new launch because we currently only support + // launching to top. We allow split as primary for activity reparent because the + // activity may be split as primary before it is reparented out. In that case, we + // want to show it as primary again when it is reparented back. + if (!resolveActivityToContainer(activity, true /* isOnReparent */)) { + // When there is no embedding rule matched, try to place it in the top container + // like a normal launch. + placeActivityInTopContainer(activity); + } + updateCallbackIfNecessary(); + return; } - updateCallbackIfNecessary(); - return; - } - final TaskContainer taskContainer = getTaskContainer(taskId); - if (taskContainer == null || taskContainer.isInPictureInPicture()) { - // We don't embed activity when it is in PIP. - return; - } + final TaskContainer taskContainer = getTaskContainer(taskId); + if (taskContainer == null || taskContainer.isInPictureInPicture()) { + // We don't embed activity when it is in PIP. + return; + } - // If the activity belongs to a different app process, we treat it as starting new intent, - // since both actions might result in a new activity that should appear in an organized - // TaskFragment. - final WindowContainerTransaction wct = new WindowContainerTransaction(); - TaskFragmentContainer targetContainer = resolveStartActivityIntent(wct, taskId, - activityIntent, null /* launchingActivity */); - if (targetContainer == null) { - // When there is no embedding rule matched, try to place it in the top container like a - // normal launch. - targetContainer = taskContainer.getTopTaskFragmentContainer(); - } - if (targetContainer == null) { - return; + // If the activity belongs to a different app process, we treat it as starting new + // intent, since both actions might result in a new activity that should appear in an + // organized TaskFragment. + final WindowContainerTransaction wct = new WindowContainerTransaction(); + TaskFragmentContainer targetContainer = resolveStartActivityIntent(wct, taskId, + activityIntent, null /* launchingActivity */); + if (targetContainer == null) { + // When there is no embedding rule matched, try to place it in the top container + // like a normal launch. + targetContainer = taskContainer.getTopTaskFragmentContainer(); + } + if (targetContainer == null) { + return; + } + wct.reparentActivityToTaskFragment(targetContainer.getTaskFragmentToken(), + activityToken); + mPresenter.applyTransaction(wct); + // Because the activity does not belong to the organizer process, we wait until + // onTaskFragmentAppeared to trigger updateCallbackIfNecessary(). } - wct.reparentActivityToTaskFragment(targetContainer.getTaskFragmentToken(), activityToken); - mPresenter.applyTransaction(wct); - // Because the activity does not belong to the organizer process, we wait until - // onTaskFragmentAppeared to trigger updateCallbackIfNecessary(). } /** Called on receiving {@link #onTaskFragmentVanished(TaskFragmentInfo)} for cleanup. */ @@ -363,7 +371,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen * @param activity the activity that is newly added to the Task. * @param isOnReparent whether the activity is reparented to the Task instead of new launched. * We only support to split as primary for reparented activity for now. - * @return {@code true} if the activity was placed in TaskFragment container. + * @return {@code true} if the activity has been handled, such as placed in a TaskFragment, or + * in a state that the caller shouldn't handle. */ @VisibleForTesting boolean resolveActivityToContainer(@NonNull Activity activity, boolean isOnReparent) { @@ -373,6 +382,18 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return true; } + if (!isOnReparent && getContainerWithActivity(activity) == null + && getInitialTaskFragmentToken(activity) != null) { + // We can't find the new launched activity in any recorded container, but it is + // currently placed in an embedded TaskFragment. This can happen in two cases: + // 1. the activity is embedded in another app. + // 2. the organizer has already requested to remove the TaskFragment. + // In either case, return true since we don't want any extra handling. + Log.d(TAG, "Activity is in a TaskFragment that is not recorded by the organizer. r=" + + activity); + return true; + } + /* * We will check the following to see if there is any embedding rule matched: * 1. Whether the new launched activity should always expand. @@ -468,6 +489,22 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } /** + * Starts an activity to side of the launchingActivity with the provided split config. + */ + private void startActivityToSide(@NonNull Activity launchingActivity, @NonNull Intent intent, + @Nullable Bundle options, @NonNull SplitRule sideRule, + @Nullable Consumer<Exception> failureCallback, boolean isPlaceholder) { + try { + mPresenter.startActivityToSide(launchingActivity, intent, options, sideRule, + isPlaceholder); + } catch (Exception e) { + if (failureCallback != null) { + failureCallback.accept(e); + } + } + } + + /** * Expands the given activity by either expanding the TaskFragment it is currently in or putting * it into a new expanded TaskFragment. */ @@ -493,11 +530,18 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen if (container == splitContainer.getPrimaryContainer()) { // The new launched can be in the primary container when it is starting a new activity - // onCreate, thus the secondary may still be empty. + // onCreate. final TaskFragmentContainer secondaryContainer = splitContainer.getSecondaryContainer(); + final Intent secondaryIntent = secondaryContainer.getPendingAppearedIntent(); + if (secondaryIntent != null) { + // Check with the pending Intent before it is started on the server side. + // This can happen if the launched Activity start a new Intent to secondary during + // #onCreated(). + return getSplitRule(launchedActivity, secondaryIntent) != null; + } final Activity secondaryActivity = secondaryContainer.getTopNonFinishingActivity(); - return secondaryActivity == null - || getSplitRule(launchedActivity, secondaryActivity) != null; + return secondaryActivity != null + && getSplitRule(launchedActivity, secondaryActivity) != null; } // Check if the new launched activity is a placeholder. @@ -536,7 +580,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen Activity activityBelow = null; final TaskFragmentContainer container = getContainerWithActivity(activity); if (container != null) { - final List<Activity> containerActivities = container.collectActivities(); + final List<Activity> containerActivities = container.collectNonFinishingActivities(); final int index = containerActivities.indexOf(activity); if (index > 0) { activityBelow = containerActivities.get(index - 1); @@ -654,7 +698,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen // 1. Whether the new activity intent should always expand. if (shouldExpand(null /* activity */, intent)) { - return createEmptyExpandedContainer(wct, taskId, launchingActivity); + return createEmptyExpandedContainer(wct, intent, taskId, launchingActivity); } // 2. Whether the launching activity (if set) should be split with the new activity intent. @@ -705,7 +749,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen */ @Nullable private TaskFragmentContainer createEmptyExpandedContainer( - @NonNull WindowContainerTransaction wct, int taskId, + @NonNull WindowContainerTransaction wct, @NonNull Intent intent, int taskId, @Nullable Activity launchingActivity) { // We need an activity in the organizer process in the same Task to use as the owner // activity, as well as to get the Task window info. @@ -722,8 +766,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen // Can't find any activity in the Task that we can use as the owner activity. return null; } - final TaskFragmentContainer expandedContainer = newContainer(null /* activity */, - activityInTask, taskId); + final TaskFragmentContainer expandedContainer = newContainer(intent, activityInTask, + taskId); mPresenter.createTaskFragment(wct, expandedContainer.getTaskFragmentToken(), activityInTask.getActivityToken(), new Rect(), WINDOWING_MODE_UNDEFINED); return expandedContainer; @@ -752,7 +796,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return splitContainer.getSecondaryContainer(); } // Create a new TaskFragment to split with the primary activity for the new activity. - return mPresenter.createNewSplitWithEmptySideContainer(wct, primaryActivity, splitRule); + return mPresenter.createNewSplitWithEmptySideContainer(wct, primaryActivity, intent, + splitRule); } /** @@ -776,21 +821,34 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return null; } - TaskFragmentContainer newContainer(@NonNull Activity activity, int taskId) { - return newContainer(activity, activity, taskId); + TaskFragmentContainer newContainer(@NonNull Activity pendingAppearedActivity, int taskId) { + return newContainer(pendingAppearedActivity, pendingAppearedActivity, taskId); + } + + TaskFragmentContainer newContainer(@NonNull Activity pendingAppearedActivity, + @NonNull Activity activityInTask, int taskId) { + return newContainer(pendingAppearedActivity, null /* pendingAppearedIntent */, + activityInTask, taskId); + } + + TaskFragmentContainer newContainer(@NonNull Intent pendingAppearedIntent, + @NonNull Activity activityInTask, int taskId) { + return newContainer(null /* pendingAppearedActivity */, pendingAppearedIntent, + activityInTask, taskId); } /** * Creates and registers a new organized container with an optional activity that will be * re-parented to it in a WCT. * - * @param activity the activity that will be reparented to the TaskFragment. - * @param activityInTask activity in the same Task so that we can get the Task bounds if - * needed. - * @param taskId parent Task of the new TaskFragment. + * @param pendingAppearedActivity the activity that will be reparented to the TaskFragment. + * @param pendingAppearedIntent the Intent that will be started in the TaskFragment. + * @param activityInTask activity in the same Task so that we can get the Task bounds + * if needed. + * @param taskId parent Task of the new TaskFragment. */ - TaskFragmentContainer newContainer(@Nullable Activity activity, - @NonNull Activity activityInTask, int taskId) { + TaskFragmentContainer newContainer(@Nullable Activity pendingAppearedActivity, + @Nullable Intent pendingAppearedIntent, @NonNull Activity activityInTask, int taskId) { if (activityInTask == null) { throw new IllegalArgumentException("activityInTask must not be null,"); } @@ -798,8 +856,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen mTaskContainers.put(taskId, new TaskContainer(taskId)); } final TaskContainer taskContainer = mTaskContainers.get(taskId); - final TaskFragmentContainer container = new TaskFragmentContainer(activity, taskContainer, - this); + final TaskFragmentContainer container = new TaskFragmentContainer(pendingAppearedActivity, + pendingAppearedIntent, taskContainer, this); if (!taskContainer.isTaskBoundsInitialized()) { // Get the initial bounds before the TaskFragment has appeared. final Rect taskBounds = SplitPresenter.getTaskBoundsFromActivity(activityInTask); @@ -1286,6 +1344,18 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } /** + * Gets the token of the initial TaskFragment that embedded this activity. Do not rely on it + * after creation because the activity could be reparented. + */ + @VisibleForTesting + @Nullable + IBinder getInitialTaskFragmentToken(@NonNull Activity activity) { + final ActivityThread.ActivityClientRecord record = ActivityThread.currentActivityThread() + .getActivityClient(activity.getActivityToken()); + return record != null ? record.mInitialTaskFragmentToken : null; + } + + /** * Returns {@code true} if an Activity with the provided component name should always be * expanded to occupy full task bounds. Such activity must not be put in a split. */ @@ -1357,26 +1427,28 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen @Override public void onActivityPreCreated(Activity activity, Bundle savedInstanceState) { - final IBinder activityToken = activity.getActivityToken(); - final IBinder initialTaskFragmentToken = ActivityThread.currentActivityThread() - .getActivityClient(activityToken).mInitialTaskFragmentToken; - // If the activity is not embedded, then it will not have an initial task fragment token - // so no further action is needed. - if (initialTaskFragmentToken == null) { - return; - } - for (int i = mTaskContainers.size() - 1; i >= 0; i--) { - final List<TaskFragmentContainer> containers = mTaskContainers.valueAt(i) - .mContainers; - for (int j = containers.size() - 1; j >= 0; j--) { - final TaskFragmentContainer container = containers.get(j); - if (!container.hasActivity(activityToken) - && container.getTaskFragmentToken().equals(initialTaskFragmentToken)) { - // The onTaskFragmentInfoChanged callback containing this activity has not - // reached the client yet, so add the activity to the pending appeared - // activities. - container.addPendingAppearedActivity(activity); - return; + synchronized (mLock) { + final IBinder activityToken = activity.getActivityToken(); + final IBinder initialTaskFragmentToken = getInitialTaskFragmentToken(activity); + // If the activity is not embedded, then it will not have an initial task fragment + // token so no further action is needed. + if (initialTaskFragmentToken == null) { + return; + } + for (int i = mTaskContainers.size() - 1; i >= 0; i--) { + final List<TaskFragmentContainer> containers = mTaskContainers.valueAt(i) + .mContainers; + for (int j = containers.size() - 1; j >= 0; j--) { + final TaskFragmentContainer container = containers.get(j); + if (!container.hasActivity(activityToken) + && container.getTaskFragmentToken() + .equals(initialTaskFragmentToken)) { + // The onTaskFragmentInfoChanged callback containing this activity has + // not reached the client yet, so add the activity to the pending + // appeared activities. + container.addPendingAppearedActivity(activity); + return; + } } } } @@ -1388,17 +1460,23 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen // first. In case of a configured placeholder activity we want to make sure // that we don't launch it if an activity itself already requested something to be // launched to side. - SplitController.this.onActivityCreated(activity); + synchronized (mLock) { + SplitController.this.onActivityCreated(activity); + } } @Override public void onActivityConfigurationChanged(Activity activity) { - SplitController.this.onActivityConfigurationChanged(activity); + synchronized (mLock) { + SplitController.this.onActivityConfigurationChanged(activity); + } } @Override public void onActivityPostDestroyed(Activity activity) { - SplitController.this.onActivityDestroyed(activity); + synchronized (mLock) { + SplitController.this.onActivityDestroyed(activity); + } } } @@ -1433,16 +1511,18 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return super.onStartActivity(who, intent, options); } - final int taskId = getTaskId(launchingActivity); - final WindowContainerTransaction wct = new WindowContainerTransaction(); - final TaskFragmentContainer launchedInTaskFragment = resolveStartActivityIntent(wct, - taskId, intent, launchingActivity); - if (launchedInTaskFragment != null) { - mPresenter.applyTransaction(wct); - // Amend the request to let the WM know that the activity should be placed in the - // dedicated container. - options.putBinder(ActivityOptions.KEY_LAUNCH_TASK_FRAGMENT_TOKEN, - launchedInTaskFragment.getTaskFragmentToken()); + synchronized (mLock) { + final int taskId = getTaskId(launchingActivity); + final WindowContainerTransaction wct = new WindowContainerTransaction(); + final TaskFragmentContainer launchedInTaskFragment = resolveStartActivityIntent(wct, + taskId, intent, launchingActivity); + if (launchedInTaskFragment != null) { + mPresenter.applyTransaction(wct); + // Amend the request to let the WM know that the activity should be placed in + // the dedicated container. + options.putBinder(ActivityOptions.KEY_LAUNCH_TASK_FRAGMENT_TOKEN, + launchedInTaskFragment.getTaskFragmentToken()); + } } return super.onStartActivity(who, intent, options); @@ -1455,7 +1535,9 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen */ @Override public boolean isActivityEmbedded(@NonNull Activity activity) { - return mPresenter.isActivityEmbedded(activity.getActivityToken()); + synchronized (mLock) { + return mPresenter.isActivityEmbedded(activity.getActivityToken()); + } } /** diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java index 43d0402c1525..ac3b05a0e825 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java @@ -101,7 +101,7 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { @NonNull TaskFragmentContainer createNewSplitWithEmptySideContainer( @NonNull WindowContainerTransaction wct, @NonNull Activity primaryActivity, - @NonNull SplitPairRule rule) { + @NonNull Intent secondaryIntent, @NonNull SplitPairRule rule) { final Rect parentBounds = getParentContainerBounds(primaryActivity); final Rect primaryRectBounds = getBoundsForPosition(POSITION_START, parentBounds, rule, isLtr(primaryActivity, rule)); @@ -111,7 +111,7 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { // Create new empty task fragment final int taskId = primaryContainer.getTaskId(); final TaskFragmentContainer secondaryContainer = mController.newContainer( - null /* activity */, primaryActivity, taskId); + secondaryIntent, primaryActivity, taskId); final Rect secondaryRectBounds = getBoundsForPosition(POSITION_END, parentBounds, rule, isLtr(primaryActivity, rule)); final int windowingMode = mController.getTaskContainer(taskId) @@ -224,7 +224,7 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { } final int taskId = primaryContainer.getTaskId(); - TaskFragmentContainer secondaryContainer = mController.newContainer(null /* activity */, + final TaskFragmentContainer secondaryContainer = mController.newContainer(activityIntent, launchingActivity, taskId); final int windowingMode = mController.getTaskContainer(taskId) .getWindowingModeForSplitTaskFragment(primaryRectBounds); diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java index 26ddae4a0818..624cde50ff72 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java @@ -22,6 +22,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.app.WindowConfiguration.WindowingMode; +import android.content.Intent; import android.graphics.Rect; import android.os.Binder; import android.os.IBinder; @@ -64,7 +65,16 @@ class TaskFragmentContainer { * Activities that are being reparented or being started to this container, but haven't been * added to {@link #mInfo} yet. */ - private final ArrayList<Activity> mPendingAppearedActivities = new ArrayList<>(); + @VisibleForTesting + final ArrayList<Activity> mPendingAppearedActivities = new ArrayList<>(); + + /** + * When this container is created for an {@link Intent} to start within, we store that Intent + * until the container becomes non-empty on the server side, so that we can use it to check + * rules associated with this container. + */ + @Nullable + private Intent mPendingAppearedIntent; /** Containers that are dependent on this one and should be completely destroyed on exit. */ private final List<TaskFragmentContainer> mContainersToFinishOnExit = @@ -99,15 +109,22 @@ class TaskFragmentContainer { * Creates a container with an existing activity that will be re-parented to it in a window * container transaction. */ - TaskFragmentContainer(@Nullable Activity activity, @NonNull TaskContainer taskContainer, + TaskFragmentContainer(@Nullable Activity pendingAppearedActivity, + @Nullable Intent pendingAppearedIntent, @NonNull TaskContainer taskContainer, @NonNull SplitController controller) { + if ((pendingAppearedActivity == null && pendingAppearedIntent == null) + || (pendingAppearedActivity != null && pendingAppearedIntent != null)) { + throw new IllegalArgumentException( + "One and only one of pending activity and intent must be non-null"); + } mController = controller; mToken = new Binder("TaskFragmentContainer"); mTaskContainer = taskContainer; taskContainer.mContainers.add(this); - if (activity != null) { - addPendingAppearedActivity(activity); + if (pendingAppearedActivity != null) { + addPendingAppearedActivity(pendingAppearedActivity); } + mPendingAppearedIntent = pendingAppearedIntent; } /** @@ -118,9 +135,9 @@ class TaskFragmentContainer { return mToken; } - /** List of activities that belong to this container and live in this process. */ + /** List of non-finishing activities that belong to this container and live in this process. */ @NonNull - List<Activity> collectActivities() { + List<Activity> collectNonFinishingActivities() { final List<Activity> allActivities = new ArrayList<>(); if (mInfo != null) { // Add activities reported from the server. @@ -154,13 +171,14 @@ class TaskFragmentContainer { return false; } return mPendingAppearedActivities.isEmpty() - && mInfo.getActivities().size() == collectActivities().size(); + && mInfo.getActivities().size() == collectNonFinishingActivities().size(); } ActivityStack toActivityStack() { - return new ActivityStack(collectActivities(), isEmpty()); + return new ActivityStack(collectNonFinishingActivities(), isEmpty()); } + /** Adds the activity that will be reparented to this container. */ void addPendingAppearedActivity(@NonNull Activity pendingAppearedActivity) { if (hasActivity(pendingAppearedActivity.getActivityToken())) { return; @@ -174,6 +192,11 @@ class TaskFragmentContainer { mPendingAppearedActivities.remove(pendingAppearedActivity); } + @Nullable + Intent getPendingAppearedIntent() { + return mPendingAppearedIntent; + } + boolean hasActivity(@NonNull IBinder token) { if (mInfo != null && mInfo.getActivities().contains(token)) { return true; @@ -219,7 +242,12 @@ class TaskFragmentContainer { } mInfo = info; - if (mInfo == null || mPendingAppearedActivities.isEmpty()) { + if (mInfo == null || mInfo.isEmpty()) { + return; + } + // Only track the pending Intent when the container is empty. + mPendingAppearedIntent = null; + if (mPendingAppearedActivities.isEmpty()) { return; } // Cleanup activities that were being re-parented @@ -234,20 +262,13 @@ class TaskFragmentContainer { @Nullable Activity getTopNonFinishingActivity() { - List<Activity> activities = collectActivities(); - if (activities.isEmpty()) { - return null; - } - int i = activities.size() - 1; - while (i >= 0 && activities.get(i).isFinishing()) { - i--; - } - return i >= 0 ? activities.get(i) : null; + final List<Activity> activities = collectNonFinishingActivities(); + return activities.isEmpty() ? null : activities.get(activities.size() - 1); } @Nullable Activity getBottomMostActivity() { - final List<Activity> activities = collectActivities(); + final List<Activity> activities = collectNonFinishingActivities(); return activities.isEmpty() ? null : activities.get(0); } @@ -259,6 +280,9 @@ class TaskFragmentContainer { * Adds a container that should be finished when this container is finished. */ void addContainerToFinishOnExit(@NonNull TaskFragmentContainer containerToFinish) { + if (mIsFinished) { + return; + } mContainersToFinishOnExit.add(containerToFinish); } @@ -266,6 +290,9 @@ class TaskFragmentContainer { * Removes a container that should be finished when this container is finished. */ void removeContainerToFinishOnExit(@NonNull TaskFragmentContainer containerToRemove) { + if (mIsFinished) { + return; + } mContainersToFinishOnExit.remove(containerToRemove); } @@ -273,6 +300,9 @@ class TaskFragmentContainer { * Adds an activity that should be finished when this container is finished. */ void addActivityToFinishOnExit(@NonNull Activity activityToFinish) { + if (mIsFinished) { + return; + } mActivitiesToFinishOnExit.add(activityToFinish); } @@ -280,11 +310,17 @@ class TaskFragmentContainer { * Removes an activity that should be finished when this container is finished. */ void removeActivityToFinishOnExit(@NonNull Activity activityToRemove) { + if (mIsFinished) { + return; + } mActivitiesToFinishOnExit.remove(activityToRemove); } /** Removes all dependencies that should be finished when this container is finished. */ void resetDependencies() { + if (mIsFinished) { + return; + } mContainersToFinishOnExit.clear(); mActivitiesToFinishOnExit.clear(); } @@ -320,8 +356,11 @@ class TaskFragmentContainer { private void finishActivities(boolean shouldFinishDependent, @NonNull SplitPresenter presenter, @NonNull WindowContainerTransaction wct, @NonNull SplitController controller) { // Finish own activities - for (Activity activity : collectActivities()) { - if (!activity.isFinishing()) { + for (Activity activity : collectNonFinishingActivities()) { + if (!activity.isFinishing() + // In case we have requested to reparent the activity to another container (as + // pendingAppeared), we don't want to finish it with this container. + && mController.getContainerWithActivity(activity) == this) { activity.finish(); } } diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizerTest.java index 792a53168a0d..a191e685f651 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizerTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizerTest.java @@ -28,6 +28,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import android.content.Intent; import android.content.res.Configuration; import android.graphics.Point; import android.os.Handler; @@ -115,7 +116,7 @@ public class JetpackTaskFragmentOrganizerTest { public void testExpandTaskFragment() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mSplitController); + new Intent(), taskContainer, mSplitController); final TaskFragmentInfo info = createMockInfo(container); mOrganizer.mFragmentInfos.put(container.getTaskFragmentToken(), info); container.setInfo(info); diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java index 7fbacbaa8761..60390eb2b3d2 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java @@ -19,6 +19,9 @@ package androidx.window.extensions.embedding; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static androidx.window.extensions.embedding.SplitRule.FINISH_ALWAYS; +import static androidx.window.extensions.embedding.SplitRule.FINISH_NEVER; + import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; @@ -89,6 +92,10 @@ public class SplitControllerTest { private static final Intent PLACEHOLDER_INTENT = new Intent().setComponent( new ComponentName("test", "placeholder")); + /** Default finish behavior in Jetpack. */ + private static final int DEFAULT_FINISH_PRIMARY_WITH_SECONDARY = FINISH_NEVER; + private static final int DEFAULT_FINISH_SECONDARY_WITH_PRIMARY = FINISH_ALWAYS; + private Activity mActivity; @Mock private Resources mActivityResources; @@ -123,7 +130,7 @@ public class SplitControllerTest { final TaskContainer taskContainer = new TaskContainer(TASK_ID); // tf1 has no running activity so is not active. final TaskFragmentContainer tf1 = new TaskFragmentContainer(null /* activity */, - taskContainer, mSplitController); + new Intent(), taskContainer, mSplitController); // tf2 has running activity so is active. final TaskFragmentContainer tf2 = mock(TaskFragmentContainer.class); doReturn(1).when(tf2).getRunningActivityCount(); @@ -205,7 +212,8 @@ public class SplitControllerTest { assertThrows(IllegalArgumentException.class, () -> mSplitController.newContainer(mActivity, null /* launchingActivity */, TASK_ID)); - final TaskFragmentContainer tf = mSplitController.newContainer(null, mActivity, TASK_ID); + final TaskFragmentContainer tf = mSplitController.newContainer(mActivity, mActivity, + TASK_ID); final TaskContainer taskContainer = mSplitController.getTaskContainer(TASK_ID); assertNotNull(tf); @@ -307,7 +315,7 @@ public class SplitControllerTest { @Test public void testOnActivityReparentToTask_diffProcess() { // Create an empty TaskFragment to initialize for the Task. - mSplitController.newContainer(null, mActivity, TASK_ID); + mSplitController.newContainer(new Intent(), mActivity, TASK_ID); final IBinder activityToken = new Binder(); final Intent intent = new Intent(); @@ -417,7 +425,7 @@ public class SplitControllerTest { verify(mSplitPresenter, never()).applyTransaction(any()); - mSplitController.newContainer(null /* activity */, mActivity, TASK_ID); + mSplitController.newContainer(new Intent(), mActivity, TASK_ID); mSplitController.placeActivityInTopContainer(mActivity); verify(mSplitPresenter).applyTransaction(any()); @@ -436,7 +444,7 @@ public class SplitControllerTest { false /* isOnReparent */); assertFalse(result); - verify(mSplitController, never()).newContainer(any(), any(), anyInt()); + verify(mSplitController, never()).newContainer(any(), any(), any(), anyInt()); } @Test @@ -577,7 +585,7 @@ public class SplitControllerTest { final TaskFragmentContainer primaryContainer = mSplitController.newContainer(mActivity, TASK_ID); final TaskFragmentContainer secondaryContainer = mSplitController.newContainer( - null /* activity */, mActivity, TASK_ID); + secondaryIntent, mActivity, TASK_ID); mSplitController.registerSplit( mTransaction, primaryContainer, @@ -589,11 +597,36 @@ public class SplitControllerTest { false /* isOnReparent */); assertTrue(result); - verify(mSplitController, never()).newContainer(any(), any(), anyInt()); + verify(mSplitController, never()).newContainer(any(), any(), any(), anyInt()); verify(mSplitController, never()).registerSplit(any(), any(), any(), any(), any()); } @Test + public void testResolveActivityToContainer_splitRule_inPrimarySplitWithNoRuleMatched() { + final Intent secondaryIntent = new Intent(); + setupSplitRule(mActivity, secondaryIntent); + final SplitPairRule splitRule = (SplitPairRule) mSplitController.getSplitRules().get(0); + + // The new launched activity is in primary split, but there is no rule for it to split with + // the secondary, so return false. + final TaskFragmentContainer primaryContainer = mSplitController.newContainer(mActivity, + TASK_ID); + final TaskFragmentContainer secondaryContainer = mSplitController.newContainer( + secondaryIntent, mActivity, TASK_ID); + mSplitController.registerSplit( + mTransaction, + primaryContainer, + mActivity, + secondaryContainer, + splitRule); + final Activity launchedActivity = createMockActivity(); + primaryContainer.addPendingAppearedActivity(launchedActivity); + + assertFalse(mSplitController.resolveActivityToContainer(launchedActivity, + false /* isOnReparent */)); + } + + @Test public void testResolveActivityToContainer_splitRule_inSecondarySplitWithRuleMatched() { final Activity primaryActivity = createMockActivity(); setupSplitRule(primaryActivity, mActivity); @@ -605,7 +638,7 @@ public class SplitControllerTest { false /* isOnReparent */); assertTrue(result); - verify(mSplitController, never()).newContainer(any(), any(), anyInt()); + verify(mSplitController, never()).newContainer(any(), any(), any(), anyInt()); verify(mSplitController, never()).registerSplit(any(), any(), any(), any(), any()); } @@ -734,6 +767,15 @@ public class SplitControllerTest { } @Test + public void testResolveActivityToContainer_inUnknownTaskFragment() { + doReturn(new Binder()).when(mSplitController).getInitialTaskFragmentToken(mActivity); + + // No need to handle when the new launched activity is in an unknown TaskFragment. + assertTrue(mSplitController.resolveActivityToContainer(mActivity, + false /* isOnReparent */)); + } + + @Test public void testGetPlaceholderOptions() { doReturn(true).when(mActivity).isResumed(); @@ -753,6 +795,38 @@ public class SplitControllerTest { assertTrue(activityOptions.getAvoidMoveToFront()); } + @Test + public void testFinishTwoSplitThatShouldFinishTogether() { + // Setup two split pairs that should finish each other when finishing one. + final Activity secondaryActivity0 = createMockActivity(); + final Activity secondaryActivity1 = createMockActivity(); + final TaskFragmentContainer primaryContainer = createMockTaskFragmentContainer(mActivity); + final TaskFragmentContainer secondaryContainer0 = createMockTaskFragmentContainer( + secondaryActivity0); + final TaskFragmentContainer secondaryContainer1 = createMockTaskFragmentContainer( + secondaryActivity1); + final TaskContainer taskContainer = mSplitController.getTaskContainer(TASK_ID); + final SplitRule rule0 = createSplitRule(mActivity, secondaryActivity0, FINISH_ALWAYS, + FINISH_ALWAYS, false /* clearTop */); + final SplitRule rule1 = createSplitRule(mActivity, secondaryActivity1, FINISH_ALWAYS, + FINISH_ALWAYS, false /* clearTop */); + registerSplitPair(primaryContainer, secondaryContainer0, rule0); + registerSplitPair(primaryContainer, secondaryContainer1, rule1); + + primaryContainer.finish(true /* shouldFinishDependent */, mSplitPresenter, + mTransaction, mSplitController); + + // All containers and activities should be finished based on the FINISH_ALWAYS behavior. + assertTrue(primaryContainer.isFinished()); + assertTrue(secondaryContainer0.isFinished()); + assertTrue(secondaryContainer1.isFinished()); + verify(mActivity).finish(); + verify(secondaryActivity0).finish(); + verify(secondaryActivity1).finish(); + assertTrue(taskContainer.mContainers.isEmpty()); + assertTrue(taskContainer.mSplitContainers.isEmpty()); + } + /** Creates a mock activity in the organizer process. */ private Activity createMockActivity() { final Activity activity = mock(Activity.class); @@ -828,7 +902,9 @@ public class SplitControllerTest { /** Setups a rule to always split the given activities. */ private void setupSplitRule(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity) { - final SplitRule splitRule = createSplitRule(primaryActivity, secondaryActivity); + final SplitRule splitRule = createSplitRule(primaryActivity, secondaryActivity, + DEFAULT_FINISH_PRIMARY_WITH_SECONDARY, DEFAULT_FINISH_SECONDARY_WITH_PRIMARY, + true /* clearTop */); mSplitController.setEmbeddingRules(Collections.singleton(splitRule)); } @@ -848,29 +924,44 @@ public class SplitControllerTest { /** Creates a rule to always split the given activities. */ private SplitRule createSplitRule(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity) { + return createSplitRule(primaryActivity, secondaryActivity, + DEFAULT_FINISH_PRIMARY_WITH_SECONDARY, DEFAULT_FINISH_SECONDARY_WITH_PRIMARY, + true /* clearTop */); + } + + /** Creates a rule to always split the given activities with the given finish behaviors. */ + private SplitRule createSplitRule(@NonNull Activity primaryActivity, + @NonNull Activity secondaryActivity, int finishPrimaryWithSecondary, + int finishSecondaryWithPrimary, boolean clearTop) { final Pair<Activity, Activity> targetPair = new Pair<>(primaryActivity, secondaryActivity); return new SplitPairRule.Builder( targetPair::equals, activityIntentPair -> false, w -> true) .setSplitRatio(SPLIT_RATIO) - .setShouldClearTop(true) + .setFinishPrimaryWithSecondary(finishPrimaryWithSecondary) + .setFinishSecondaryWithPrimary(finishSecondaryWithPrimary) + .setShouldClearTop(clearTop) .build(); } /** Adds a pair of TaskFragments as split for the given activities. */ private void addSplitTaskFragments(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity) { - final TaskFragmentContainer primaryContainer = createMockTaskFragmentContainer( - primaryActivity); - final TaskFragmentContainer secondaryContainer = createMockTaskFragmentContainer( - secondaryActivity); + registerSplitPair(createMockTaskFragmentContainer(primaryActivity), + createMockTaskFragmentContainer(secondaryActivity), + createSplitRule(primaryActivity, secondaryActivity)); + } + + /** Registers the two given TaskFragments as split pair. */ + private void registerSplitPair(@NonNull TaskFragmentContainer primaryContainer, + @NonNull TaskFragmentContainer secondaryContainer, @NonNull SplitRule rule) { mSplitController.registerSplit( mock(WindowContainerTransaction.class), primaryContainer, - primaryActivity, + primaryContainer.getTopNonFinishingActivity(), secondaryContainer, - createSplitRule(primaryActivity, secondaryActivity)); + rule); // We need to set those in case we are not respecting clear top. // TODO(b/231845476) we should always respect clearTop. diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java index f1042ab6ce7d..ebe202db4e54 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java @@ -30,6 +30,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import android.app.Activity; +import android.content.Intent; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; @@ -142,7 +143,7 @@ public class TaskContainerTest { assertTrue(taskContainer.isEmpty()); final TaskFragmentContainer tf = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + new Intent(), taskContainer, mController); assertFalse(taskContainer.isEmpty()); @@ -158,11 +159,11 @@ public class TaskContainerTest { assertNull(taskContainer.getTopTaskFragmentContainer()); final TaskFragmentContainer tf0 = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + new Intent(), taskContainer, mController); assertEquals(tf0, taskContainer.getTopTaskFragmentContainer()); final TaskFragmentContainer tf1 = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + new Intent(), taskContainer, mController); assertEquals(tf1, taskContainer.getTopTaskFragmentContainer()); } diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java index 587878f3bf01..fcbd8a3ac020 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.clearInvocations; @@ -29,12 +30,17 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import android.annotation.NonNull; import android.app.Activity; +import android.content.Intent; +import android.content.res.Configuration; +import android.graphics.Point; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.platform.test.annotations.Presubmit; import android.window.TaskFragmentInfo; +import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -49,6 +55,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -72,19 +79,35 @@ public class TaskFragmentContainerTest { @Mock private Handler mHandler; private Activity mActivity; + private Intent mIntent; @Before public void setup() { MockitoAnnotations.initMocks(this); doReturn(mHandler).when(mController).getHandler(); mActivity = createMockActivity(); + mIntent = new Intent(); + } + + @Test + public void testNewContainer() { + final TaskContainer taskContainer = new TaskContainer(TASK_ID); + + // One of the activity and the intent must be non-null + assertThrows(IllegalArgumentException.class, + () -> new TaskFragmentContainer(null, null, taskContainer, mController)); + + // One of the activity and the intent must be null. + assertThrows(IllegalArgumentException.class, + () -> new TaskFragmentContainer(mActivity, mIntent, taskContainer, mController)); } @Test public void testFinish() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); - final TaskFragmentContainer container = new TaskFragmentContainer(mActivity, taskContainer, - mController); + final TaskFragmentContainer container = new TaskFragmentContainer(mActivity, + null /* pendingAppearedIntent */, taskContainer, mController); + doReturn(container).when(mController).getContainerWithActivity(mActivity); final WindowContainerTransaction wct = new WindowContainerTransaction(); // Only remove the activity, but not clear the reference until appeared. @@ -113,10 +136,59 @@ public class TaskFragmentContainerTest { } @Test + public void testFinish_notFinishActivityThatIsReparenting() { + final TaskContainer taskContainer = new TaskContainer(TASK_ID); + final TaskFragmentContainer container0 = new TaskFragmentContainer(mActivity, + null /* pendingAppearedIntent */, taskContainer, mController); + final TaskFragmentInfo info = createMockTaskFragmentInfo(container0, mActivity); + container0.setInfo(info); + // Request to reparent the activity to a new TaskFragment. + final TaskFragmentContainer container1 = new TaskFragmentContainer(mActivity, + null /* pendingAppearedIntent */, taskContainer, mController); + doReturn(container1).when(mController).getContainerWithActivity(mActivity); + final WindowContainerTransaction wct = new WindowContainerTransaction(); + + // The activity is requested to be reparented, so don't finish it. + container0.finish(true /* shouldFinishDependent */, mPresenter, wct, mController); + + verify(mActivity, never()).finish(); + verify(mPresenter).deleteTaskFragment(wct, container0.getTaskFragmentToken()); + verify(mController).removeContainer(container0); + } + + @Test + public void testSetInfo() { + final TaskContainer taskContainer = new TaskContainer(TASK_ID); + // Pending activity should be cleared when it has appeared on server side. + final TaskFragmentContainer pendingActivityContainer = new TaskFragmentContainer(mActivity, + null /* pendingAppearedIntent */, taskContainer, mController); + + assertTrue(pendingActivityContainer.mPendingAppearedActivities.contains(mActivity)); + + final TaskFragmentInfo info0 = createMockTaskFragmentInfo(pendingActivityContainer, + mActivity); + pendingActivityContainer.setInfo(info0); + + assertTrue(pendingActivityContainer.mPendingAppearedActivities.isEmpty()); + + // Pending intent should be cleared when the container becomes non-empty. + final TaskFragmentContainer pendingIntentContainer = new TaskFragmentContainer( + null /* pendingAppearedActivity */, mIntent, taskContainer, mController); + + assertEquals(mIntent, pendingIntentContainer.getPendingAppearedIntent()); + + final TaskFragmentInfo info1 = createMockTaskFragmentInfo(pendingIntentContainer, + mActivity); + pendingIntentContainer.setInfo(info1); + + assertNull(pendingIntentContainer.getPendingAppearedIntent()); + } + + @Test public void testIsWaitingActivityAppear() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + mIntent, taskContainer, mController); assertTrue(container.isWaitingActivityAppear()); @@ -137,7 +209,7 @@ public class TaskFragmentContainerTest { public void testAppearEmptyTimeout() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + mIntent, taskContainer, mController); assertNull(container.mAppearEmptyTimeout); @@ -173,16 +245,16 @@ public class TaskFragmentContainerTest { } @Test - public void testCollectActivities() { + public void testCollectNonFinishingActivities() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); - List<Activity> activities = container.collectActivities(); + mIntent, taskContainer, mController); + List<Activity> activities = container.collectNonFinishingActivities(); assertTrue(activities.isEmpty()); container.addPendingAppearedActivity(mActivity); - activities = container.collectActivities(); + activities = container.collectNonFinishingActivities(); assertEquals(1, activities.size()); @@ -192,7 +264,7 @@ public class TaskFragmentContainerTest { activity1.getActivityToken()); doReturn(runningActivities).when(mInfo).getActivities(); container.setInfo(mInfo); - activities = container.collectActivities(); + activities = container.collectNonFinishingActivities(); assertEquals(3, activities.size()); assertEquals(activity0, activities.get(0)); @@ -204,21 +276,21 @@ public class TaskFragmentContainerTest { public void testAddPendingActivity() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + mIntent, taskContainer, mController); container.addPendingAppearedActivity(mActivity); - assertEquals(1, container.collectActivities().size()); + assertEquals(1, container.collectNonFinishingActivities().size()); container.addPendingAppearedActivity(mActivity); - assertEquals(1, container.collectActivities().size()); + assertEquals(1, container.collectNonFinishingActivities().size()); } @Test public void testGetBottomMostActivity() { final TaskContainer taskContainer = new TaskContainer(TASK_ID); final TaskFragmentContainer container = new TaskFragmentContainer(null /* activity */, - taskContainer, mController); + mIntent, taskContainer, mController); container.addPendingAppearedActivity(mActivity); assertEquals(mActivity, container.getBottomMostActivity()); @@ -239,4 +311,18 @@ public class TaskFragmentContainerTest { doReturn(activity).when(mController).getActivity(activityToken); return activity; } + + /** Creates a mock TaskFragmentInfo for the given TaskFragment. */ + private TaskFragmentInfo createMockTaskFragmentInfo(@NonNull TaskFragmentContainer container, + @NonNull Activity activity) { + return new TaskFragmentInfo(container.getTaskFragmentToken(), + mock(WindowContainerToken.class), + new Configuration(), + 1, + true /* isVisible */, + Collections.singletonList(activity.getActivityToken()), + new Point(), + false /* isTaskClearedForReuse */, + false /* isTaskFragmentClearedForPip */); + } } diff --git a/libs/WindowManager/Shell/res/values-af/strings_tv.xml b/libs/WindowManager/Shell/res/values-af/strings_tv.xml index c87bec093cca..6187ea46769c 100644 --- a/libs/WindowManager/Shell/res/values-af/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-af/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Beeld-in-beeld"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Titellose program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Maak PIP toe"</string> + <string name="pip_close" msgid="2955969519031223530">"Maak toe"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Volskerm"</string> - <string name="pip_move" msgid="1544227837964635439">"Skuif PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Vou PIP uit"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Vou PIP in"</string> + <string name="pip_move" msgid="158770205886688553">"Skuif"</string> + <string name="pip_expand" msgid="1051966011679297308">"Vou uit"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Vou in"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Dubbeldruk "<annotation icon="home_icon">" TUIS "</annotation>" vir kontroles"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Prent-in-prent-kieslys"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Skuif links"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Skuif regs"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Skuif op"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Skuif af"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Klaar"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-am/strings_tv.xml b/libs/WindowManager/Shell/res/values-am/strings_tv.xml index d23353858de6..74ce49ef078e 100644 --- a/libs/WindowManager/Shell/res/values-am/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-am/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ስዕል-ላይ-ስዕል"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ርዕስ የሌለው ፕሮግራም)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIPን ዝጋ"</string> + <string name="pip_close" msgid="2955969519031223530">"ዝጋ"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"ሙሉ ማያ ገጽ"</string> - <string name="pip_move" msgid="1544227837964635439">"ፒአይፒ ውሰድ"</string> - <string name="pip_expand" msgid="7605396312689038178">"ፒአይፒን ዘርጋ"</string> - <string name="pip_collapse" msgid="5732233773786896094">"ፒአይፒን ሰብስብ"</string> + <string name="pip_move" msgid="158770205886688553">"ውሰድ"</string> + <string name="pip_expand" msgid="1051966011679297308">"ዘርጋ"</string> + <string name="pip_collapse" msgid="3903295106641385962">"ሰብስብ"</string> <string name="pip_edu_text" msgid="3672999496647508701">" ለመቆጣጠሪያዎች "<annotation icon="home_icon">"መነሻ"</annotation>"ን ሁለቴ ይጫኑ"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"የስዕል-ላይ-ስዕል ምናሌ።"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"ወደ ግራ ውሰድ"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"ወደ ቀኝ ውሰድ"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ወደ ላይ ውሰድ"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"ወደ ታች ውሰድ"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"ተጠናቅቋል"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ar/strings_tv.xml b/libs/WindowManager/Shell/res/values-ar/strings_tv.xml index a1ceda5fc987..45b306643b5c 100644 --- a/libs/WindowManager/Shell/res/values-ar/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ar/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"نافذة ضمن النافذة"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ليس هناك عنوان للبرنامج)"</string> - <string name="pip_close" msgid="9135220303720555525">"إغلاق PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"ملء الشاشة"</string> - <string name="pip_move" msgid="1544227837964635439">"نقل نافذة داخل النافذة (PIP)"</string> - <string name="pip_expand" msgid="7605396312689038178">"توسيع نافذة داخل النافذة (PIP)"</string> - <string name="pip_collapse" msgid="5732233773786896094">"تصغير نافذة داخل النافذة (PIP)"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" انقر مرتين على "<annotation icon="home_icon">" الصفحة الرئيسية "</annotation>" للوصول لعناصر التحكم."</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-as/strings_tv.xml b/libs/WindowManager/Shell/res/values-as/strings_tv.xml index 8d7bd9f6a27e..816b5b1c79dc 100644 --- a/libs/WindowManager/Shell/res/values-as/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-as/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"চিত্ৰৰ ভিতৰত চিত্ৰ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(শিৰোনামবিহীন কাৰ্যক্ৰম)"</string> - <string name="pip_close" msgid="9135220303720555525">"পিপ বন্ধ কৰক"</string> + <string name="pip_close" msgid="2955969519031223530">"বন্ধ কৰক"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"সম্পূৰ্ণ স্ক্ৰীন"</string> - <string name="pip_move" msgid="1544227837964635439">"পিপ স্থানান্তৰ কৰক"</string> - <string name="pip_expand" msgid="7605396312689038178">"পিপ বিস্তাৰ কৰক"</string> - <string name="pip_collapse" msgid="5732233773786896094">"পিপ সংকোচন কৰক"</string> + <string name="pip_move" msgid="158770205886688553">"স্থানান্তৰ কৰক"</string> + <string name="pip_expand" msgid="1051966011679297308">"বিস্তাৰ কৰক"</string> + <string name="pip_collapse" msgid="3903295106641385962">"সংকোচন কৰক"</string> <string name="pip_edu_text" msgid="3672999496647508701">" নিয়ন্ত্ৰণৰ বাবে "<annotation icon="home_icon">" গৃহপৃষ্ঠা "</annotation>" বুটামত দুবাৰ হেঁচক"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"চিত্ৰৰ ভিতৰৰ চিত্ৰ মেনু।"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"বাওঁফাললৈ নিয়ক"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"সোঁফাললৈ নিয়ক"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ওপৰলৈ নিয়ক"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"তললৈ নিয়ক"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"হ’ল"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-az/strings_tv.xml b/libs/WindowManager/Shell/res/values-az/strings_tv.xml index 87c46fa41a01..ccb7a7069ad8 100644 --- a/libs/WindowManager/Shell/res/values-az/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-az/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Şəkil-içində-Şəkil"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Başlıqsız proqram)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP bağlayın"</string> + <string name="pip_close" msgid="2955969519031223530">"Bağlayın"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Tam ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP tətbiq edin"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP-ni genişləndirin"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP-ni yığcamlaşdırın"</string> + <string name="pip_move" msgid="158770205886688553">"Köçürün"</string> + <string name="pip_expand" msgid="1051966011679297308">"Genişləndirin"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Yığcamlaşdırın"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Nizamlayıcılar üçün "<annotation icon="home_icon">" ƏSAS SƏHİFƏ "</annotation>" süçimini iki dəfə basın"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Şəkildə şəkil menyusu."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Sola köçürün"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Sağa köçürün"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Yuxarı köçürün"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Aşağı köçürün"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Hazırdır"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml index c87f30611a07..91b966226b0d 100644 --- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Slika u slici"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez naslova)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zatvori PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Ceo ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"Premesti sliku u slici"</string> - <string name="pip_expand" msgid="7605396312689038178">"Proširi sliku u slici"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Skupi sliku u slici"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Dvaput pritisnite "<annotation icon="home_icon">" HOME "</annotation>" za kontrole"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-be/strings_tv.xml b/libs/WindowManager/Shell/res/values-be/strings_tv.xml index 3566bc372820..7ff6ce7b52ea 100644 --- a/libs/WindowManager/Shell/res/values-be/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-be/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Відарыс у відарысе"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Праграма без назвы)"</string> - <string name="pip_close" msgid="9135220303720555525">"Закрыць PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Поўнаэкранны рэжым"</string> - <string name="pip_move" msgid="1544227837964635439">"Перамясціць PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Разгарнуць відарыс у відарысе"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Згарнуць відарыс у відарысе"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Двойчы націсніце "<annotation icon="home_icon">" ГАЛОЎНЫ ЭКРАН "</annotation>" для пераходу ў налады"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bg/strings_tv.xml b/libs/WindowManager/Shell/res/values-bg/strings_tv.xml index 91049fd2cf02..c5dde1576cbc 100644 --- a/libs/WindowManager/Shell/res/values-bg/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-bg/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Картина в картината"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Програма без заглавие)"</string> - <string name="pip_close" msgid="9135220303720555525">"Затваряне на PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Цял екран"</string> - <string name="pip_move" msgid="1544227837964635439">"„Картина в картина“: Преместв."</string> - <string name="pip_expand" msgid="7605396312689038178">"Разгъване на прозореца за PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Свиване на прозореца за PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" За достъп до контролите натиснете 2 пъти "<annotation icon="home_icon">"НАЧАЛО"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bn/strings_tv.xml b/libs/WindowManager/Shell/res/values-bn/strings_tv.xml index 792708d128a5..4005c7a9c87f 100644 --- a/libs/WindowManager/Shell/res/values-bn/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-bn/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ছবির-মধ্যে-ছবি"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(শিরোনামহীন প্রোগ্রাম)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP বন্ধ করুন"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"পূর্ণ স্ক্রিন"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP সরান"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP বড় করুন"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP আড়াল করুন"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" কন্ট্রোলের জন্য "<annotation icon="home_icon">" হোম "</annotation>" বোতামে ডবল প্রেস করুন"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bs/strings_tv.xml b/libs/WindowManager/Shell/res/values-bs/strings_tv.xml index b7f0dca1b5a5..e2ea376a1685 100644 --- a/libs/WindowManager/Shell/res/values-bs/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-bs/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Slika u slici"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez naslova)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zatvori sliku u slici"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Cijeli ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"Pokreni sliku u slici"</string> - <string name="pip_expand" msgid="7605396312689038178">"Proširi sliku u slici"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Suzi sliku u slici"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Dvaput pritisnite "<annotation icon="home_icon">" POČETNI EKRAN "</annotation>" za kontrole"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ca/strings_tv.xml b/libs/WindowManager/Shell/res/values-ca/strings_tv.xml index 1c560c7afa06..38cd35c2eaa6 100644 --- a/libs/WindowManager/Shell/res/values-ca/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ca/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pantalla en pantalla"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programa sense títol)"</string> - <string name="pip_close" msgid="9135220303720555525">"Tanca PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pantalla completa"</string> - <string name="pip_move" msgid="1544227837964635439">"Mou pantalla en pantalla"</string> - <string name="pip_expand" msgid="7605396312689038178">"Desplega pantalla en pantalla"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Replega pantalla en pantalla"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Prem dos cops "<annotation icon="home_icon">" INICI "</annotation>" per accedir als controls"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-cs/strings_tv.xml b/libs/WindowManager/Shell/res/values-cs/strings_tv.xml index 9a8cc2b4d70e..4eeff008fd26 100644 --- a/libs/WindowManager/Shell/res/values-cs/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-cs/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Obraz v obraze"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Bez názvu)"</string> - <string name="pip_close" msgid="9135220303720555525">"Ukončit obraz v obraze (PIP)"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Celá obrazovka"</string> - <string name="pip_move" msgid="1544227837964635439">"Přesunout PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Rozbalit PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Sbalit PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Ovládací prvky zobrazíte dvojitým stisknutím "<annotation icon="home_icon">"tlačítka plochy"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-da/strings_tv.xml b/libs/WindowManager/Shell/res/values-da/strings_tv.xml index cba660ac723c..f2ae12c01aab 100644 --- a/libs/WindowManager/Shell/res/values-da/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-da/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Integreret billede"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program uden titel)"</string> - <string name="pip_close" msgid="9135220303720555525">"Luk integreret billede"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Fuld skærm"</string> - <string name="pip_move" msgid="1544227837964635439">"Flyt PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Udvid PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Skjul PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Tryk to gange på "<annotation icon="home_icon">" HJEM "</annotation>" for at se indstillinger"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-de/strings_tv.xml b/libs/WindowManager/Shell/res/values-de/strings_tv.xml index 02a1b66eb63f..7ba693b1ce07 100644 --- a/libs/WindowManager/Shell/res/values-de/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-de/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Bild im Bild"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Kein Sendungsname gefunden)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP schließen"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Vollbild"</string> - <string name="pip_move" msgid="1544227837964635439">"BiB verschieben"</string> - <string name="pip_expand" msgid="7605396312689038178">"BiB maximieren"</string> - <string name="pip_collapse" msgid="5732233773786896094">"BiB minimieren"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Für Steuerelemente zweimal "<annotation icon="home_icon">"STARTBILDSCHIRMTASTE"</annotation>" drücken"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-el/strings_tv.xml b/libs/WindowManager/Shell/res/values-el/strings_tv.xml index 24cd030cd754..5f8a004b0a1f 100644 --- a/libs/WindowManager/Shell/res/values-el/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-el/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-Picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Δεν υπάρχει τίτλος προγράμματος)"</string> - <string name="pip_close" msgid="9135220303720555525">"Κλείσιμο PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Κλείσιμο"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Πλήρης οθόνη"</string> - <string name="pip_move" msgid="1544227837964635439">"Μετακίνηση PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Ανάπτυξη PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Σύμπτυξη PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Μετακίνηση"</string> + <string name="pip_expand" msgid="1051966011679297308">"Ανάπτυξη"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Σύμπτυξη"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Πατήστε δύο φορές "<annotation icon="home_icon">" ΑΡΧΙΚΗ ΟΘΟΝΗ "</annotation>" για στοιχεία ελέγχου"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Μενού λειτουργίας Picture-in-Picture."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Μετακίνηση αριστερά"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Μετακίνηση δεξιά"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Μετακίνηση επάνω"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Μετακίνηση κάτω"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Τέλος"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings_tv.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings_tv.xml index 82257b42814d..839789b22a1c 100644 --- a/libs/WindowManager/Shell/res/values-en-rAU/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-en-rAU/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(No title program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Close PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Close"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Move PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expand PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Collapse PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Move"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Double-press "<annotation icon="home_icon">" HOME "</annotation>" for controls"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Picture-in-picture menu"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Move left"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Move right"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Move up"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Move down"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Done"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings_tv.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings_tv.xml index 82257b42814d..839789b22a1c 100644 --- a/libs/WindowManager/Shell/res/values-en-rCA/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-en-rCA/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(No title program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Close PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Close"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Move PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expand PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Collapse PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Move"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Double-press "<annotation icon="home_icon">" HOME "</annotation>" for controls"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Picture-in-picture menu"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Move left"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Move right"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Move up"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Move down"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Done"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings_tv.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings_tv.xml index 82257b42814d..839789b22a1c 100644 --- a/libs/WindowManager/Shell/res/values-en-rGB/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-en-rGB/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(No title program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Close PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Close"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Move PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expand PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Collapse PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Move"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Double-press "<annotation icon="home_icon">" HOME "</annotation>" for controls"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Picture-in-picture menu"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Move left"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Move right"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Move up"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Move down"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Done"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings_tv.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings_tv.xml index 82257b42814d..839789b22a1c 100644 --- a/libs/WindowManager/Shell/res/values-en-rIN/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-en-rIN/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(No title program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Close PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Close"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Move PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expand PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Collapse PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Move"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Double-press "<annotation icon="home_icon">" HOME "</annotation>" for controls"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Picture-in-picture menu"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Move left"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Move right"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Move up"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Move down"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Done"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rXC/strings_tv.xml b/libs/WindowManager/Shell/res/values-en-rXC/strings_tv.xml index a6e494cfed3c..507e066e3812 100644 --- a/libs/WindowManager/Shell/res/values-en-rXC/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-en-rXC/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-Picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(No title program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Close PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Close"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Move PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expand PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Collapse PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Move"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Double press "<annotation icon="home_icon">" HOME "</annotation>" for controls"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Picture-in-Picture menu."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Move left"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Move right"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Move up"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Move down"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Done"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings_tv.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings_tv.xml index 458f6b15b857..187d41c13dbd 100644 --- a/libs/WindowManager/Shell/res/values-es-rUS/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-es-rUS/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pantalla en pantalla"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Sin título de programa)"</string> - <string name="pip_close" msgid="9135220303720555525">"Cerrar PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Cerrar"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Pantalla completa"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Maximizar PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Minimizar PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Mover"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expandir"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Contraer"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Presiona dos veces "<annotation icon="home_icon">"INICIO"</annotation>" para ver los controles"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menú de Pantalla en pantalla"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mover hacia la izquierda"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mover hacia la derecha"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mover hacia arriba"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mover hacia abajo"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Listo"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-es/strings_tv.xml b/libs/WindowManager/Shell/res/values-es/strings_tv.xml index 0a690984dac5..d2fd0dc97dbc 100644 --- a/libs/WindowManager/Shell/res/values-es/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-es/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Imagen en imagen"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programa sin título)"</string> - <string name="pip_close" msgid="9135220303720555525">"Cerrar PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pantalla completa"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover imagen en imagen"</string> - <string name="pip_expand" msgid="7605396312689038178">"Mostrar imagen en imagen"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Ocultar imagen en imagen"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Pulsa dos veces "<annotation icon="home_icon">"INICIO"</annotation>" para ver los controles"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-et/strings_tv.xml b/libs/WindowManager/Shell/res/values-et/strings_tv.xml index dc0232303a70..bcdacfb77c2e 100644 --- a/libs/WindowManager/Shell/res/values-et/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-et/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pilt pildis"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programmi pealkiri puudub)"</string> - <string name="pip_close" msgid="9135220303720555525">"Sule PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Täisekraan"</string> - <string name="pip_move" msgid="1544227837964635439">"Teisalda PIP-režiimi"</string> - <string name="pip_expand" msgid="7605396312689038178">"Laienda PIP-akent"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Ahenda PIP-aken"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Nuppude nägemiseks vajutage 2 korda nuppu "<annotation icon="home_icon">"AVAKUVA"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-eu/strings_tv.xml b/libs/WindowManager/Shell/res/values-eu/strings_tv.xml index bce06da2c66f..9cb1fa971a0b 100644 --- a/libs/WindowManager/Shell/res/values-eu/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-eu/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pantaila txiki gainjarria"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programa izengabea)"</string> - <string name="pip_close" msgid="9135220303720555525">"Itxi PIPa"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pantaila osoa"</string> - <string name="pip_move" msgid="1544227837964635439">"Mugitu pantaila txiki gainjarria"</string> - <string name="pip_expand" msgid="7605396312689038178">"Zabaldu pantaila txiki gainjarria"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Tolestu pantaila txiki gainjarria"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Kontrolatzeko aukerak atzitzeko, sakatu birritan "<annotation icon="home_icon">" HASIERA "</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fa/strings_tv.xml b/libs/WindowManager/Shell/res/values-fa/strings_tv.xml index ff9a03c6cefb..03f51d01a3a8 100644 --- a/libs/WindowManager/Shell/res/values-fa/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-fa/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"تصویر در تصویر"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(برنامه بدون عنوان)"</string> - <string name="pip_close" msgid="9135220303720555525">"بستن PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"بستن"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"تمام صفحه"</string> - <string name="pip_move" msgid="1544227837964635439">"انتقال PIP (تصویر در تصویر)"</string> - <string name="pip_expand" msgid="7605396312689038178">"گسترده کردن «تصویر در تصویر»"</string> - <string name="pip_collapse" msgid="5732233773786896094">"جمع کردن «تصویر در تصویر»"</string> + <string name="pip_move" msgid="158770205886688553">"انتقال"</string> + <string name="pip_expand" msgid="1051966011679297308">"گسترده کردن"</string> + <string name="pip_collapse" msgid="3903295106641385962">"جمع کردن"</string> <string name="pip_edu_text" msgid="3672999496647508701">" برای کنترلها، دکمه "<annotation icon="home_icon">"صفحه اصلی"</annotation>" را دوبار فشار دهید"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"منوی تصویر در تصویر."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"انتقال بهچپ"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"انتقال بهراست"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"انتقال بهبالا"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"انتقال بهپایین"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"تمام"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-fi/strings_tv.xml b/libs/WindowManager/Shell/res/values-fi/strings_tv.xml index 3e8bf9032780..e5380047fe42 100644 --- a/libs/WindowManager/Shell/res/values-fi/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-fi/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Kuva kuvassa"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Nimetön)"</string> - <string name="pip_close" msgid="9135220303720555525">"Sulje PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Koko näyttö"</string> - <string name="pip_move" msgid="1544227837964635439">"Siirrä PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Laajenna PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Tiivistä PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Asetukset: paina "<annotation icon="home_icon">"ALOITUSNÄYTTÖPAINIKETTA"</annotation>" kahdesti"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings_tv.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings_tv.xml index 66e13b89c64b..2a6355fb3126 100644 --- a/libs/WindowManager/Shell/res/values-fr-rCA/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Incrustation d\'image"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Aucun programme de titre)"</string> - <string name="pip_close" msgid="9135220303720555525">"Fermer mode IDI"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Plein écran"</string> - <string name="pip_move" msgid="1544227837964635439">"Déplacer l\'image incrustée"</string> - <string name="pip_expand" msgid="7605396312689038178">"Développer l\'image incrustée"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Réduire l\'image incrustée"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Appuyez deux fois sur "<annotation icon="home_icon">" ACCUEIL "</annotation>" pour les commandes"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fr/strings_tv.xml b/libs/WindowManager/Shell/res/values-fr/strings_tv.xml index ed9baf5b6215..ac44d6e595ac 100644 --- a/libs/WindowManager/Shell/res/values-fr/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-fr/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programme sans titre)"</string> - <string name="pip_close" msgid="9135220303720555525">"Fermer mode PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Plein écran"</string> - <string name="pip_move" msgid="1544227837964635439">"Déplacer le PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Développer la fenêtre PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Réduire la fenêtre PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Menu de commandes : appuyez deux fois sur "<annotation icon="home_icon">"ACCUEIL"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-gl/strings_tv.xml b/libs/WindowManager/Shell/res/values-gl/strings_tv.xml index a057434d7853..d566226e8225 100644 --- a/libs/WindowManager/Shell/res/values-gl/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-gl/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pantalla superposta"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programa sen título)"</string> - <string name="pip_close" msgid="9135220303720555525">"Pechar PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pantalla completa"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover pantalla superposta"</string> - <string name="pip_expand" msgid="7605396312689038178">"Despregar pantalla superposta"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Contraer pantalla superposta"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Preme "<annotation icon="home_icon">"INICIO"</annotation>" dúas veces para acceder aos controis"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-gu/strings_tv.xml b/libs/WindowManager/Shell/res/values-gu/strings_tv.xml index d9525910e4c6..6c1b9db73582 100644 --- a/libs/WindowManager/Shell/res/values-gu/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-gu/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ચિત્રમાં-ચિત્ર"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(કોઈ ટાઇટલ પ્રોગ્રામ નથી)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP બંધ કરો"</string> + <string name="pip_close" msgid="2955969519031223530">"બંધ કરો"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"પૂર્ણ સ્ક્રીન"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP ખસેડો"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP મોટી કરો"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP નાની કરો"</string> + <string name="pip_move" msgid="158770205886688553">"ખસેડો"</string> + <string name="pip_expand" msgid="1051966011679297308">"મોટું કરો"</string> + <string name="pip_collapse" msgid="3903295106641385962">"નાનું કરો"</string> <string name="pip_edu_text" msgid="3672999496647508701">" નિયંત્રણો માટે "<annotation icon="home_icon">" હોમ "</annotation>" બટન પર બે વાર દબાવો"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"ચિત્રમાં ચિત્ર મેનૂ."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"ડાબે ખસેડો"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"જમણે ખસેડો"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ઉપર ખસેડો"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"નીચે ખસેડો"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"થઈ ગયું"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-hi/strings_tv.xml b/libs/WindowManager/Shell/res/values-hi/strings_tv.xml index d897ac73f80d..cc62d69c29b2 100644 --- a/libs/WindowManager/Shell/res/values-hi/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-hi/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"पिक्चर में पिक्चर"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(कोई शीर्षक कार्यक्रम नहीं)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP बंद करें"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"फ़ुल स्क्रीन"</string> - <string name="pip_move" msgid="1544227837964635439">"पीआईपी को दूसरी जगह लेकर जाएं"</string> - <string name="pip_expand" msgid="7605396312689038178">"पीआईपी विंडो को बड़ा करें"</string> - <string name="pip_collapse" msgid="5732233773786896094">"पीआईपी विंडो को छोटा करें"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" कंट्रोल मेन्यू पर जाने के लिए, "<annotation icon="home_icon">" होम बटन"</annotation>" दो बार दबाएं"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-hr/strings_tv.xml b/libs/WindowManager/Shell/res/values-hr/strings_tv.xml index 8f5f3164c4d7..42eb1eef7a6b 100644 --- a/libs/WindowManager/Shell/res/values-hr/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-hr/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Slika u slici"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez naslova)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zatvori PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Cijeli zaslon"</string> - <string name="pip_move" msgid="1544227837964635439">"Premjesti PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Proširi PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Sažmi PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Dvaput pritisnite "<annotation icon="home_icon">"POČETNI ZASLON"</annotation>" za kontrole"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-hu/strings_tv.xml b/libs/WindowManager/Shell/res/values-hu/strings_tv.xml index fc8d79589121..5e065c2ad4e7 100644 --- a/libs/WindowManager/Shell/res/values-hu/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-hu/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Kép a képben"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Cím nélküli program)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP bezárása"</string> + <string name="pip_close" msgid="2955969519031223530">"Bezárás"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Teljes képernyő"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP áthelyezése"</string> - <string name="pip_expand" msgid="7605396312689038178">"Kép a képben kibontása"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Kép a képben összecsukása"</string> + <string name="pip_move" msgid="158770205886688553">"Áthelyezés"</string> + <string name="pip_expand" msgid="1051966011679297308">"Kibontás"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Összecsukás"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Vezérlők: "<annotation icon="home_icon">" KEZDŐKÉPERNYŐ "</annotation>" gomb kétszer megnyomva"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Kép a képben menü."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mozgatás balra"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mozgatás jobbra"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mozgatás felfelé"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mozgatás lefelé"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Kész"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-hy/strings_tv.xml b/libs/WindowManager/Shell/res/values-hy/strings_tv.xml index f5665b8dd166..0a0892bc0498 100644 --- a/libs/WindowManager/Shell/res/values-hy/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-hy/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Նկար նկարի մեջ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Առանց վերնագրի ծրագիր)"</string> - <string name="pip_close" msgid="9135220303720555525">"Փակել PIP-ն"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Լիէկրան"</string> - <string name="pip_move" msgid="1544227837964635439">"Տեղափոխել PIP-ը"</string> - <string name="pip_expand" msgid="7605396312689038178">"Ծավալել PIP-ը"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Ծալել PIP-ը"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Կարգավորումների համար կրկնակի սեղմեք "<annotation icon="home_icon">"ԳԼԽԱՎՈՐ ԷԿՐԱՆ"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-in/strings_tv.xml b/libs/WindowManager/Shell/res/values-in/strings_tv.xml index a1535653f679..b04fee847a3c 100644 --- a/libs/WindowManager/Shell/res/values-in/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-in/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-Picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program tanpa judul)"</string> - <string name="pip_close" msgid="9135220303720555525">"Tutup PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Layar penuh"</string> - <string name="pip_move" msgid="1544227837964635439">"Pindahkan PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Luaskan PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Ciutkan PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Tekan dua kali "<annotation icon="home_icon">" HOME "</annotation>" untuk membuka kontrol"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-is/strings_tv.xml b/libs/WindowManager/Shell/res/values-is/strings_tv.xml index 70ca1afe3aea..661832afdf55 100644 --- a/libs/WindowManager/Shell/res/values-is/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-is/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Mynd í mynd"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Efni án titils)"</string> - <string name="pip_close" msgid="9135220303720555525">"Loka mynd í mynd"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Allur skjárinn"</string> - <string name="pip_move" msgid="1544227837964635439">"Færa innfellda mynd"</string> - <string name="pip_expand" msgid="7605396312689038178">"Stækka innfellda mynd"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Minnka innfellda mynd"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Ýttu tvisvar á "<annotation icon="home_icon">" HEIM "</annotation>" til að opna stillingar"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-it/strings_tv.xml b/libs/WindowManager/Shell/res/values-it/strings_tv.xml index cda627517872..a48516f2588e 100644 --- a/libs/WindowManager/Shell/res/values-it/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-it/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture in picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programma senza titolo)"</string> - <string name="pip_close" msgid="9135220303720555525">"Chiudi PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Chiudi"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Schermo intero"</string> - <string name="pip_move" msgid="1544227837964635439">"Sposta PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Espandi PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Comprimi PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Sposta"</string> + <string name="pip_expand" msgid="1051966011679297308">"Espandi"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Comprimi"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Premi due volte "<annotation icon="home_icon">" HOME "</annotation>" per aprire i controlli"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu Picture in picture."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Sposta a sinistra"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Sposta a destra"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Sposta su"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Sposta giù"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Fine"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-iw/strings_tv.xml b/libs/WindowManager/Shell/res/values-iw/strings_tv.xml index 30ce97b998ca..2af1896d3c67 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"תמונה בתוך תמונה"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(תוכנית ללא כותרת)"</string> - <string name="pip_close" msgid="9135220303720555525">"סגירת PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"סגירה"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"מסך מלא"</string> - <string name="pip_move" msgid="1544227837964635439">"העברת תמונה בתוך תמונה (PIP)"</string> - <string name="pip_expand" msgid="7605396312689038178">"הרחבת חלון תמונה-בתוך-תמונה"</string> - <string name="pip_collapse" msgid="5732233773786896094">"כיווץ של חלון תמונה-בתוך-תמונה"</string> + <string name="pip_move" msgid="158770205886688553">"העברה"</string> + <string name="pip_expand" msgid="1051966011679297308">"הרחבה"</string> + <string name="pip_collapse" msgid="3903295106641385962">"כיווץ"</string> <string name="pip_edu_text" msgid="3672999496647508701">" לחיצה כפולה על "<annotation icon="home_icon">" הלחצן הראשי "</annotation>" תציג את אמצעי הבקרה"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"תפריט \'תמונה בתוך תמונה\'."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"הזזה שמאלה"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"הזזה ימינה"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"הזזה למעלה"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"הזזה למטה"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"סיום"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ja/strings_tv.xml b/libs/WindowManager/Shell/res/values-ja/strings_tv.xml index e58e7bf6fabc..bc7dcb7aa029 100644 --- a/libs/WindowManager/Shell/res/values-ja/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ja/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ピクチャー イン ピクチャー"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(無題の番組)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP を閉じる"</string> + <string name="pip_close" msgid="2955969519031223530">"閉じる"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"全画面表示"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP を移動"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP を開く"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP を閉じる"</string> + <string name="pip_move" msgid="158770205886688553">"移動"</string> + <string name="pip_expand" msgid="1051966011679297308">"開く"</string> + <string name="pip_collapse" msgid="3903295106641385962">"閉じる"</string> <string name="pip_edu_text" msgid="3672999496647508701">" コントロールにアクセス: "<annotation icon="home_icon">" ホーム "</annotation>" を 2 回押します"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"ピクチャー イン ピクチャーのメニューです。"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"左に移動"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"右に移動"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"上に移動"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"下に移動"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"完了"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ka/strings_tv.xml b/libs/WindowManager/Shell/res/values-ka/strings_tv.xml index b09686646c8b..898dac2aca88 100644 --- a/libs/WindowManager/Shell/res/values-ka/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ka/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ეკრანი ეკრანში"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(პროგრამის სათაურის გარეშე)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP-ის დახურვა"</string> + <string name="pip_close" msgid="2955969519031223530">"დახურვა"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"სრულ ეკრანზე"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP გადატანა"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP-ის გაშლა"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP-ის ჩაკეცვა"</string> + <string name="pip_move" msgid="158770205886688553">"გადაადგილება"</string> + <string name="pip_expand" msgid="1051966011679297308">"გაშლა"</string> + <string name="pip_collapse" msgid="3903295106641385962">"ჩაკეცვა"</string> <string name="pip_edu_text" msgid="3672999496647508701">" მართვის საშუალებებზე წვდომისთვის ორმაგად დააჭირეთ "<annotation icon="home_icon">" მთავარ ღილაკს "</annotation></string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"მენიუ „ეკრანი ეკრანში“."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"მარცხნივ გადატანა"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"მარჯვნივ გადატანა"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ზემოთ გადატანა"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"ქვემოთ გადატანა"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"მზადაა"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-kk/strings_tv.xml b/libs/WindowManager/Shell/res/values-kk/strings_tv.xml index 7bade0dff0d9..cdf564fb4ca0 100644 --- a/libs/WindowManager/Shell/res/values-kk/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-kk/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Суреттегі сурет"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Атаусыз бағдарлама)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP жабу"</string> + <string name="pip_close" msgid="2955969519031223530">"Жабу"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Толық экран"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP клипін жылжыту"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP терезесін жаю"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP терезесін жию"</string> + <string name="pip_move" msgid="158770205886688553">"Жылжыту"</string> + <string name="pip_expand" msgid="1051966011679297308">"Жаю"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Жию"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Басқару элементтері: "<annotation icon="home_icon">" НЕГІЗГІ ЭКРАН "</annotation>" түймесін екі рет басыңыз."</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"\"Сурет ішіндегі сурет\" мәзірі."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Солға жылжыту"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Оңға жылжыту"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Жоғары жылжыту"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Төмен жылжыту"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Дайын"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-km/strings_tv.xml b/libs/WindowManager/Shell/res/values-km/strings_tv.xml index 721be1fc1650..a2911d37b3cd 100644 --- a/libs/WindowManager/Shell/res/values-km/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-km/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"រូបក្នុងរូប"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(កម្មវិធីគ្មានចំណងជើង)"</string> - <string name="pip_close" msgid="9135220303720555525">"បិទ PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"ពេញអេក្រង់"</string> - <string name="pip_move" msgid="1544227837964635439">"ផ្លាស់ទី PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"ពង្រីក PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"បង្រួម PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" ចុចពីរដងលើ"<annotation icon="home_icon">"ប៊ូតុងដើម"</annotation>" ដើម្បីបើកផ្ទាំងគ្រប់គ្រង"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-kn/strings_tv.xml b/libs/WindowManager/Shell/res/values-kn/strings_tv.xml index 8310c8a1169c..2f0bf96a08c5 100644 --- a/libs/WindowManager/Shell/res/values-kn/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-kn/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ಶೀರ್ಷಿಕೆ ರಹಿತ ಕಾರ್ಯಕ್ರಮ)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP ಮುಚ್ಚಿ"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"ಪೂರ್ಣ ಪರದೆ"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP ಅನ್ನು ಸರಿಸಿ"</string> - <string name="pip_expand" msgid="7605396312689038178">"ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರವನ್ನು ವಿಸ್ತರಿಸಿ"</string> - <string name="pip_collapse" msgid="5732233773786896094">"ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರವನ್ನು ಕುಗ್ಗಿಸಿ"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" ಕಂಟ್ರೋಲ್ಗಳಿಗಾಗಿ "<annotation icon="home_icon">" ಹೋಮ್ "</annotation>" ಅನ್ನು ಎರಡು ಬಾರಿ ಒತ್ತಿ"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ko/strings_tv.xml b/libs/WindowManager/Shell/res/values-ko/strings_tv.xml index a3e055a515a1..e2aa7dc031a6 100644 --- a/libs/WindowManager/Shell/res/values-ko/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ko/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"PIP 모드"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(제목 없는 프로그램)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP 닫기"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"전체화면"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP 이동"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP 펼치기"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP 접기"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" 제어 메뉴에 액세스하려면 "<annotation icon="home_icon">" 홈 "</annotation>"을 두 번 누르세요."</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ky/strings_tv.xml b/libs/WindowManager/Shell/res/values-ky/strings_tv.xml index 887ac52c8e43..706641a03c9a 100644 --- a/libs/WindowManager/Shell/res/values-ky/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ky/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Сүрөттөгү сүрөт"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Аталышы жок программа)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP\'ти жабуу"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Толук экран"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP\'ти жылдыруу"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP\'ти жайып көрсөтүү"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP\'ти жыйыштыруу"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Башкаруу элементтерин ачуу үчүн "<annotation icon="home_icon">" БАШКЫ БЕТ "</annotation>" баскычын эки жолу басыңыз"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-lo/strings_tv.xml b/libs/WindowManager/Shell/res/values-lo/strings_tv.xml index 91c4a033356d..d75453f83220 100644 --- a/libs/WindowManager/Shell/res/values-lo/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-lo/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ການສະແດງຜົນຊ້ອນກັນ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ໂປຣແກຣມບໍ່ມີຊື່)"</string> - <string name="pip_close" msgid="9135220303720555525">"ປິດ PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"ເຕັມໜ້າຈໍ"</string> - <string name="pip_move" msgid="1544227837964635439">"ຍ້າຍ PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"ຂະຫຍາຍ PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"ຫຍໍ້ PIP ລົງ"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" ກົດ "<annotation icon="home_icon">" HOME "</annotation>" ສອງເທື່ອສຳລັບການຄວບຄຸມ"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-lt/strings_tv.xml b/libs/WindowManager/Shell/res/values-lt/strings_tv.xml index 04265ca01b48..52017dca2b94 100644 --- a/libs/WindowManager/Shell/res/values-lt/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-lt/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Vaizdas vaizde"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programa be pavadinimo)"</string> - <string name="pip_close" msgid="9135220303720555525">"Uždaryti PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Uždaryti"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Visas ekranas"</string> - <string name="pip_move" msgid="1544227837964635439">"Perkelti PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Iškleisti PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Sutraukti PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Perkelti"</string> + <string name="pip_expand" msgid="1051966011679297308">"Išskleisti"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Sutraukti"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Jei reikia valdiklių, dukart paspauskite "<annotation icon="home_icon">"PAGRINDINIS"</annotation></string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Vaizdo vaizde meniu."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Perkelti kairėn"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Perkelti dešinėn"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Perkelti aukštyn"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Perkelti žemyn"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Atlikta"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-lv/strings_tv.xml b/libs/WindowManager/Shell/res/values-lv/strings_tv.xml index 8c6191e00833..d0e017e10fb5 100644 --- a/libs/WindowManager/Shell/res/values-lv/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-lv/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Attēls attēlā"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programma bez nosaukuma)"</string> - <string name="pip_close" msgid="9135220303720555525">"Aizvērt PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pilnekrāna režīms"</string> - <string name="pip_move" msgid="1544227837964635439">"Pārvietot attēlu attēlā"</string> - <string name="pip_expand" msgid="7605396312689038178">"Izvērst “Attēls attēlā” logu"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Sakļaut “Attēls attēlā” logu"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Atvērt vadīklas: divreiz nospiediet pogu "<annotation icon="home_icon">"SĀKUMS"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-mk/strings_tv.xml b/libs/WindowManager/Shell/res/values-mk/strings_tv.xml index beef1fef862b..21293223b882 100644 --- a/libs/WindowManager/Shell/res/values-mk/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-mk/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Слика во слика"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Програма без наслов)"</string> - <string name="pip_close" msgid="9135220303720555525">"Затвори PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Затвори"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Цел екран"</string> - <string name="pip_move" msgid="1544227837964635439">"Премести PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Прошири ја сликата во слика"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Собери ја сликата во слика"</string> + <string name="pip_move" msgid="158770205886688553">"Премести"</string> + <string name="pip_expand" msgid="1051966011679297308">"Прошири"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Собери"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Притиснете двапати на "<annotation icon="home_icon">" HOME "</annotation>" за контроли"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Мени за „Слика во слика“."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Премести налево"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Премести надесно"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Премести нагоре"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Премести надолу"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Готово"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ml/strings_tv.xml b/libs/WindowManager/Shell/res/values-ml/strings_tv.xml index c2a532d09647..549e39b21101 100644 --- a/libs/WindowManager/Shell/res/values-ml/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ml/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ചിത്രത്തിനുള്ളിൽ ചിത്രം"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(പേരില്ലാത്ത പ്രോഗ്രാം)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP അടയ്ക്കുക"</string> + <string name="pip_close" msgid="2955969519031223530">"അടയ്ക്കുക"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"പൂര്ണ്ണ സ്ക്രീന്"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP നീക്കുക"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP വികസിപ്പിക്കുക"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP ചുരുക്കുക"</string> + <string name="pip_move" msgid="158770205886688553">"നീക്കുക"</string> + <string name="pip_expand" msgid="1051966011679297308">"വികസിപ്പിക്കുക"</string> + <string name="pip_collapse" msgid="3903295106641385962">"ചുരുക്കുക"</string> <string name="pip_edu_text" msgid="3672999496647508701">" നിയന്ത്രണങ്ങൾക്കായി "<annotation icon="home_icon">" ഹോം "</annotation>" രണ്ട് തവണ അമർത്തുക"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"ചിത്രത്തിനുള്ളിൽ ചിത്രം മെനു."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"ഇടത്തേക്ക് നീക്കുക"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"വലത്തേക്ക് നീക്കുക"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"മുകളിലേക്ക് നീക്കുക"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"താഴേക്ക് നീക്കുക"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"പൂർത്തിയായി"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-mn/strings_tv.xml b/libs/WindowManager/Shell/res/values-mn/strings_tv.xml index bf8c59b57359..9a85d96ca602 100644 --- a/libs/WindowManager/Shell/res/values-mn/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-mn/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Дэлгэц доторх дэлгэц"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Гарчиггүй хөтөлбөр)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP-г хаах"</string> + <string name="pip_close" msgid="2955969519031223530">"Хаах"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Бүтэн дэлгэц"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP-г зөөх"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP-г дэлгэх"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP-г хураах"</string> + <string name="pip_move" msgid="158770205886688553">"Зөөх"</string> + <string name="pip_expand" msgid="1051966011679297308">"Дэлгэх"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Хураах"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Хяналтад хандах бол "<annotation icon="home_icon">" HOME "</annotation>" дээр хоёр дарна уу"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Дэлгэцэн доторх дэлгэцийн цэс."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Зүүн тийш зөөх"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Баруун тийш зөөх"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Дээш зөөх"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Доош зөөх"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Болсон"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-mr/strings_tv.xml b/libs/WindowManager/Shell/res/values-mr/strings_tv.xml index 5d519b7afe9a..a9779b3a3e89 100644 --- a/libs/WindowManager/Shell/res/values-mr/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-mr/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"चित्रात-चित्र"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(शीर्षक नसलेला कार्यक्रम)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP बंद करा"</string> + <string name="pip_close" msgid="2955969519031223530">"बंद करा"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"फुल स्क्रीन"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP हलवा"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP चा विस्तार करा"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP कोलॅप्स करा"</string> + <string name="pip_move" msgid="158770205886688553">"हलवा"</string> + <string name="pip_expand" msgid="1051966011679297308">"विस्तार करा"</string> + <string name="pip_collapse" msgid="3903295106641385962">"कोलॅप्स करा"</string> <string name="pip_edu_text" msgid="3672999496647508701">" नियंत्रणांसाठी "<annotation icon="home_icon">" होम "</annotation>" दोनदा दाबा"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"चित्रात-चित्र मेनू."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"डावीकडे हलवा"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"उजवीकडे हलवा"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"वर हलवा"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"खाली हलवा"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"पूर्ण झाले"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ms/strings_tv.xml b/libs/WindowManager/Shell/res/values-ms/strings_tv.xml index 08642c47c91a..8fe992d9f3b9 100644 --- a/libs/WindowManager/Shell/res/values-ms/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ms/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Gambar dalam Gambar"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program tiada tajuk)"</string> - <string name="pip_close" msgid="9135220303720555525">"Tutup PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Tutup"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Skrin penuh"</string> - <string name="pip_move" msgid="1544227837964635439">"Alihkan PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Kembangkan PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Kuncupkan PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Alih"</string> + <string name="pip_expand" msgid="1051966011679297308">"Kembangkan"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Kuncupkan"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Tekan dua kali "<annotation icon="home_icon">" LAMAN UTAMA "</annotation>" untuk mengakses kawalan"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu Gambar dalam Gambar."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Alih ke kiri"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Alih ke kanan"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Alih ke atas"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Alih ke bawah"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Selesai"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-my/strings_tv.xml b/libs/WindowManager/Shell/res/values-my/strings_tv.xml index e01daee115ca..04d27411d673 100644 --- a/libs/WindowManager/Shell/res/values-my/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-my/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"နှစ်ခုထပ်၍ကြည့်ခြင်း"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ခေါင်းစဉ်မဲ့ အစီအစဉ်)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP ကိုပိတ်ပါ"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"မျက်နှာပြင် အပြည့်"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP ရွှေ့ရန်"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP ကို ချဲ့ရန်"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP ကို လျှော့ပြပါ"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" ထိန်းချုပ်မှုအတွက် "<annotation icon="home_icon">" ပင်မခလုတ် "</annotation>" နှစ်ချက်နှိပ်ပါ"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-nb/strings_tv.xml b/libs/WindowManager/Shell/res/values-nb/strings_tv.xml index 65ed0b7f5bff..ed135c526f0a 100644 --- a/libs/WindowManager/Shell/res/values-nb/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-nb/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Bilde-i-bilde"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program uten tittel)"</string> - <string name="pip_close" msgid="9135220303720555525">"Lukk PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Fullskjerm"</string> - <string name="pip_move" msgid="1544227837964635439">"Flytt BIB"</string> - <string name="pip_expand" msgid="7605396312689038178">"Vis BIB"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Skjul BIB"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Dobbelttrykk på "<annotation icon="home_icon">"HJEM"</annotation>" for å åpne kontroller"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ne/strings_tv.xml b/libs/WindowManager/Shell/res/values-ne/strings_tv.xml index d33fed67efb6..7cbf9e294e7b 100644 --- a/libs/WindowManager/Shell/res/values-ne/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ne/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-Picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(शीर्षकविहीन कार्यक्रम)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP लाई बन्द गर्नुहोस्"</string> + <string name="pip_close" msgid="2955969519031223530">"बन्द गर्नुहोस्"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"फुल स्क्रिन"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP सार्नुहोस्"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP विन्डो एक्स्पान्ड गर्नु…"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP विन्डो कोल्याप्स गर्नुहोस्"</string> + <string name="pip_move" msgid="158770205886688553">"सार्नुहोस्"</string> + <string name="pip_expand" msgid="1051966011679297308">"एक्स्पान्ड गर्नुहोस्"</string> + <string name="pip_collapse" msgid="3903295106641385962">"कोल्याप्स गर्नुहोस्"</string> <string name="pip_edu_text" msgid="3672999496647508701">" कन्ट्रोल मेनु खोल्न "<annotation icon="home_icon">" होम "</annotation>" बटन दुई पटक थिच्नुहोस्"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"\"picture-in-picture\" मेनु।"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"बायाँतिर सार्नुहोस्"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"दायाँतिर सार्नुहोस्"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"माथितिर सार्नुहोस्"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"तलतिर सार्नुहोस्"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"सम्पन्न भयो"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-nl/strings_tv.xml b/libs/WindowManager/Shell/res/values-nl/strings_tv.xml index 9763c5665ab2..2deaeddc4080 100644 --- a/libs/WindowManager/Shell/res/values-nl/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-nl/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Scherm-in-scherm"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Naamloos programma)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP sluiten"</string> + <string name="pip_close" msgid="2955969519031223530">"Sluiten"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Volledig scherm"</string> - <string name="pip_move" msgid="1544227837964635439">"SIS verplaatsen"</string> - <string name="pip_expand" msgid="7605396312689038178">"SIS uitvouwen"</string> - <string name="pip_collapse" msgid="5732233773786896094">"SIS samenvouwen"</string> + <string name="pip_move" msgid="158770205886688553">"Verplaatsen"</string> + <string name="pip_expand" msgid="1051966011679297308">"Uitvouwen"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Samenvouwen"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Druk twee keer op "<annotation icon="home_icon">" HOME "</annotation>" voor bedieningselementen"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Scherm-in-scherm-menu."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Naar links verplaatsen"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Naar rechts verplaatsen"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Omhoog verplaatsen"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Omlaag verplaatsen"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Klaar"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-or/strings_tv.xml b/libs/WindowManager/Shell/res/values-or/strings_tv.xml index e0344855bd1f..bf86592c7bb1 100644 --- a/libs/WindowManager/Shell/res/values-or/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-or/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ପିକଚର୍-ଇନ୍-ପିକଚର୍"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(କୌଣସି ଟାଇଟଲ୍ ପ୍ରୋଗ୍ରାମ୍ ନାହିଁ)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP ବନ୍ଦ କରନ୍ତୁ"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍"</string> - <string name="pip_move" msgid="1544227837964635439">"PIPକୁ ମୁଭ କରନ୍ତୁ"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIPକୁ ବିସ୍ତାର କରନ୍ତୁ"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIPକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ପାଇଁ "<annotation icon="home_icon">" ହୋମ ବଟନ "</annotation>"କୁ ଦୁଇଥର ଦବାନ୍ତୁ"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pa/strings_tv.xml b/libs/WindowManager/Shell/res/values-pa/strings_tv.xml index 9c01ac3f3cc0..a1edde738775 100644 --- a/libs/WindowManager/Shell/res/values-pa/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-pa/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ਸਿਰਲੇਖ-ਰਹਿਤ ਪ੍ਰੋਗਰਾਮ)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP ਬੰਦ ਕਰੋ"</string> + <string name="pip_close" msgid="2955969519031223530">"ਬੰਦ ਕਰੋ"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP ਨੂੰ ਲਿਜਾਓ"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP ਨੂੰ ਸਮੇਟੋ"</string> + <string name="pip_move" msgid="158770205886688553">"ਲਿਜਾਓ"</string> + <string name="pip_expand" msgid="1051966011679297308">"ਵਿਸਤਾਰ ਕਰੋ"</string> + <string name="pip_collapse" msgid="3903295106641385962">"ਸਮੇਟੋ"</string> <string name="pip_edu_text" msgid="3672999496647508701">" ਕੰਟਰੋਲਾਂ ਲਈ "<annotation icon="home_icon">" ਹੋਮ ਬਟਨ "</annotation>" ਨੂੰ ਦੋ ਵਾਰ ਦਬਾਓ"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ ਮੀਨੂ।"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"ਖੱਬੇ ਲਿਜਾਓ"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"ਸੱਜੇ ਲਿਜਾਓ"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ਉੱਪਰ ਲਿਜਾਓ"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"ਹੇਠਾਂ ਲਿਜਾਓ"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"ਹੋ ਗਿਆ"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-pl/strings_tv.xml b/libs/WindowManager/Shell/res/values-pl/strings_tv.xml index b922e2d5a6ba..d024e1312954 100644 --- a/libs/WindowManager/Shell/res/values-pl/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-pl/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Obraz w obrazie"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez tytułu)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zamknij PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Pełny ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"Przenieś PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Rozwiń PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Zwiń PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Naciśnij dwukrotnie "<annotation icon="home_icon">"EKRAN GŁÓWNY"</annotation>", aby wyświetlić ustawienia"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings_tv.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings_tv.xml index cc4eb3c32c1f..14d1c34fd3e8 100644 --- a/libs/WindowManager/Shell/res/values-pt-rBR/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(programa sem título)"</string> - <string name="pip_close" msgid="9135220303720555525">"Fechar PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Fechar"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Tela cheia"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover picture-in-picture"</string> - <string name="pip_expand" msgid="7605396312689038178">"Abrir picture-in-picture"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Fechar picture-in-picture"</string> + <string name="pip_move" msgid="158770205886688553">"Mover"</string> + <string name="pip_expand" msgid="1051966011679297308">"Abrir"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Fechar"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Pressione o botão "<annotation icon="home_icon">"home"</annotation>" duas vezes para acessar os controles"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu do picture-in-picture"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mover para a esquerda"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mover para a direita"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mover para cima"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mover para baixo"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Concluído"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings_tv.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings_tv.xml index c4ae78d89ba8..1ada4508714a 100644 --- a/libs/WindowManager/Shell/res/values-pt-rPT/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Ecrã no ecrã"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Sem título do programa)"</string> - <string name="pip_close" msgid="9135220303720555525">"Fechar PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Fechar"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Ecrã inteiro"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover Ecrã no ecrã"</string> - <string name="pip_expand" msgid="7605396312689038178">"Expandir Ecrã no ecrã"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Reduzir Ecrã no ecrã"</string> + <string name="pip_move" msgid="158770205886688553">"Mover"</string> + <string name="pip_expand" msgid="1051966011679297308">"Expandir"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Reduzir"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Prima duas vezes "<annotation icon="home_icon">" PÁGINA INICIAL "</annotation>" para controlos"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu de ecrã no ecrã."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mover para a esquerda"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mover para a direita"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mover para cima"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mover para baixo"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Concluído"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt/strings_tv.xml b/libs/WindowManager/Shell/res/values-pt/strings_tv.xml index cc4eb3c32c1f..14d1c34fd3e8 100644 --- a/libs/WindowManager/Shell/res/values-pt/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-pt/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(programa sem título)"</string> - <string name="pip_close" msgid="9135220303720555525">"Fechar PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Fechar"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Tela cheia"</string> - <string name="pip_move" msgid="1544227837964635439">"Mover picture-in-picture"</string> - <string name="pip_expand" msgid="7605396312689038178">"Abrir picture-in-picture"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Fechar picture-in-picture"</string> + <string name="pip_move" msgid="158770205886688553">"Mover"</string> + <string name="pip_expand" msgid="1051966011679297308">"Abrir"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Fechar"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Pressione o botão "<annotation icon="home_icon">"home"</annotation>" duas vezes para acessar os controles"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu do picture-in-picture"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mover para a esquerda"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mover para a direita"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mover para cima"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mover para baixo"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Concluído"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ro/strings_tv.xml b/libs/WindowManager/Shell/res/values-ro/strings_tv.xml index 86a30f49df15..56dadb2e5e65 100644 --- a/libs/WindowManager/Shell/res/values-ro/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ro/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program fără titlu)"</string> - <string name="pip_close" msgid="9135220303720555525">"Închideți PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Închideți"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Ecran complet"</string> - <string name="pip_move" msgid="1544227837964635439">"Mutați fereastra PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Extindeți fereastra PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Restrângeți fereastra PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Mutați"</string> + <string name="pip_expand" msgid="1051966011679297308">"Extindeți"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Restrângeți"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Apăsați de două ori "<annotation icon="home_icon">"butonul ecran de pornire"</annotation>" pentru comenzi"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Meniu picture-in-picture."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Mutați spre stânga"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Mutați spre dreapta"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Mutați în sus"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Mutați în jos"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Gata"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ru/strings_tv.xml b/libs/WindowManager/Shell/res/values-ru/strings_tv.xml index 08623e1e69c5..e7f55ec1bc57 100644 --- a/libs/WindowManager/Shell/res/values-ru/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ru/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Картинка в картинке"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Без названия)"</string> - <string name="pip_close" msgid="9135220303720555525">"\"Кадр в кадре\" – выйти"</string> + <string name="pip_close" msgid="2955969519031223530">"Закрыть"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Во весь экран"</string> - <string name="pip_move" msgid="1544227837964635439">"Переместить PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Развернуть PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Свернуть PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Переместить"</string> + <string name="pip_expand" msgid="1051966011679297308">"Развернуть"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Свернуть"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Элементы управления: дважды нажмите "<annotation icon="home_icon">" кнопку главного экрана "</annotation></string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Меню \"Картинка в картинке\"."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Переместить влево"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Переместить вправо"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Переместить вверх"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Переместить вниз"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Готово"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-si/strings_tv.xml b/libs/WindowManager/Shell/res/values-si/strings_tv.xml index fbb0ebba0623..5478ce5d3d40 100644 --- a/libs/WindowManager/Shell/res/values-si/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-si/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"පින්තූරය-තුළ-පින්තූරය"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(මාතෘකාවක් නැති වැඩසටහන)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP වසන්න"</string> + <string name="pip_close" msgid="2955969519031223530">"වසන්න"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"සම්පූර්ණ තිරය"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP ගෙන යන්න"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP දිග හරින්න"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP හකුළන්න"</string> + <string name="pip_move" msgid="158770205886688553">"ගෙන යන්න"</string> + <string name="pip_expand" msgid="1051966011679297308">"දිග හරින්න"</string> + <string name="pip_collapse" msgid="3903295106641385962">"හකුළන්න"</string> <string name="pip_edu_text" msgid="3672999496647508701">" පාලන සඳහා "<annotation icon="home_icon">" මුල් පිටුව "</annotation>" දෙවරක් ඔබන්න"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"පින්තූරය තුළ පින්තූරය මෙනුව"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"වමට ගෙන යන්න"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"දකුණට ගෙන යන්න"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"ඉහළට ගෙන යන්න"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"පහළට ගෙන යන්න"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"නිමයි"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-sk/strings_tv.xml b/libs/WindowManager/Shell/res/values-sk/strings_tv.xml index 81cb0eafc759..1df43afca2da 100644 --- a/libs/WindowManager/Shell/res/values-sk/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sk/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Obraz v obraze"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez názvu)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zavrieť režim PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Zavrieť"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Celá obrazovka"</string> - <string name="pip_move" msgid="1544227837964635439">"Presunúť obraz v obraze"</string> - <string name="pip_expand" msgid="7605396312689038178">"Rozbaliť obraz v obraze"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Zbaliť obraz v obraze"</string> + <string name="pip_move" msgid="158770205886688553">"Presunúť"</string> + <string name="pip_expand" msgid="1051966011679297308">"Rozbaliť"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Zbaliť"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Ovládanie zobraz. dvoj. stlač. "<annotation icon="home_icon">" TLAČIDLA PLOCHY "</annotation></string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Ponuka obrazu v obraze."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Posunúť doľava"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Posunúť doprava"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Posunúť nahor"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Posunúť nadol"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Hotovo"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-sl/strings_tv.xml b/libs/WindowManager/Shell/res/values-sl/strings_tv.xml index 060aaa0ce647..16331a69afcf 100644 --- a/libs/WindowManager/Shell/res/values-sl/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sl/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Slika v sliki"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program brez naslova)"</string> - <string name="pip_close" msgid="9135220303720555525">"Zapri način PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Celozaslonsko"</string> - <string name="pip_move" msgid="1544227837964635439">"Premakni sliko v sliki"</string> - <string name="pip_expand" msgid="7605396312689038178">"Razširi sliko v sliki"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Strni sliko v sliki"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Za kontrolnike dvakrat pritisnite gumb za "<annotation icon="home_icon">" ZAČETNI ZASLON "</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sq/strings_tv.xml b/libs/WindowManager/Shell/res/values-sq/strings_tv.xml index 9bfdb6a3edd8..a229d2dea9e4 100644 --- a/libs/WindowManager/Shell/res/values-sq/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sq/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Figurë brenda figurës"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program pa titull)"</string> - <string name="pip_close" msgid="9135220303720555525">"Mbyll PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Ekrani i plotë"</string> - <string name="pip_move" msgid="1544227837964635439">"Zhvendos PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Zgjero PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Palos PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Trokit dy herë "<annotation icon="home_icon">" KREU "</annotation>" për kontrollet"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sr/strings_tv.xml b/libs/WindowManager/Shell/res/values-sr/strings_tv.xml index 6bc5c87bab48..7491876a1c19 100644 --- a/libs/WindowManager/Shell/res/values-sr/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sr/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Слика у слици"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Програм без наслова)"</string> - <string name="pip_close" msgid="9135220303720555525">"Затвори PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"Цео екран"</string> - <string name="pip_move" msgid="1544227837964635439">"Премести слику у слици"</string> - <string name="pip_expand" msgid="7605396312689038178">"Прошири слику у слици"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Скупи слику у слици"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Двапут притисните "<annotation icon="home_icon">" HOME "</annotation>" за контроле"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sv/strings_tv.xml b/libs/WindowManager/Shell/res/values-sv/strings_tv.xml index b3465ab1db85..d3a9c3de66db 100644 --- a/libs/WindowManager/Shell/res/values-sv/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sv/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Bild-i-bild"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Namnlöst program)"</string> - <string name="pip_close" msgid="9135220303720555525">"Stäng PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Stäng"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Helskärm"</string> - <string name="pip_move" msgid="1544227837964635439">"Flytta BIB"</string> - <string name="pip_expand" msgid="7605396312689038178">"Utöka bild-i-bild"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Komprimera bild-i-bild"</string> + <string name="pip_move" msgid="158770205886688553">"Flytta"</string> + <string name="pip_expand" msgid="1051966011679297308">"Utöka"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Komprimera"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Tryck snabbt två gånger på "<annotation icon="home_icon">" HEM "</annotation>" för kontroller"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Bild-i-bild-meny."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Flytta åt vänster"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Flytta åt höger"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Flytta uppåt"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Flytta nedåt"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Klar"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-sw/strings_tv.xml b/libs/WindowManager/Shell/res/values-sw/strings_tv.xml index baff49ed821a..7b9a310ff0b6 100644 --- a/libs/WindowManager/Shell/res/values-sw/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-sw/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pachika Picha Ndani ya Picha Nyingine"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Programu isiyo na jina)"</string> - <string name="pip_close" msgid="9135220303720555525">"Funga PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Funga"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Skrini nzima"</string> - <string name="pip_move" msgid="1544227837964635439">"Kuhamisha PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Panua PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Kunja PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Hamisha"</string> + <string name="pip_expand" msgid="1051966011679297308">"Panua"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Kunja"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Bonyeza mara mbili kitufe cha "<annotation icon="home_icon">" UKURASA WA KWANZA "</annotation>" kupata vidhibiti"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menyu ya kipengele cha kupachika picha ndani ya picha nyingine."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Sogeza kushoto"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Sogeza kulia"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Sogeza juu"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Sogeza chini"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Imemaliza"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ta/strings_tv.xml b/libs/WindowManager/Shell/res/values-ta/strings_tv.xml index 4439e299c919..e201401e2e35 100644 --- a/libs/WindowManager/Shell/res/values-ta/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ta/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"பிக்ச்சர்-இன்-பிக்ச்சர்"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(தலைப்பு இல்லை)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIPஐ மூடு"</string> + <string name="pip_close" msgid="2955969519031223530">"மூடுக"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"முழுத்திரை"</string> - <string name="pip_move" msgid="1544227837964635439">"PIPபை நகர்த்து"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIPபை விரிவாக்கு"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIPபைச் சுருக்கு"</string> + <string name="pip_move" msgid="158770205886688553">"நகர்த்து"</string> + <string name="pip_expand" msgid="1051966011679297308">"விரி"</string> + <string name="pip_collapse" msgid="3903295106641385962">"சுருக்கு"</string> <string name="pip_edu_text" msgid="3672999496647508701">" கட்டுப்பாடுகள்: "<annotation icon="home_icon">" முகப்பு "</annotation>" பட்டனை இருமுறை அழுத்துக"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"பிக்ச்சர்-இன்-பிக்ச்சர் மெனு."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"இடப்புறம் நகர்த்து"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"வலப்புறம் நகர்த்து"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"மேலே நகர்த்து"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"கீழே நகர்த்து"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"முடிந்தது"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-te/strings_tv.xml b/libs/WindowManager/Shell/res/values-te/strings_tv.xml index 35579346615f..6284d90cb11f 100644 --- a/libs/WindowManager/Shell/res/values-te/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-te/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"పిక్చర్-ఇన్-పిక్చర్"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(శీర్షిక లేని ప్రోగ్రామ్)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIPని మూసివేయి"</string> + <string name="pip_close" msgid="2955969519031223530">"మూసివేయండి"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"ఫుల్-స్క్రీన్"</string> - <string name="pip_move" msgid="1544227837964635439">"PIPను తరలించండి"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIPని విస్తరించండి"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIPని కుదించండి"</string> + <string name="pip_move" msgid="158770205886688553">"తరలించండి"</string> + <string name="pip_expand" msgid="1051966011679297308">"విస్తరించండి"</string> + <string name="pip_collapse" msgid="3903295106641385962">"కుదించండి"</string> <string name="pip_edu_text" msgid="3672999496647508701">" కంట్రోల్స్ కోసం "<annotation icon="home_icon">" HOME "</annotation>" బటన్ రెండుసార్లు నొక్కండి"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"పిక్చర్-ఇన్-పిక్చర్ మెనూ."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"ఎడమ వైపుగా జరపండి"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"కుడి వైపుగా జరపండి"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"పైకి జరపండి"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"కిందికి జరపండి"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"పూర్తయింది"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-th/strings_tv.xml b/libs/WindowManager/Shell/res/values-th/strings_tv.xml index 0a07d157ec6f..f379fad894de 100644 --- a/libs/WindowManager/Shell/res/values-th/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-th/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"การแสดงภาพซ้อนภาพ"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(ไม่มีชื่อรายการ)"</string> - <string name="pip_close" msgid="9135220303720555525">"ปิด PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"เต็มหน้าจอ"</string> - <string name="pip_move" msgid="1544227837964635439">"ย้าย PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"ขยาย PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"ยุบ PIP"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" กดปุ่ม "<annotation icon="home_icon">" หน้าแรก "</annotation>" สองครั้งเพื่อเปิดการควบคุม"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-tl/strings_tv.xml b/libs/WindowManager/Shell/res/values-tl/strings_tv.xml index 9a11a38fa492..4cc050bebe5b 100644 --- a/libs/WindowManager/Shell/res/values-tl/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-tl/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Picture-in-Picture"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Walang pamagat na programa)"</string> - <string name="pip_close" msgid="9135220303720555525">"Isara ang PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Isara"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Full screen"</string> - <string name="pip_move" msgid="1544227837964635439">"Ilipat ang PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"I-expand ang PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"I-collapse ang PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Ilipat"</string> + <string name="pip_expand" msgid="1051966011679297308">"I-expand"</string> + <string name="pip_collapse" msgid="3903295106641385962">"I-collapse"</string> <string name="pip_edu_text" msgid="3672999496647508701">" I-double press ang "<annotation icon="home_icon">" HOME "</annotation>" para sa mga kontrol"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Menu ng Picture-in-Picture."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Ilipat pakaliwa"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Ilipat pakanan"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Itaas"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Ibaba"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Tapos na"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-tr/strings_tv.xml b/libs/WindowManager/Shell/res/values-tr/strings_tv.xml index bf4bc6f1fff7..579d7ae56a94 100644 --- a/libs/WindowManager/Shell/res/values-tr/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-tr/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Pencere İçinde Pencere"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Başlıksız program)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP\'yi kapat"</string> + <string name="pip_close" msgid="2955969519031223530">"Kapat"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Tam ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP\'yi taşı"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP penceresini genişlet"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP penceresini daralt"</string> + <string name="pip_move" msgid="158770205886688553">"Taşı"</string> + <string name="pip_expand" msgid="1051966011679297308">"Genişlet"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Daralt"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Kontroller için "<annotation icon="home_icon">" ANA SAYFA "</annotation>"\'ya iki kez basın"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Pencere içinde pencere menüsü."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Sola taşı"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Sağa taşı"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Yukarı taşı"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Aşağı taşı"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Bitti"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-uk/strings_tv.xml b/libs/WindowManager/Shell/res/values-uk/strings_tv.xml index 7e9f54e68f54..4b2d9df48a72 100644 --- a/libs/WindowManager/Shell/res/values-uk/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-uk/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Картинка в картинці"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Програма без назви)"</string> - <string name="pip_close" msgid="9135220303720555525">"Закрити PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"На весь екран"</string> - <string name="pip_move" msgid="1544227837964635439">"Перемістити картинку в картинці"</string> - <string name="pip_expand" msgid="7605396312689038178">"Розгорнути картинку в картинці"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Згорнути картинку в картинці"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" Відкрити елементи керування: двічі натисніть "<annotation icon="home_icon">"HOME"</annotation></string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ur/strings_tv.xml b/libs/WindowManager/Shell/res/values-ur/strings_tv.xml index c2ef69ff1488..e83885772f2d 100644 --- a/libs/WindowManager/Shell/res/values-ur/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-ur/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"تصویر میں تصویر"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(بلا عنوان پروگرام)"</string> - <string name="pip_close" msgid="9135220303720555525">"PIP بند کریں"</string> + <string name="pip_close" msgid="2955969519031223530">"بند کریں"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"فُل اسکرین"</string> - <string name="pip_move" msgid="1544227837964635439">"PIP کو منتقل کریں"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP کو پھیلائیں"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP کو سکیڑیں"</string> + <string name="pip_move" msgid="158770205886688553">"منتقل کریں"</string> + <string name="pip_expand" msgid="1051966011679297308">"پھیلائیں"</string> + <string name="pip_collapse" msgid="3903295106641385962">"سکیڑیں"</string> <string name="pip_edu_text" msgid="3672999496647508701">" کنٹرولز کے لیے "<annotation icon="home_icon">"ہوم "</annotation>" بٹن کو دو بار دبائیں"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"تصویر میں تصویر کا مینو۔"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"دائیں منتقل کریں"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"بائیں منتقل کریں"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"اوپر منتقل کریں"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"نیچے منتقل کریں"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"ہو گیا"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-uz/strings_tv.xml b/libs/WindowManager/Shell/res/values-uz/strings_tv.xml index 9ab95c80aa25..da953356628c 100644 --- a/libs/WindowManager/Shell/res/values-uz/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-uz/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Tasvir ustida tasvir"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Nomsiz)"</string> - <string name="pip_close" msgid="9135220303720555525">"Kadr ichida kadr – chiqish"</string> + <string name="pip_close" msgid="2955969519031223530">"Yopish"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Butun ekran"</string> - <string name="pip_move" msgid="1544227837964635439">"PIPni siljitish"</string> - <string name="pip_expand" msgid="7605396312689038178">"PIP funksiyasini yoyish"</string> - <string name="pip_collapse" msgid="5732233773786896094">"PIP funksiyasini yopish"</string> + <string name="pip_move" msgid="158770205886688553">"Boshqa joyga olish"</string> + <string name="pip_expand" msgid="1051966011679297308">"Yoyish"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Yopish"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Boshqaruv uchun "<annotation icon="home_icon">"ASOSIY"</annotation>" tugmani ikki marta bosing"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Tasvir ustida tasvir menyusi."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Chapga olish"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Oʻngga olish"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Tepaga olish"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Pastga olish"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Tayyor"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-vi/strings_tv.xml b/libs/WindowManager/Shell/res/values-vi/strings_tv.xml index 146376d3cab6..1f9260fdcff0 100644 --- a/libs/WindowManager/Shell/res/values-vi/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-vi/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Hình trong hình"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Không có chương trình tiêu đề)"</string> - <string name="pip_close" msgid="9135220303720555525">"Đóng PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Đóng"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Toàn màn hình"</string> - <string name="pip_move" msgid="1544227837964635439">"Di chuyển PIP (Ảnh trong ảnh)"</string> - <string name="pip_expand" msgid="7605396312689038178">"Mở rộng PIP (Ảnh trong ảnh)"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Thu gọn PIP (Ảnh trong ảnh)"</string> + <string name="pip_move" msgid="158770205886688553">"Di chuyển"</string> + <string name="pip_expand" msgid="1051966011679297308">"Mở rộng"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Thu gọn"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Nhấn đúp vào nút "<annotation icon="home_icon">" MÀN HÌNH CHÍNH "</annotation>" để mở trình đơn điều khiển"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Trình đơn hình trong hình."</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Di chuyển sang trái"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Di chuyển sang phải"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Di chuyển lên"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Di chuyển xuống"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Xong"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings_tv.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings_tv.xml index 55407d2c699d..399d639fe70f 100644 --- a/libs/WindowManager/Shell/res/values-zh-rCN/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"画中画"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(节目没有标题)"</string> - <string name="pip_close" msgid="9135220303720555525">"关闭画中画"</string> + <string name="pip_close" msgid="2955969519031223530">"关闭"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"全屏"</string> - <string name="pip_move" msgid="1544227837964635439">"移动画中画窗口"</string> - <string name="pip_expand" msgid="7605396312689038178">"展开 PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"收起 PIP"</string> + <string name="pip_move" msgid="158770205886688553">"移动"</string> + <string name="pip_expand" msgid="1051966011679297308">"展开"</string> + <string name="pip_collapse" msgid="3903295106641385962">"收起"</string> <string name="pip_edu_text" msgid="3672999496647508701">" 按两次"<annotation icon="home_icon">"主屏幕"</annotation>"按钮可查看相关控件"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"画中画菜单。"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"左移"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"右移"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"上移"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"下移"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"完成"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings_tv.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings_tv.xml index 15e278d8ecc2..e3292a119547 100644 --- a/libs/WindowManager/Shell/res/values-zh-rHK/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"畫中畫"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(沒有標題的節目)"</string> - <string name="pip_close" msgid="9135220303720555525">"關閉 PIP"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"全螢幕"</string> - <string name="pip_move" msgid="1544227837964635439">"移動畫中畫"</string> - <string name="pip_expand" msgid="7605396312689038178">"展開畫中畫"</string> - <string name="pip_collapse" msgid="5732233773786896094">"收合畫中畫"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" 按兩下"<annotation icon="home_icon">" 主畫面按鈕"</annotation>"即可顯示控制項"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings_tv.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings_tv.xml index 0b17b31d23d0..f670e3afd2c6 100644 --- a/libs/WindowManager/Shell/res/values-zh-rTW/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings_tv.xml @@ -19,10 +19,26 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"子母畫面"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(無標題的節目)"</string> - <string name="pip_close" msgid="9135220303720555525">"關閉子母畫面"</string> + <!-- no translation found for pip_close (2955969519031223530) --> + <skip /> <string name="pip_fullscreen" msgid="7278047353591302554">"全螢幕"</string> - <string name="pip_move" msgid="1544227837964635439">"移動子母畫面"</string> - <string name="pip_expand" msgid="7605396312689038178">"展開子母畫面"</string> - <string name="pip_collapse" msgid="5732233773786896094">"收合子母畫面"</string> + <!-- no translation found for pip_move (158770205886688553) --> + <skip /> + <!-- no translation found for pip_expand (1051966011679297308) --> + <skip /> + <!-- no translation found for pip_collapse (3903295106641385962) --> + <skip /> <string name="pip_edu_text" msgid="3672999496647508701">" 按兩下"<annotation icon="home_icon">"主畫面按鈕"</annotation>"即可顯示控制選項"</string> + <!-- no translation found for a11y_pip_menu_entered (5106343214776801614) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_left (6612980937817141583) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_right (1119409122645529936) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_up (98502616918621959) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_down (3858802832725159740) --> + <skip /> + <!-- no translation found for a11y_action_pip_move_done (1486845365134416210) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zu/strings_tv.xml b/libs/WindowManager/Shell/res/values-zu/strings_tv.xml index dad8c8128222..20243a9dfc9c 100644 --- a/libs/WindowManager/Shell/res/values-zu/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values-zu/strings_tv.xml @@ -19,10 +19,16 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Isithombe-esithombeni"</string> <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Alukho uhlelo lwesihloko)"</string> - <string name="pip_close" msgid="9135220303720555525">"Vala i-PIP"</string> + <string name="pip_close" msgid="2955969519031223530">"Vala"</string> <string name="pip_fullscreen" msgid="7278047353591302554">"Iskrini esigcwele"</string> - <string name="pip_move" msgid="1544227837964635439">"Hambisa i-PIP"</string> - <string name="pip_expand" msgid="7605396312689038178">"Nweba i-PIP"</string> - <string name="pip_collapse" msgid="5732233773786896094">"Goqa i-PIP"</string> + <string name="pip_move" msgid="158770205886688553">"Hambisa"</string> + <string name="pip_expand" msgid="1051966011679297308">"Nweba"</string> + <string name="pip_collapse" msgid="3903295106641385962">"Goqa"</string> <string name="pip_edu_text" msgid="3672999496647508701">" Chofoza kabili "<annotation icon="home_icon">" IKHAYA"</annotation>" mayelana nezilawuli"</string> + <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Imenyu yesithombe-esithombeni"</string> + <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Yisa kwesokunxele"</string> + <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Yisa kwesokudla"</string> + <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Khuphula"</string> + <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Yehlisa"</string> + <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Kwenziwe"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values/strings_tv.xml b/libs/WindowManager/Shell/res/values/strings_tv.xml index 09ed9b8e52ee..2b7a13eac6ca 100644 --- a/libs/WindowManager/Shell/res/values/strings_tv.xml +++ b/libs/WindowManager/Shell/res/values/strings_tv.xml @@ -26,23 +26,38 @@ <!-- Picture-in-Picture (PIP) menu --> <eat-comment /> <!-- Button to close picture-in-picture (PIP) in PIP menu [CHAR LIMIT=30] --> - <string name="pip_close">Close PIP</string> + <string name="pip_close">Close</string> <!-- Button to move picture-in-picture (PIP) screen to the fullscreen in PIP menu [CHAR LIMIT=30] --> <string name="pip_fullscreen">Full screen</string> <!-- Button to move picture-in-picture (PIP) via DPAD in the PIP menu [CHAR LIMIT=30] --> - <string name="pip_move">Move PIP</string> + <string name="pip_move">Move</string> <!-- Button to expand the picture-in-picture (PIP) window [CHAR LIMIT=30] --> - <string name="pip_expand">Expand PIP</string> + <string name="pip_expand">Expand</string> <!-- Button to collapse/shrink the picture-in-picture (PIP) window [CHAR LIMIT=30] --> - <string name="pip_collapse">Collapse PIP</string> + <string name="pip_collapse">Collapse</string> <!-- Educative text instructing the user to double press the HOME button to access the pip controls menu [CHAR LIMIT=50] --> <string name="pip_edu_text"> Double press <annotation icon="home_icon"> HOME </annotation> for controls </string> + + <!-- Accessibility announcement when opening the PiP menu. [CHAR LIMIT=NONE] --> + <string name="a11y_pip_menu_entered">Picture-in-Picture menu.</string> + + <!-- Accessibility action: move the PiP window to the left [CHAR LIMIT=30] --> + <string name="a11y_action_pip_move_left">Move left</string> + <!-- Accessibility action: move the PiP window to the right [CHAR LIMIT=30] --> + <string name="a11y_action_pip_move_right">Move right</string> + <!-- Accessibility action: move the PiP window up [CHAR LIMIT=30] --> + <string name="a11y_action_pip_move_up">Move up</string> + <!-- Accessibility action: move the PiP window down [CHAR LIMIT=30] --> + <string name="a11y_action_pip_move_down">Move down</string> + <!-- Accessibility action: done with moving the PiP [CHAR LIMIT=30] --> + <string name="a11y_action_pip_move_done">Done</string> + </resources> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java index a16841cb870a..7760df17a8cd 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java @@ -286,7 +286,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont mBackGestureStarted = true; try { - mBackNavigationInfo = mActivityTaskManager.startBackNavigation(); + boolean requestAnimation = mEnableAnimations.get(); + mBackNavigationInfo = mActivityTaskManager.startBackNavigation(requestAnimation); onBackNavigationInfoReceived(mBackNavigationInfo); } catch (RemoteException remoteException) { Log.e(TAG, "Failed to initAnimation", remoteException); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java index 7cfacbcc92f8..e9729e45731b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java @@ -88,6 +88,9 @@ public class BubblePositioner { private int mMaxBubbles; private int mBubbleSize; private int mSpacingBetweenBubbles; + private int mBubblePaddingTop; + private int mBubbleOffscreenAmount; + private int mStackOffset; private int mExpandedViewMinHeight; private int mExpandedViewLargeScreenWidth; @@ -187,6 +190,10 @@ public class BubblePositioner { mSpacingBetweenBubbles = res.getDimensionPixelSize(R.dimen.bubble_spacing); mDefaultMaxBubbles = res.getInteger(R.integer.bubbles_max_rendered); mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding); + mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top); + mBubbleOffscreenAmount = res.getDimensionPixelSize(R.dimen.bubble_stack_offscreen); + mStackOffset = res.getDimensionPixelSize(R.dimen.bubble_stack_offset); + if (mIsSmallTablet) { mExpandedViewLargeScreenWidth = (int) (bounds.width() * EXPANDED_VIEW_SMALL_TABLET_WIDTH_PERCENT); @@ -329,6 +336,21 @@ public class BubblePositioner { : mBubbleSize; } + /** The amount of padding at the top of the screen that the bubbles avoid when being placed. */ + public int getBubblePaddingTop() { + return mBubblePaddingTop; + } + + /** The amount the stack hang off of the screen when collapsed. */ + public int getStackOffScreenAmount() { + return mBubbleOffscreenAmount; + } + + /** Offset of bubbles in the stack (i.e. how much they overlap). */ + public int getStackOffset() { + return mStackOffset; + } + /** Size of the visible (non-overlapping) part of the pointer. */ public int getPointerSize() { return mPointerHeight - mPointerOverlap; @@ -678,7 +700,28 @@ public class BubblePositioner { return new BubbleStackView.RelativeStackPosition( startOnLeft, startingVerticalOffset / mPositionRect.height()) - .getAbsolutePositionInRegion(new RectF(mPositionRect)); + .getAbsolutePositionInRegion(getAllowableStackPositionRegion( + 1 /* default starts with 1 bubble */)); + } + + + /** + * Returns the region that the stack position must stay within. This goes slightly off the left + * and right sides of the screen, below the status bar/cutout and above the navigation bar. + * While the stack position is not allowed to rest outside of these bounds, it can temporarily + * be animated or dragged beyond them. + */ + public RectF getAllowableStackPositionRegion(int bubbleCount) { + final RectF allowableRegion = new RectF(getAvailableRect()); + final int imeHeight = getImeHeight(); + final float bottomPadding = bubbleCount > 1 + ? mBubblePaddingTop + mStackOffset + : mBubblePaddingTop; + allowableRegion.left -= mBubbleOffscreenAmount; + allowableRegion.top += mBubblePaddingTop; + allowableRegion.right += mBubbleOffscreenAmount - mBubbleSize; + allowableRegion.bottom -= imeHeight + bottomPadding + mBubbleSize; + return allowableRegion; } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index b7c5eb06fbfa..0e8dc63943a6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -1296,7 +1296,7 @@ public class BubbleStackView extends FrameLayout public void onOrientationChanged() { mRelativeStackPositionBeforeRotation = new RelativeStackPosition( mPositioner.getRestingPosition(), - mStackAnimationController.getAllowableStackPositionRegion()); + mPositioner.getAllowableStackPositionRegion(getBubbleCount())); addOnLayoutChangeListener(mOrientationChangedListener); hideFlyoutImmediate(); } @@ -1340,7 +1340,7 @@ public class BubbleStackView extends FrameLayout mStackAnimationController.setStackPosition( new RelativeStackPosition( mPositioner.getRestingPosition(), - mStackAnimationController.getAllowableStackPositionRegion())); + mPositioner.getAllowableStackPositionRegion(getBubbleCount()))); } if (mIsExpanded) { updateExpandedView(); @@ -1440,7 +1440,7 @@ public class BubbleStackView extends FrameLayout if (super.performAccessibilityActionInternal(action, arguments)) { return true; } - final RectF stackBounds = mStackAnimationController.getAllowableStackPositionRegion(); + final RectF stackBounds = mPositioner.getAllowableStackPositionRegion(getBubbleCount()); // R constants are not final so we cannot use switch-case here. if (action == AccessibilityNodeInfo.ACTION_DISMISS) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ManageEducationView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ManageEducationView.kt index c09d1e0d189c..e95e8e5cdaea 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ManageEducationView.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/ManageEducationView.kt @@ -108,8 +108,16 @@ class ManageEducationView constructor(context: Context, positioner: BubblePositi alpha = 0f visibility = View.VISIBLE expandedView.getManageButtonBoundsOnScreen(realManageButtonRect) - manageView.setPadding(realManageButtonRect.left - expandedView.manageButtonMargin, - manageView.paddingTop, manageView.paddingRight, manageView.paddingBottom) + val isRTL = mContext.resources.configuration.layoutDirection == LAYOUT_DIRECTION_RTL + if (isRTL) { + val rightPadding = positioner.screenRect.right - realManageButtonRect.right - + expandedView.manageButtonMargin + manageView.setPadding(manageView.paddingLeft, manageView.paddingTop, + rightPadding, manageView.paddingBottom) + } else { + manageView.setPadding(realManageButtonRect.left - expandedView.manageButtonMargin, + manageView.paddingTop, manageView.paddingRight, manageView.paddingBottom) + } post { manageButton .setOnClickListener { @@ -122,7 +130,11 @@ class ManageEducationView constructor(context: Context, positioner: BubblePositi val offsetViewBounds = Rect() manageButton.getDrawingRect(offsetViewBounds) manageView.offsetDescendantRectToMyCoords(manageButton, offsetViewBounds) - translationX = 0f + if (isRTL && (positioner.isLargeScreen || positioner.isLandscape)) { + translationX = (positioner.screenRect.right - width).toFloat() + } else { + translationX = 0f + } translationY = (realManageButtonRect.top - offsetViewBounds.top).toFloat() bringToFront() animate() diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/StackEducationView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/StackEducationView.kt index 1ff4be887fb2..627273f093f3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/StackEducationView.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/StackEducationView.kt @@ -146,6 +146,12 @@ class StackEducationView constructor( } else { setPadding(paddingLeft, paddingTop, positioner.bubbleSize + stackPadding, paddingBottom) + if (positioner.isLargeScreen || positioner.isLandscape) { + translationX = (positioner.screenRect.right - width - stackPadding) + .toFloat() + } else { + translationX = 0f + } } translationY = stackPosition.y + positioner.bubbleSize / 2 - getHeight() / 2 } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java index 04af60dd7a03..0a1b4d70fb2b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java @@ -185,8 +185,6 @@ public class StackAnimationController extends * stack goes offscreen intentionally. */ private int mBubblePaddingTop; - /** How far offscreen the stack rests. */ - private int mBubbleOffscreen; /** Contains display size, orientation, and inset information. */ private BubblePositioner mPositioner; @@ -212,7 +210,8 @@ public class StackAnimationController extends public Rect getAllowedFloatingBoundsRegion() { final Rect floatingBounds = getFloatingBoundsOnScreen(); final Rect allowableStackArea = new Rect(); - getAllowableStackPositionRegion().roundOut(allowableStackArea); + mPositioner.getAllowableStackPositionRegion(getBubbleCount()) + .roundOut(allowableStackArea); allowableStackArea.right += floatingBounds.width(); allowableStackArea.bottom += floatingBounds.height(); return allowableStackArea; @@ -349,7 +348,7 @@ public class StackAnimationController extends ? velX < ESCAPE_VELOCITY : velX < -ESCAPE_VELOCITY; - final RectF stackBounds = getAllowableStackPositionRegion(); + final RectF stackBounds = mPositioner.getAllowableStackPositionRegion(getBubbleCount()); // Target X translation (either the left or right side of the screen). final float destinationRelativeX = stackShouldFlingLeft @@ -425,7 +424,7 @@ public class StackAnimationController extends } final PointF stackPos = getStackPosition(); final boolean onLeft = mLayout.isFirstChildXLeftOfCenter(stackPos.x); - final RectF bounds = getAllowableStackPositionRegion(); + final RectF bounds = mPositioner.getAllowableStackPositionRegion(getBubbleCount()); stackPos.x = onLeft ? bounds.left : bounds.right; return stackPos; @@ -464,7 +463,7 @@ public class StackAnimationController extends StackPositionProperty firstBubbleProperty = new StackPositionProperty(property); final float currentValue = firstBubbleProperty.getValue(this); - final RectF bounds = getAllowableStackPositionRegion(); + final RectF bounds = mPositioner.getAllowableStackPositionRegion(getBubbleCount()); final float min = property.equals(DynamicAnimation.TRANSLATION_X) ? bounds.left @@ -525,7 +524,8 @@ public class StackAnimationController extends * of the stack if it's not moving). */ public float animateForImeVisibility(boolean imeVisible) { - final float maxBubbleY = getAllowableStackPositionRegion().bottom; + final float maxBubbleY = mPositioner.getAllowableStackPositionRegion( + getBubbleCount()).bottom; float destinationY = UNSET; if (imeVisible) { @@ -567,25 +567,6 @@ public class StackAnimationController extends mFloatingContentCoordinator.onContentMoved(mStackFloatingContent); } - /** - * Returns the region that the stack position must stay within. This goes slightly off the left - * and right sides of the screen, below the status bar/cutout and above the navigation bar. - * While the stack position is not allowed to rest outside of these bounds, it can temporarily - * be animated or dragged beyond them. - */ - public RectF getAllowableStackPositionRegion() { - final RectF allowableRegion = new RectF(mPositioner.getAvailableRect()); - final int imeHeight = mPositioner.getImeHeight(); - final float bottomPadding = getBubbleCount() > 1 - ? mBubblePaddingTop + mStackOffset - : mBubblePaddingTop; - allowableRegion.left -= mBubbleOffscreen; - allowableRegion.top += mBubblePaddingTop; - allowableRegion.right += mBubbleOffscreen - mBubbleSize; - allowableRegion.bottom -= imeHeight + bottomPadding + mBubbleSize; - return allowableRegion; - } - /** Moves the stack in response to a touch event. */ public void moveStackFromTouch(float x, float y) { // Begin the spring-to-touch catch up animation if needed. @@ -861,13 +842,12 @@ public class StackAnimationController extends @Override void onActiveControllerForLayout(PhysicsAnimationLayout layout) { Resources res = layout.getResources(); - mStackOffset = res.getDimensionPixelSize(R.dimen.bubble_stack_offset); + mStackOffset = mPositioner.getStackOffset(); mSwapAnimationOffset = res.getDimensionPixelSize(R.dimen.bubble_swap_animation_offset); mMaxBubbles = res.getInteger(R.integer.bubbles_max_rendered); mElevation = res.getDimensionPixelSize(R.dimen.bubble_elevation); mBubbleSize = mPositioner.getBubbleSize(); - mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top); - mBubbleOffscreen = res.getDimensionPixelSize(R.dimen.bubble_stack_offscreen); + mBubblePaddingTop = mPositioner.getBubblePaddingTop(); } /** @@ -958,7 +938,8 @@ public class StackAnimationController extends } public void setStackPosition(BubbleStackView.RelativeStackPosition position) { - setStackPosition(position.getAbsolutePositionInRegion(getAllowableStackPositionRegion())); + setStackPosition(position.getAbsolutePositionInRegion( + mPositioner.getAllowableStackPositionRegion(getBubbleCount()))); } private boolean isStackPositionSet() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java index fedb9983a65e..47f1e2e18255 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java @@ -423,8 +423,8 @@ public class DisplayLayout { } final DisplayCutout.CutoutPathParserInfo info = cutout.getCutoutPathParserInfo(); final DisplayCutout.CutoutPathParserInfo newInfo = new DisplayCutout.CutoutPathParserInfo( - info.getDisplayWidth(), info.getDisplayHeight(), info.getStableDisplayWidth(), - info.getStableDisplayHeight(), info.getDensity(), info.getCutoutSpec(), rotation, + info.getDisplayWidth(), info.getDisplayHeight(), info.getPhysicalDisplayWidth(), + info.getPhysicalDisplayHeight(), info.getDensity(), info.getCutoutSpec(), rotation, info.getScale(), info.getPhysicalPixelDisplaySizeRatio()); return computeSafeInsets( DisplayCutout.constructDisplayCutout(newBounds, waterfallInsets, newInfo), diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java index de30dbbe7e46..484294ab295b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java @@ -160,6 +160,15 @@ public class SplitDecorManager extends WindowlessWindowManager { mBounds.set(newBounds); } + final boolean show = + newBounds.width() > mBounds.width() || newBounds.height() > mBounds.height(); + final boolean animate = show != mShown; + if (animate && mFadeAnimator != null && mFadeAnimator.isRunning()) { + // If we need to animate and animator still running, cancel it before we ensure both + // background and icon surfaces are non null for next animation. + mFadeAnimator.cancel(); + } + if (mBackgroundLeash == null) { mBackgroundLeash = SurfaceUtils.makeColorLayer(mHostLeash, RESIZING_BACKGROUND_SURFACE_NAME, mSurfaceSession); @@ -183,11 +192,7 @@ public class SplitDecorManager extends WindowlessWindowManager { newBounds.width() / 2 - mIconSize / 2, newBounds.height() / 2 - mIconSize / 2); - boolean show = newBounds.width() > mBounds.width() || newBounds.height() > mBounds.height(); - if (show != mShown) { - if (mFadeAnimator != null && mFadeAnimator.isRunning()) { - mFadeAnimator.cancel(); - } + if (animate) { startFadeAnimation(show, false /* isResized */); mShown = show; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java index d357655882ff..4eba1697b595 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java @@ -25,15 +25,14 @@ import android.animation.Animator; import android.animation.RectEvaluator; import android.animation.ValueAnimator; import android.annotation.IntDef; +import android.annotation.NonNull; import android.app.TaskInfo; import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Color; import android.graphics.Rect; import android.view.Choreographer; import android.view.Surface; import android.view.SurfaceControl; -import android.view.SurfaceSession; +import android.window.TaskSnapshot; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.graphics.SfVsyncFrameCallbackProvider; @@ -197,6 +196,15 @@ public class PipAnimationController { } /** + * Quietly cancel the animator by removing the listeners first. + */ + static void quietCancel(@NonNull ValueAnimator animator) { + animator.removeAllUpdateListeners(); + animator.removeAllListeners(); + animator.cancel(); + } + + /** * Additional callback interface for PiP animation */ public static class PipAnimationCallback { @@ -257,7 +265,7 @@ public class PipAnimationController { mSurfaceControlTransactionFactory; private PipSurfaceTransactionHelper mSurfaceTransactionHelper; private @TransitionDirection int mTransitionDirection; - protected SurfaceControl mContentOverlay; + protected PipContentOverlay mContentOverlay; private PipTransitionAnimator(TaskInfo taskInfo, SurfaceControl leash, @AnimationType int animationType, @@ -335,43 +343,26 @@ public class PipAnimationController { return false; } - SurfaceControl getContentOverlay() { - return mContentOverlay; + SurfaceControl getContentOverlayLeash() { + return mContentOverlay == null ? null : mContentOverlay.mLeash; } - PipTransitionAnimator<T> setUseContentOverlay(Context context) { + void setColorContentOverlay(Context context) { final SurfaceControl.Transaction tx = newSurfaceControlTransaction(); if (mContentOverlay != null) { - // remove existing content overlay if there is any. - tx.remove(mContentOverlay); - tx.apply(); + mContentOverlay.detach(tx); } - mContentOverlay = new SurfaceControl.Builder(new SurfaceSession()) - .setCallsite("PipAnimation") - .setName("PipContentOverlay") - .setColorLayer() - .build(); - tx.show(mContentOverlay); - tx.setLayer(mContentOverlay, Integer.MAX_VALUE); - tx.setColor(mContentOverlay, getContentOverlayColor(context)); - tx.setAlpha(mContentOverlay, 0f); - tx.reparent(mContentOverlay, mLeash); - tx.apply(); - return this; + mContentOverlay = new PipContentOverlay.PipColorOverlay(context); + mContentOverlay.attach(tx, mLeash); } - private float[] getContentOverlayColor(Context context) { - final TypedArray ta = context.obtainStyledAttributes(new int[] { - android.R.attr.colorBackground }); - try { - int colorAccent = ta.getColor(0, 0); - return new float[] { - Color.red(colorAccent) / 255f, - Color.green(colorAccent) / 255f, - Color.blue(colorAccent) / 255f }; - } finally { - ta.recycle(); + void setSnapshotContentOverlay(TaskSnapshot snapshot, Rect sourceRectHint) { + final SurfaceControl.Transaction tx = newSurfaceControlTransaction(); + if (mContentOverlay != null) { + mContentOverlay.detach(tx); } + mContentOverlay = new PipContentOverlay.PipSnapshotOverlay(snapshot, sourceRectHint); + mContentOverlay.attach(tx, mLeash); } /** @@ -575,7 +566,7 @@ public class PipAnimationController { final Rect start = getStartValue(); final Rect end = getEndValue(); if (mContentOverlay != null) { - tx.setAlpha(mContentOverlay, fraction < 0.5f ? 0 : (fraction - 0.5f) * 2); + mContentOverlay.onAnimationUpdate(tx, fraction); } if (rotatedEndRect != null) { // Animate the bounds in a different orientation. It only happens when @@ -680,7 +671,7 @@ public class PipAnimationController { .round(tx, leash, shouldApplyCornerRadius()) .shadow(tx, leash, shouldApplyShadowRadius()); // TODO(b/178632364): this is a work around for the black background when - // entering PiP in buttion navigation mode. + // entering PiP in button navigation mode. if (isInPipDirection(direction)) { tx.setWindowCrop(leash, getStartValue()); } @@ -704,6 +695,9 @@ public class PipAnimationController { } else { getSurfaceTransactionHelper().crop(tx, leash, destBounds); } + if (mContentOverlay != null) { + mContentOverlay.onAnimationEnd(tx, destBounds); + } } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java new file mode 100644 index 000000000000..a032b338aae8 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipContentOverlay.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2022 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.wm.shell.pip; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.graphics.Rect; +import android.view.SurfaceControl; +import android.view.SurfaceSession; +import android.window.TaskSnapshot; + +/** + * Represents the content overlay used during the entering PiP animation. + */ +public abstract class PipContentOverlay { + protected SurfaceControl mLeash; + + /** Attaches the internal {@link #mLeash} to the given parent leash. */ + public abstract void attach(SurfaceControl.Transaction tx, SurfaceControl parentLeash); + + /** Detaches the internal {@link #mLeash} from its parent by removing itself. */ + public void detach(SurfaceControl.Transaction tx) { + if (mLeash != null && mLeash.isValid()) { + tx.remove(mLeash); + tx.apply(); + } + } + + /** + * Animates the internal {@link #mLeash} by a given fraction. + * @param atomicTx {@link SurfaceControl.Transaction} to operate, you should not explicitly + * call apply on this transaction, it should be applied on the caller side. + * @param fraction progress of the animation ranged from 0f to 1f. + */ + public abstract void onAnimationUpdate(SurfaceControl.Transaction atomicTx, float fraction); + + /** + * Callback when reaches the end of animation on the internal {@link #mLeash}. + * @param atomicTx {@link SurfaceControl.Transaction} to operate, you should not explicitly + * call apply on this transaction, it should be applied on the caller side. + * @param destinationBounds {@link Rect} of the final bounds. + */ + public abstract void onAnimationEnd(SurfaceControl.Transaction atomicTx, + Rect destinationBounds); + + /** A {@link PipContentOverlay} uses solid color. */ + public static final class PipColorOverlay extends PipContentOverlay { + private final Context mContext; + + public PipColorOverlay(Context context) { + mContext = context; + mLeash = new SurfaceControl.Builder(new SurfaceSession()) + .setCallsite("PipAnimation") + .setName(PipColorOverlay.class.getSimpleName()) + .setColorLayer() + .build(); + } + + @Override + public void attach(SurfaceControl.Transaction tx, SurfaceControl parentLeash) { + tx.show(mLeash); + tx.setLayer(mLeash, Integer.MAX_VALUE); + tx.setColor(mLeash, getContentOverlayColor(mContext)); + tx.setAlpha(mLeash, 0f); + tx.reparent(mLeash, parentLeash); + tx.apply(); + } + + @Override + public void onAnimationUpdate(SurfaceControl.Transaction atomicTx, float fraction) { + atomicTx.setAlpha(mLeash, fraction < 0.5f ? 0 : (fraction - 0.5f) * 2); + } + + @Override + public void onAnimationEnd(SurfaceControl.Transaction atomicTx, Rect destinationBounds) { + // Do nothing. Color overlay should be fully opaque by now. + } + + private float[] getContentOverlayColor(Context context) { + final TypedArray ta = context.obtainStyledAttributes(new int[] { + android.R.attr.colorBackground }); + try { + int colorAccent = ta.getColor(0, 0); + return new float[] { + Color.red(colorAccent) / 255f, + Color.green(colorAccent) / 255f, + Color.blue(colorAccent) / 255f }; + } finally { + ta.recycle(); + } + } + } + + /** A {@link PipContentOverlay} uses {@link TaskSnapshot}. */ + public static final class PipSnapshotOverlay extends PipContentOverlay { + private final TaskSnapshot mSnapshot; + private final Rect mSourceRectHint; + + private float mTaskSnapshotScaleX; + private float mTaskSnapshotScaleY; + + public PipSnapshotOverlay(TaskSnapshot snapshot, Rect sourceRectHint) { + mSnapshot = snapshot; + mSourceRectHint = new Rect(sourceRectHint); + mLeash = new SurfaceControl.Builder(new SurfaceSession()) + .setCallsite("PipAnimation") + .setName(PipSnapshotOverlay.class.getSimpleName()) + .build(); + } + + @Override + public void attach(SurfaceControl.Transaction tx, SurfaceControl parentLeash) { + mTaskSnapshotScaleX = (float) mSnapshot.getTaskSize().x + / mSnapshot.getHardwareBuffer().getWidth(); + mTaskSnapshotScaleY = (float) mSnapshot.getTaskSize().y + / mSnapshot.getHardwareBuffer().getHeight(); + tx.show(mLeash); + tx.setLayer(mLeash, Integer.MAX_VALUE); + tx.setBuffer(mLeash, mSnapshot.getHardwareBuffer()); + tx.setCrop(mLeash, mSourceRectHint); + tx.setScale(mLeash, mTaskSnapshotScaleX, mTaskSnapshotScaleY); + tx.reparent(mLeash, parentLeash); + tx.apply(); + } + + @Override + public void onAnimationUpdate(SurfaceControl.Transaction atomicTx, float fraction) { + // Do nothing. Keep the snapshot till animation ends. + } + + @Override + public void onAnimationEnd(SurfaceControl.Transaction atomicTx, Rect destinationBounds) { + // Work around to make sure the snapshot overlay is aligned with PiP window before + // the atomicTx is committed along with the final WindowContainerTransaction. + final SurfaceControl.Transaction nonAtomicTx = new SurfaceControl.Transaction(); + final float scaleX = (float) destinationBounds.width() + / mSnapshot.getHardwareBuffer().getWidth(); + final float scaleY = (float) destinationBounds.height() + / mSnapshot.getHardwareBuffer().getHeight(); + final float scale = Math.max(scaleX, scaleY); + nonAtomicTx.setScale(mLeash, scale, scale); + nonAtomicTx.setPosition(mLeash, + -scale * mSourceRectHint.left / mTaskSnapshotScaleX, + -scale * mSourceRectHint.top / mTaskSnapshotScaleY); + nonAtomicTx.apply(); + atomicTx.remove(mLeash); + } + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 85052148a510..c05654a74034 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -66,6 +66,7 @@ import android.view.Display; import android.view.Surface; import android.view.SurfaceControl; import android.window.TaskOrganizer; +import android.window.TaskSnapshot; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -152,8 +153,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, final int direction = animator.getTransitionDirection(); final int animationType = animator.getAnimationType(); final Rect destinationBounds = animator.getDestinationBounds(); - if (isInPipDirection(direction) && animator.getContentOverlay() != null) { - fadeOutAndRemoveOverlay(animator.getContentOverlay(), + if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { + fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay*/); } if (mWaitForFixedRotation && animationType == ANIM_TYPE_BOUNDS @@ -186,8 +187,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, public void onPipAnimationCancel(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); - if (isInPipDirection(direction) && animator.getContentOverlay() != null) { - fadeOutAndRemoveOverlay(animator.getContentOverlay(), + if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { + fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay */); } sendOnPipTransitionCancelled(direction); @@ -430,7 +431,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } } - final Rect destinationBounds = mPipBoundsState.getDisplayBounds(); + final Rect destinationBounds = getExitDestinationBounds(); final int direction = syncWithSplitScreenBounds(destinationBounds, requestEnterSplit) ? TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN : TRANSITION_DIRECTION_LEAVE_PIP; @@ -456,6 +457,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, wct.setBoundsChangeTransaction(mToken, tx); } + // Cancel the existing animator if there is any. + cancelCurrentAnimator(); + // Set the exiting state first so if there is fixed rotation later, the running animation // won't be interrupted by alpha animation for existing PiP. mPipTransitionState.setTransitionState(PipTransitionState.EXITING_PIP); @@ -485,6 +489,11 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, }); } + /** Returns the bounds to restore to when exiting PIP mode. */ + public Rect getExitDestinationBounds() { + return mPipBoundsState.getDisplayBounds(); + } + private void exitLaunchIntoPipTask(WindowContainerTransaction wct) { wct.startTask(mTaskInfo.launchIntoPipHostTaskId, null /* ActivityOptions */); mTaskOrganizer.applyTransaction(wct); @@ -795,21 +804,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, "%s: Unrecognized token: %s", TAG, token); return; } + + cancelCurrentAnimator(); onExitPipFinished(info); if (Transitions.ENABLE_SHELL_TRANSITIONS) { mPipTransitionController.forceFinishTransition(); } - final PipAnimationController.PipTransitionAnimator<?> animator = - mPipAnimationController.getCurrentAnimator(); - if (animator != null) { - if (animator.getContentOverlay() != null) { - removeContentOverlay(animator.getContentOverlay(), animator::clearContentOverlay); - } - animator.removeAllUpdateListeners(); - animator.removeAllListeners(); - animator.cancel(); - } } @Override @@ -970,6 +971,11 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, if (!isInPip()) { return; } + if (mLeash == null || !mLeash.isValid()) { + ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, + "%s: Invalid leash on setPipVisibility: %s", TAG, mLeash); + return; + } final SurfaceControl.Transaction tx = mSurfaceControlTransactionFactory.getTransaction(); mSurfaceTransactionHelper.alpha(tx, mLeash, visible ? 1f : 0f); @@ -1036,9 +1042,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, int direction = TRANSITION_DIRECTION_NONE; if (animator != null) { direction = animator.getTransitionDirection(); - animator.removeAllUpdateListeners(); - animator.removeAllListeners(); - animator.cancel(); + PipAnimationController.quietCancel(animator); // Do notify the listeners that this was canceled sendOnPipTransitionCancelled(direction); sendOnPipTransitionFinished(direction); @@ -1486,7 +1490,17 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, if (isInPipDirection(direction)) { // Similar to auto-enter-pip transition, we use content overlay when there is no // source rect hint to enter PiP use bounds animation. - if (sourceHintRect == null) animator.setUseContentOverlay(mContext); + if (sourceHintRect == null) { + animator.setColorContentOverlay(mContext); + } else { + final TaskSnapshot snapshot = PipUtils.getTaskSnapshot( + mTaskInfo.launchIntoPipHostTaskId, false /* isLowResolution */); + if (snapshot != null) { + // use the task snapshot during the animation, this is for + // launch-into-pip aka. content-pip use case. + animator.setSnapshotContentOverlay(snapshot, sourceHintRect); + } + } // The destination bounds are used for the end rect of animation and the final bounds // after animation finishes. So after the animation is started, the destination bounds // can be updated to new rotation (computeRotatedBounds has changed the DisplayLayout @@ -1550,7 +1564,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, */ void fadeOutAndRemoveOverlay(SurfaceControl surface, Runnable callback, boolean withStartDelay) { - if (surface == null) { + if (surface == null || !surface.isValid()) { return; } @@ -1562,10 +1576,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, // set a start delay on this animation. ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: Task vanished, skip fadeOutAndRemoveOverlay", TAG); - animation.removeAllListeners(); - animation.removeAllUpdateListeners(); - animation.cancel(); - } else { + PipAnimationController.quietCancel(animation); + } else if (surface.isValid()) { final float alpha = (float) animation.getAnimatedValue(); final SurfaceControl.Transaction transaction = mSurfaceControlTransactionFactory.getTransaction(); @@ -1604,6 +1616,18 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, tx.apply(); } + private void cancelCurrentAnimator() { + final PipAnimationController.PipTransitionAnimator<?> animator = + mPipAnimationController.getCurrentAnimator(); + if (animator != null) { + if (animator.getContentOverlayLeash() != null) { + removeContentOverlay(animator.getContentOverlayLeash(), + animator::clearContentOverlay); + } + PipAnimationController.quietCancel(animator); + } + } + @VisibleForTesting public void setSurfaceControlTransactionFactory( PipSurfaceTransactionHelper.SurfaceControlTransactionFactory factory) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index 48df28ee4cde..36e712459863 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -709,7 +709,7 @@ public class PipTransition extends PipTransitionController { if (sourceHintRect == null) { // We use content overlay when there is no source rect hint to enter PiP use bounds // animation. - animator.setUseContentOverlay(mContext); + animator.setColorContentOverlay(mContext); } } else if (mOneShotAnimationType == ANIM_TYPE_ALPHA) { startTransaction.setAlpha(leash, 0f); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java index 24993c621e3c..54f46e0c9938 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java @@ -70,8 +70,8 @@ public abstract class PipTransitionController implements Transitions.TransitionH if (direction == TRANSITION_DIRECTION_REMOVE_STACK) { return; } - if (isInPipDirection(direction) && animator.getContentOverlay() != null) { - mPipOrganizer.fadeOutAndRemoveOverlay(animator.getContentOverlay(), + if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { + mPipOrganizer.fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay*/); } onFinishResize(taskInfo, animator.getDestinationBounds(), direction, tx); @@ -82,8 +82,8 @@ public abstract class PipTransitionController implements Transitions.TransitionH public void onPipAnimationCancel(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); - if (isInPipDirection(direction) && animator.getContentOverlay() != null) { - mPipOrganizer.fadeOutAndRemoveOverlay(animator.getContentOverlay(), + if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { + mPipOrganizer.fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay */); } sendOnPipTransitionCancelled(animator.getTransitionDirection()); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java index c6cf8b8b0566..dc60bcf742ce 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java @@ -19,13 +19,16 @@ package com.android.wm.shell.pip; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import android.annotation.Nullable; import android.app.ActivityTaskManager; import android.app.ActivityTaskManager.RootTaskInfo; import android.app.RemoteAction; import android.content.ComponentName; import android.content.Context; import android.os.RemoteException; +import android.util.Log; import android.util.Pair; +import android.window.TaskSnapshot; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.protolog.ShellProtoLogGroup; @@ -106,4 +109,17 @@ public class PipUtils { } return false; } + + /** @return {@link TaskSnapshot} for a given task id. */ + @Nullable + public static TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) { + if (taskId <= 0) return null; + try { + return ActivityTaskManager.getService().getTaskSnapshot( + taskId, isLowResolution); + } catch (RemoteException e) { + Log.e(TAG, "Failed to get task snapshot, taskId=" + taskId, e); + return null; + } + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java index 49b6968f9417..fcfcbfa091db 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackAnimationControllerTest.java @@ -20,6 +20,7 @@ import static android.window.BackNavigationInfo.KEY_TRIGGER_BACK; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; @@ -128,7 +129,7 @@ public class BackAnimationControllerTest { new RemoteCallback((bundle) -> {}), onBackInvokedCallback); try { - doReturn(navigationInfo).when(mActivityTaskManager).startBackNavigation(); + doReturn(navigationInfo).when(mActivityTaskManager).startBackNavigation(anyBoolean()); } catch (RemoteException ex) { ex.rethrowFromSystemServer(); } @@ -136,7 +137,7 @@ public class BackAnimationControllerTest { private void createNavigationInfo(BackNavigationInfo.Builder builder) { try { - doReturn(builder.build()).when(mActivityTaskManager).startBackNavigation(); + doReturn(builder.build()).when(mActivityTaskManager).startBackNavigation(anyBoolean()); } catch (RemoteException ex) { ex.rethrowFromSystemServer(); } |