Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b750311 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge changes I27335d47,I54cd86d2 into sc-v2-dev am: 5f3fb9bb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15302843

Change-Id: I5a13ab81fe11b0bda05cc4d1054ef1b78af0860c
parents 59025aa2 5f3fb9bb
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -3552,6 +3552,13 @@ public final class ActivityThread extends ClientTransactionHandler
                    + ", comp=" + r.intent.getComponent().toShortString()
                    + ", comp=" + r.intent.getComponent().toShortString()
                    + ", dir=" + r.packageInfo.getAppDir());
                    + ", dir=" + r.packageInfo.getAppDir());


            // updatePendingActivityConfiguration() reads from mActivities to update
            // ActivityClientRecord which runs in a different thread. Protect modifications to
            // mActivities to avoid race.
            synchronized (mResourcesManager) {
                mActivities.put(r.token, r);
            }

            if (activity != null) {
            if (activity != null) {
                CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager());
                CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager());
                Configuration config =
                Configuration config =
@@ -3613,13 +3620,6 @@ public final class ActivityThread extends ClientTransactionHandler
            }
            }
            r.setState(ON_CREATE);
            r.setState(ON_CREATE);


            // updatePendingActivityConfiguration() reads from mActivities to update
            // ActivityClientRecord which runs in a different thread. Protect modifications to
            // mActivities to avoid race.
            synchronized (mResourcesManager) {
                mActivities.put(r.token, r);
            }

        } catch (SuperNotCalledException e) {
        } catch (SuperNotCalledException e) {
            throw e;
            throw e;


+32 −0
Original line number Original line Diff line number Diff line
@@ -23,15 +23,19 @@ import static androidx.window.util.ExtensionHelper.transformToWindowSpaceRect;


import android.app.Activity;
import android.app.Activity;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.util.Log;


import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.window.common.DeviceStateManagerPostureProducer;
import androidx.window.common.DeviceStateManagerPostureProducer;
import androidx.window.common.DisplayFeature;
import androidx.window.common.DisplayFeature;
import androidx.window.common.ResourceConfigDisplayFeatureProducer;
import androidx.window.common.ResourceConfigDisplayFeatureProducer;
import androidx.window.common.SettingsDevicePostureProducer;
import androidx.window.common.SettingsDevicePostureProducer;
import androidx.window.common.SettingsDisplayFeatureProducer;
import androidx.window.common.SettingsDisplayFeatureProducer;
import androidx.window.extensions.organizer.SplitController;
import androidx.window.util.DataProducer;
import androidx.window.util.DataProducer;
import androidx.window.util.PriorityDataProducer;
import androidx.window.util.PriorityDataProducer;


@@ -56,6 +60,8 @@ class SampleExtensionImpl extends StubExtension {
    private final SettingsDisplayFeatureProducer mSettingsDisplayFeatureProducer;
    private final SettingsDisplayFeatureProducer mSettingsDisplayFeatureProducer;
    private final DataProducer<List<DisplayFeature>> mDisplayFeatureProducer;
    private final DataProducer<List<DisplayFeature>> mDisplayFeatureProducer;


    private final SplitController mSplitController;

    SampleExtensionImpl(Context context) {
    SampleExtensionImpl(Context context) {
        mSettingsDevicePostureProducer = new SettingsDevicePostureProducer(context);
        mSettingsDevicePostureProducer = new SettingsDevicePostureProducer(context);
        mDevicePostureProducer = new PriorityDataProducer<>(List.of(
        mDevicePostureProducer = new PriorityDataProducer<>(List.of(
@@ -71,6 +77,8 @@ class SampleExtensionImpl extends StubExtension {


        mDevicePostureProducer.addDataChangedCallback(this::onDisplayFeaturesChanged);
        mDevicePostureProducer.addDataChangedCallback(this::onDisplayFeaturesChanged);
        mDisplayFeatureProducer.addDataChangedCallback(this::onDisplayFeaturesChanged);
        mDisplayFeatureProducer.addDataChangedCallback(this::onDisplayFeaturesChanged);

        mSplitController = new SplitController();
    }
    }


    private int getFeatureState(DisplayFeature feature) {
    private int getFeatureState(DisplayFeature feature) {
@@ -134,4 +142,28 @@ class SampleExtensionImpl extends StubExtension {


        onDisplayFeaturesChanged();
        onDisplayFeaturesChanged();
    }
    }

    @Override
    public void setSplitRules(@NonNull List<ExtensionSplitRule> splitRules) {
        mSplitController.setSplitRules(splitRules);
    }

    @Override
    @NonNull
    public List<ExtensionSplitRule> getSplitRules() {
        return new ArrayList<>(mSplitController.getSplitRules());
    }

    @Override
    public void setSplitOrganizerCallback(@Nullable SplitOrganizerCallback callback) {
        mSplitController.setSplitOrganizerCallback(callback);
    }

    @Override
    public void startActivityToSide(@NonNull Activity launchingActivity, @NonNull Intent intent,
            @Nullable Bundle options, @NonNull ExtensionSplitPairRule splitPairRule,
            int startRequestId) {
        mSplitController.startActivityToSide(launchingActivity, intent, options, splitPairRule,
                startRequestId);
    }
}
}
+62 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2021 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 androidx.window.extensions.organizer;

import android.annotation.NonNull;
import android.app.Activity;

import androidx.window.extensions.ExtensionSplitPairRule;

/**
 * Client-side descriptor of a split that holds two containers.
 */
class SplitContainer {
    private final TaskFragmentContainer mPrimaryContainer;
    private final TaskFragmentContainer mSecondaryContainer;
    private final ExtensionSplitPairRule mSplitPairRule;

    SplitContainer(@NonNull TaskFragmentContainer primaryContainer,
            @NonNull Activity primaryActivity,
            @NonNull TaskFragmentContainer secondaryContainer,
            @NonNull ExtensionSplitPairRule splitPairRule) {
        mPrimaryContainer = primaryContainer;
        mSecondaryContainer = secondaryContainer;
        mSplitPairRule = splitPairRule;

        if (mSplitPairRule.finishPrimaryWithSecondary || mSplitPairRule.useAsPlaceholder) {
            mSecondaryContainer.addActivityToFinishOnExit(primaryActivity);
        }
        if (mSplitPairRule.finishSecondaryWithPrimary || mSplitPairRule.useAsPlaceholder) {
            mPrimaryContainer.addContainerToFinishOnExit(mSecondaryContainer);
        }
    }

    @NonNull
    TaskFragmentContainer getPrimaryContainer() {
        return mPrimaryContainer;
    }

    @NonNull
    TaskFragmentContainer getSecondaryContainer() {
        return mSecondaryContainer;
    }

    @NonNull
    ExtensionSplitPairRule getSplitPairRule() {
        return mSplitPairRule;
    }
}
Loading