Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/upstream' into trunk
Browse files Browse the repository at this point in the history
# Conflicts:
#	lawnchair/src/app/lawnchair/LawnchairLauncher.kt
  • Loading branch information
Goooler committed Jan 26, 2024
2 parents c69b652 + 3a8b541 commit da2bddd
Show file tree
Hide file tree
Showing 117 changed files with 4,739 additions and 629 deletions.
25 changes: 23 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,23 @@ allprojects {
libraries.from(files(frameworkJar))
}
}
dependencies {
compileOnly files(frameworkJar)
}
}

compileOnlyCommonJars = {
dependencies {
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-core.jar')
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd.jar')
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell-14.jar')
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'framework-14.jar')

compileOnly projects.compatLib
compileOnly projects.compatLib.compatLibVQ
compileOnly projects.compatLib.compatLibVR
compileOnly projects.compatLib.compatLibVS
compileOnly projects.compatLib.compatLibVT
compileOnly projects.compatLib.compatLibVU
}
}
}
Expand All @@ -115,7 +124,7 @@ final def parts = versionString.split("\\.")
final def majorVersion = parts[0]
final def versionInt = parts[0].toInteger() * 1000000 + parts[1].toInteger() * 10000 + parts[2].toInteger() * 100

final def quickstepMinSdk = "34"
final def quickstepMinSdk = "29"
final def quickstepMaxSdk = "34"

