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

Commit 453c976b authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refactor for immediate dispatched ClientTransaction cleanup" into main

parents 8b46b732 2abdbbd3
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.DeadObjectException;
import android.os.Debug;
import android.os.Handler;
import android.os.IBinder;
@@ -1045,16 +1046,23 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
            // transaction.
            mService.getLifecycleManager().dispatchPendingTransaction(proc.getThread());
        }
        final boolean isSuccessful;
        try {
            mService.getLifecycleManager().scheduleTransactionItems(
            isSuccessful = mService.getLifecycleManager().scheduleTransactionItems(
                    proc.getThread(),
                    // Immediately dispatch the transaction, so that if it fails, the server can
                    // restart the process and retry now.
                    true /* shouldDispatchImmediately */,
                    launchActivityItem, lifecycleItem);
        } catch (RemoteException e) {
            // TODO(b/323801078): remove Exception when cleanup
            return e;
        }
        if (com.android.window.flags.Flags.cleanupDispatchPendingTransactionsRemoteException()
                && !isSuccessful) {
            return new DeadObjectException("Failed to dispatch the ClientTransaction to dead"
                    + " process. See earlier log for more details.");
        }

        if (procConfig.seq > mRootWindowContainer.getConfiguration().seq) {
            // If the seq is increased, there should be something changed (e.g. registered
+4 −6
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@ import static com.android.server.wm.ActivityRecord.State.PAUSED;
import static com.android.server.wm.ActivityRecord.State.PAUSING;
import static com.android.server.wm.ActivityRecord.State.RESUMED;
import static com.android.server.wm.ActivityRecord.State.STARTED;
import static com.android.server.wm.ActivityRecord.State.STOPPING;
import static com.android.server.wm.ActivityRecord.State.STOPPED;
import static com.android.server.wm.ActivityRecord.State.STOPPING;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RELEASE;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_RELEASE;
@@ -69,7 +69,6 @@ import android.content.pm.ServiceInfo;
import android.content.res.Configuration;
import android.os.Binder;
import android.os.Build;
import android.os.DeadObjectException;
import android.os.FactoryTest;
import android.os.LocaleList;
import android.os.Message;
@@ -458,6 +457,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
                mAtm.getLifecycleManager().scheduleTransactionItemNow(
                        thread, configurationChangeItem);
            } catch (Exception e) {
                // TODO(b/323801078): remove Exception when cleanup
                Slog.e(TAG_CONFIGURATION, "Failed to schedule ConfigurationChangeItem="
                        + configurationChangeItem + " owner=" + mOwner, e);
            }
@@ -1793,13 +1793,11 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
                // Non-UI process can handle the change directly.
                mAtm.getLifecycleManager().scheduleTransactionItemNow(thread, transactionItem);
            }
        } catch (DeadObjectException e) {
        } catch (RemoteException e) {
            // TODO(b/323801078): remove Exception when cleanup
            // Expected if the process has been killed.
            Slog.w(TAG_CONFIGURATION, "Failed for dead process. ClientTransactionItem="
                    + transactionItem + " owner=" + mOwner);
        } catch (Exception e) {
            Slog.e(TAG_CONFIGURATION, "Failed to schedule ClientTransactionItem="
                    + transactionItem + " owner=" + mOwner, e);
        }
    }