android {
Expand Down Expand Up @@ -304,6 +313,14 @@ dependencies {
withQuickstepImplementation projects.systemUIPluginCore
withQuickstepCompileOnly projects.systemUICommon

// QuickSwitch Compat
withQuickstepImplementation projects.compatLib
withQuickstepImplementation projects.compatLib.compatLibVQ
withQuickstepImplementation projects.compatLib.compatLibVR
withQuickstepImplementation projects.compatLib.compatLibVS
withQuickstepImplementation projects.compatLib.compatLibVT
withQuickstepImplementation projects.compatLib.compatLibVU

implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd-14.jar')

implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell-14.jar')
Expand Down Expand Up @@ -382,6 +399,10 @@ ksp {
}

spotless {
java {
target("compatLib/**/src/**/*.java")
googleJavaFormat().aosp()
}
kotlin {
target("lawnchair/src/**/*.kt")
ktlint().customRuleSets([
Expand Down
1 change: 1 addition & 0 deletions compatLib/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Lawnchair Quickstep Compat Lib
12 changes: 11 additions & 1 deletion compatLib/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ plugins {

android {
namespace "app.lawnchair.compatlib"

buildFeatures {
aidl true
}

sourceSets {
main {
aidl.srcDirs = ['src/main/java']
}
}
}

addFrameworkJar('framework-12.jar')
addFrameworkJar('framework-14.jar')
14 changes: 14 additions & 0 deletions compatLib/compatLibVQ/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
plugins {
id 'com.android.library'
}

android {
namespace "app.lawnchair.compatlib.ten"
}

addFrameworkJar('framework-10.jar')

dependencies {
implementation projects.compatLib
implementation projects.compatLib.compatLibVR
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package app.lawnchair.compatlib.ten;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.WindowConfiguration;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.os.RemoteException;
import android.view.IRecentsAnimationController;
import android.view.IRecentsAnimationRunner;
import android.view.RemoteAnimationTarget;
import app.lawnchair.compatlib.RecentsAnimationRunnerCompat;
import app.lawnchair.compatlib.eleven.ActivityManagerCompatVR;
import java.util.List;

public class ActivityManagerCompatVQ extends ActivityManagerCompatVR {

@Override
public void invalidateHomeTaskSnapshot(Activity homeActivity) {
// do nothing ,android Q not support
}

@Override
public ActivityManager.RunningTaskInfo[] getRunningTasks(boolean filterOnlyVisibleRecents) {

int ignoreActivityType = WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
if (filterOnlyVisibleRecents) {
ignoreActivityType = WindowConfiguration.ACTIVITY_TYPE_RECENTS;
}

try {

List<ActivityManager.RunningTaskInfo> tasks =
ActivityTaskManager.getService()
.getFilteredTasks(
NUM_RECENT_ACTIVITIES_REQUEST,
ignoreActivityType,
WindowConfiguration.WINDOWING_MODE_PINNED);
if (tasks.isEmpty()) {
return null;
}
return tasks.toArray(new ActivityManager.RunningTaskInfo[tasks.size()]);
} catch (RemoteException e) {
return null;
}
}

@Override
public void startRecentsActivity(
Intent intent, long eventTime, RecentsAnimationRunnerCompat runnerCompat) {

IRecentsAnimationRunner runner = null;
if (runnerCompat != null) {
runner =
new IRecentsAnimationRunner.Stub() {
@Override
public void onAnimationStart(
IRecentsAnimationController controller,
RemoteAnimationTarget[] apps,
Rect homeContentInsets,
Rect minimizedHomeBounds) {
runnerCompat.onAnimationStart(
controller, apps, null, homeContentInsets, minimizedHomeBounds);
}

public void reportAllDrawn() {}

@Override
public void onAnimationCanceled(boolean deferredWithScreenshot) {
runnerCompat.onAnimationCanceled(deferredWithScreenshot);
}
};
}
try {
ActivityTaskManager.getService().startRecentsActivity(intent, null, runner);
} catch (RemoteException e) {

}
}

@Override
public ActivityManager.RunningTaskInfo getRunningTask(boolean filterOnlyVisibleRecents) {

int ignoreActivityType = WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
if (filterOnlyVisibleRecents) {
ignoreActivityType = WindowConfiguration.ACTIVITY_TYPE_RECENTS;
}
try {
List<ActivityManager.RunningTaskInfo> tasks =
ActivityTaskManager.getService()
.getFilteredTasks(
1,
ignoreActivityType,
WindowConfiguration.WINDOWING_MODE_PINNED);
if (tasks.isEmpty()) {
return null;
}
return tasks.get(0);
} catch (RemoteException e) {
return null;
}
}

@Override
public ThumbnailData makeThumbnailData(ActivityManager.TaskSnapshot snapshot) {
ThumbnailData data = new ThumbnailData();
data.thumbnail =
Bitmap.wrapHardwareBuffer(snapshot.getSnapshot(), snapshot.getColorSpace());
data.insets = new Rect(snapshot.getContentInsets());
data.orientation = snapshot.getOrientation();
data.reducedResolution = snapshot.isReducedResolution();
// TODO(b/149579527): Pass task size instead of computing scale.
// Assume width and height were scaled the same; compute scale only for width
data.scale = snapshot.getScale();
data.isRealSnapshot = snapshot.isRealSnapshot();
data.isTranslucent = snapshot.isTranslucent();
data.windowingMode = snapshot.getWindowingMode();
data.systemUiVisibility = snapshot.getSystemUiVisibility();
return data;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package app.lawnchair.compatlib.ten;

import android.app.ActivityOptions;
import android.content.Context;
import android.os.Handler;
import android.view.RemoteAnimationAdapter;
import app.lawnchair.compatlib.ActivityOptionsCompat;

public class ActivityOptionsCompatVQ extends ActivityOptionsCompat {
@Override
public ActivityOptions makeCustomAnimation(
Context context,
int enterResId,
int exitResId,
Runnable callback,
Handler callbackHandler) {
return ActivityOptions.makeCustomAnimation(
context,
enterResId,
exitResId,
callbackHandler,
new ActivityOptions.OnAnimationStartedListener() {
@Override
public void onAnimationStarted() {
if (callback != null) {
callbackHandler.post(callback);
}
}
});
}

@Override
public ActivityOptions makeRemoteAnimation(
RemoteAnimationAdapter remoteAnimationAdapter,
Object remoteTransition,
String debugName) {
return ActivityOptions.makeRemoteAnimation(remoteAnimationAdapter);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package app.lawnchair.compatlib.ten;

import androidx.annotation.NonNull;
import app.lawnchair.compatlib.ActivityManagerCompat;
import app.lawnchair.compatlib.ActivityOptionsCompat;
import app.lawnchair.compatlib.eleven.QuickstepCompatFactoryVR;

public class QuickstepCompatFactoryVQ extends QuickstepCompatFactoryVR {

@NonNull
@Override
public ActivityManagerCompat getActivityManagerCompat() {
return new ActivityManagerCompatVQ();
}

@NonNull
@Override
public ActivityOptionsCompat getActivityOptionsCompat() {
return new ActivityOptionsCompatVQ();
}
}
File renamed without changes.
Loading

0 comments on commit da2bddd

Please sign in to comment.