From b9437ef4f12c5b9307c50bf4a294cbc1b62f2c1a Mon Sep 17 00:00:00 2001 From: Diego Vela Date: Tue, 2 Jun 2020 10:28:16 -0700 Subject: [PATCH] Downgrade Window JetPack Add window sidecar aar. Add settings implementation of SidecarInterface. Bug: 157477145 Test: use a device with sidecar and not window extensions. atest CtsWindowManagerJetpackTestCases:ExtensionTest Change-Id: Iade7a4ba5a75ba7301cd151b54a95820a3d4bdde --- libs/WindowManager/Jetpack/Android.bp | 14 +-- .../Jetpack/androidx.window.extensions.xml | 21 ----- .../Jetpack/androidx.window.sidecar.xml | 21 +++++ .../SettingsSidecarImpl.java} | 49 +++++----- .../SidecarHelper.java} | 11 +-- .../SidecarProvider.java} | 17 ++-- .../androidx/window/sidecar/StubSidecar.java | 85 ++++++++++++++++++ .../Jetpack/window-extensions-release.aar | Bin 6427 -> 0 bytes .../Jetpack/window-sidecar-release.aar | Bin 0 -> 4366 bytes 9 files changed, 151 insertions(+), 67 deletions(-) delete mode 100644 libs/WindowManager/Jetpack/androidx.window.extensions.xml create mode 100644 libs/WindowManager/Jetpack/androidx.window.sidecar.xml rename libs/WindowManager/Jetpack/src/androidx/window/{extensions/SettingsExtensionImpl.java => sidecar/SettingsSidecarImpl.java} (79%) rename libs/WindowManager/Jetpack/src/androidx/window/{extensions/ExtensionHelper.java => sidecar/SidecarHelper.java} (92%) rename libs/WindowManager/Jetpack/src/androidx/window/{extensions/ExtensionProvider.java => sidecar/SidecarProvider.java} (70%) create mode 100644 libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java delete mode 100644 libs/WindowManager/Jetpack/window-extensions-release.aar create mode 100644 libs/WindowManager/Jetpack/window-sidecar-release.aar diff --git a/libs/WindowManager/Jetpack/Android.bp b/libs/WindowManager/Jetpack/Android.bp index 308c1a59a7aa3..4f4364f72fefe 100644 --- a/libs/WindowManager/Jetpack/Android.bp +++ b/libs/WindowManager/Jetpack/Android.bp @@ -13,26 +13,26 @@ // limitations under the License. android_library_import { - name: "window-extensions", - aars: ["window-extensions-release.aar"], + name: "window-sidecar", + aars: ["window-sidecar-release.aar"], sdk_version: "current", } java_library { - name: "androidx.window.extensions", + name: "androidx.window.sidecar", srcs: ["src/**/*.java"], - static_libs: ["window-extensions"], + static_libs: ["window-sidecar"], installable: true, sdk_version: "core_platform", vendor: true, libs: ["framework", "androidx.annotation_annotation",], - required: ["androidx.window.extensions.xml",], + required: ["androidx.window.sidecar.xml",], } prebuilt_etc { - name: "androidx.window.extensions.xml", + name: "androidx.window.sidecar.xml", vendor: true, sub_dir: "permissions", - src: "androidx.window.extensions.xml", + src: "androidx.window.sidecar.xml", filename_from_src: true, } diff --git a/libs/WindowManager/Jetpack/androidx.window.extensions.xml b/libs/WindowManager/Jetpack/androidx.window.extensions.xml deleted file mode 100644 index 1f0ff6656de02..0000000000000 --- a/libs/WindowManager/Jetpack/androidx.window.extensions.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/libs/WindowManager/Jetpack/androidx.window.sidecar.xml b/libs/WindowManager/Jetpack/androidx.window.sidecar.xml new file mode 100644 index 0000000000000..f88a5f4ae0394 --- /dev/null +++ b/libs/WindowManager/Jetpack/androidx.window.sidecar.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/SettingsExtensionImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java similarity index 79% rename from libs/WindowManager/Jetpack/src/androidx/window/extensions/SettingsExtensionImpl.java rename to libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java index 7a3fbf3ad9b8e..92e575804bbe3 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/SettingsExtensionImpl.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright (C) 2020 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. @@ -14,14 +14,14 @@ * limitations under the License. */ -package androidx.window.extensions; +package androidx.window.sidecar; import static android.view.Display.DEFAULT_DISPLAY; -import static androidx.window.extensions.ExtensionHelper.getWindowDisplay; -import static androidx.window.extensions.ExtensionHelper.isInMultiWindow; -import static androidx.window.extensions.ExtensionHelper.rotateRectToDisplayRotation; -import static androidx.window.extensions.ExtensionHelper.transformToWindowSpaceRect; +import static androidx.window.sidecar.SidecarHelper.getWindowDisplay; +import static androidx.window.sidecar.SidecarHelper.isInMultiWindow; +import static androidx.window.sidecar.SidecarHelper.rotateRectToDisplayRotation; +import static androidx.window.sidecar.SidecarHelper.transformToWindowSpaceRect; import android.content.ContentResolver; import android.content.Context; @@ -42,8 +42,8 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -class SettingsExtensionImpl extends StubExtension { - private static final String TAG = "SettingsExtension"; +class SettingsSidecarImpl extends StubSidecar { + private static final String TAG = "SettingsSidecar"; private static final String DEVICE_POSTURE = "device_posture"; private static final String DISPLAY_FEATURES = "display_features"; @@ -106,7 +106,7 @@ class SettingsExtensionImpl extends StubExtension { } } - SettingsExtensionImpl(Context context) { + SettingsSidecarImpl(Context context) { mContext = context; mSettingsObserver = new SettingsObserver(); } @@ -118,29 +118,33 @@ class SettingsExtensionImpl extends StubExtension { /** Update display features with values read from settings. */ private void updateDisplayFeatures() { for (IBinder windowToken : getWindowsListeningForLayoutChanges()) { - ExtensionWindowLayoutInfo newLayout = getWindowLayoutInfo(windowToken); + SidecarWindowLayoutInfo newLayout = getWindowLayoutInfo(windowToken); updateWindowLayout(windowToken, newLayout); } } @NonNull @Override - public ExtensionDeviceState getDeviceState() { + public SidecarDeviceState getDeviceState() { ContentResolver resolver = mContext.getContentResolver(); int posture = Settings.Global.getInt(resolver, DEVICE_POSTURE, - ExtensionDeviceState.POSTURE_UNKNOWN); - return new ExtensionDeviceState(posture); + SidecarDeviceState.POSTURE_UNKNOWN); + SidecarDeviceState deviceState = new SidecarDeviceState(); + deviceState.posture = posture; + return deviceState; } @NonNull @Override - public ExtensionWindowLayoutInfo getWindowLayoutInfo(@NonNull IBinder windowToken) { - List displayFeatures = readDisplayFeatures(windowToken); - return new ExtensionWindowLayoutInfo(displayFeatures); + public SidecarWindowLayoutInfo getWindowLayoutInfo(@NonNull IBinder windowToken) { + List displayFeatures = readDisplayFeatures(windowToken); + SidecarWindowLayoutInfo windowLayoutInfo = new SidecarWindowLayoutInfo(); + windowLayoutInfo.displayFeatures = displayFeatures; + return windowLayoutInfo; } - private List readDisplayFeatures(IBinder windowToken) { - List features = new ArrayList(); + private List readDisplayFeatures(IBinder windowToken) { + List features = new ArrayList(); int displayId = getWindowDisplay(windowToken); if (displayId != DEFAULT_DISPLAY) { Log.w(TAG, "This sample doesn't support display features on secondary displays"); @@ -170,10 +174,10 @@ class SettingsExtensionImpl extends StubExtension { int type; switch (featureType) { case FEATURE_TYPE_FOLD: - type = ExtensionDisplayFeature.TYPE_FOLD; + type = SidecarDisplayFeature.TYPE_FOLD; break; case FEATURE_TYPE_HINGE: - type = ExtensionDisplayFeature.TYPE_HINGE; + type = SidecarDisplayFeature.TYPE_HINGE; break; default: { Log.e(TAG, "Malformed feature type: " + featureType); @@ -189,8 +193,9 @@ class SettingsExtensionImpl extends StubExtension { rotateRectToDisplayRotation(featureRect, displayId); transformToWindowSpaceRect(featureRect, windowToken); if (!featureRect.isEmpty()) { - ExtensionDisplayFeature feature = - new ExtensionDisplayFeature(featureRect, type); + SidecarDisplayFeature feature = new SidecarDisplayFeature(); + feature.setRect(featureRect); + feature.setType(type); features.add(feature); } else { Log.w(TAG, "Failed to adjust feature to window"); diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionHelper.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarHelper.java similarity index 92% rename from libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionHelper.java rename to libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarHelper.java index c61f1ed2d179d..e5b6cff17b265 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionHelper.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright (C) 2020 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package androidx.window.extensions; +package androidx.window.sidecar; import static android.view.Display.INVALID_DISPLAY; import static android.view.Surface.ROTATION_0; @@ -32,12 +32,7 @@ import android.view.Surface; import androidx.annotation.Nullable; -/** - * Toolkit class for calculation of the display feature bounds within the window. - * NOTE: This sample implementation only works for Activity windows, because there is no public APIs - * to obtain layout params or bounds for arbitrary windows. - */ -class ExtensionHelper { +class SidecarHelper { /** * Rotate the input rectangle specified in default display orientation to the current display * rotation. diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionProvider.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java similarity index 70% rename from libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionProvider.java rename to libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java index 47349f11fb938..0b4915ed5dac3 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/ExtensionProvider.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SidecarProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Android Open Source Project + * Copyright (C) 2020 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package androidx.window.extensions; +package androidx.window.sidecar; import android.content.Context; @@ -22,14 +22,13 @@ import android.content.Context; * Provider class that will instantiate the library implementation. It must be included in the * vendor library, and the vendor implementation must match the signature of this class. */ -public class ExtensionProvider { - +public class SidecarProvider { /** - * The support library will instantiate the vendor implementation using this interface. - * @return An implementation of {@link ExtensionInterface}. + * Provide a simple implementation of {@link SidecarInterface} that can be replaced by + * an OEM by overriding this method. */ - public static ExtensionInterface getExtensionImpl(Context context) { - return new SettingsExtensionImpl(context); + public static SidecarInterface getSidecarImpl(Context context) { + return new SettingsSidecarImpl(context); } /** @@ -37,6 +36,6 @@ public class ExtensionProvider { * @return API version string in MAJOR.MINOR.PATCH-description format. */ public static String getApiVersion() { - return "1.0.0-settings_sample"; + return "0.1.0-settings_sample"; } } diff --git a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java new file mode 100644 index 0000000000000..199c37315c074 --- /dev/null +++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/StubSidecar.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2020 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.sidecar; + +import android.os.IBinder; + +import androidx.annotation.NonNull; + +import java.util.HashSet; +import java.util.Set; + +/** + * Basic implementation of the {@link SidecarInterface}. An OEM can choose to use it as the base + * class for their implementation. + */ +abstract class StubSidecar implements SidecarInterface { + + private SidecarCallback mSidecarCallback; + private final Set mWindowLayoutChangeListenerTokens = new HashSet<>(); + private boolean mDeviceStateChangeListenerRegistered; + + StubSidecar() { + } + + @Override + public void setSidecarCallback(@NonNull SidecarCallback sidecarCallback) { + this.mSidecarCallback = sidecarCallback; + } + + @Override + public void onWindowLayoutChangeListenerAdded(@NonNull IBinder iBinder) { + this.mWindowLayoutChangeListenerTokens.add(iBinder); + this.onListenersChanged(); + } + + @Override + public void onWindowLayoutChangeListenerRemoved(@NonNull IBinder iBinder) { + this.mWindowLayoutChangeListenerTokens.remove(iBinder); + this.onListenersChanged(); + } + + @Override + public void onDeviceStateListenersChanged(boolean isEmpty) { + this.mDeviceStateChangeListenerRegistered = !isEmpty; + this.onListenersChanged(); + } + + void updateDeviceState(SidecarDeviceState newState) { + if (this.mSidecarCallback != null) { + mSidecarCallback.onDeviceStateChanged(newState); + } + } + + void updateWindowLayout(@NonNull IBinder windowToken, + @NonNull SidecarWindowLayoutInfo newLayout) { + if (this.mSidecarCallback != null) { + mSidecarCallback.onWindowLayoutChanged(windowToken, newLayout); + } + } + + @NonNull + Set getWindowsListeningForLayoutChanges() { + return mWindowLayoutChangeListenerTokens; + } + + protected boolean hasListeners() { + return !mWindowLayoutChangeListenerTokens.isEmpty() || mDeviceStateChangeListenerRegistered; + } + + protected abstract void onListenersChanged(); +} diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar deleted file mode 100644 index 0ebbb86daf82b67bbe92d56b096b2598a3b8d5b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6427 zcmZ`;Wl$Wwfj#OilMxO`rZVr~1b^s)`7RXaE2T3IG6*_8qKf z)M>`Hq7j;UG|J+u1S^`gHO+K)ozjPXp4-KT7USv?pCf#dIV{vhzY)y*08Fu` z)oL+`

sb@1htNNBoImQZ&9aa3}orM1p>S9T-Hot8Cg{b*q^~*pw(-~BJw^JEE7Dy^doE*+7N}jQnd5eGui#-+ZJ^wbtKgy z&Wol>o)a3MhlBIb$<_>;2i<9I)$I*Dm$g zC5zFwStL&{ctpseSwvL{&as=54tG9sU@j`)9*=9h5Z*d!bP!1R|m*ndf53I;=5OA08TPO50D=S>njg1Wx6BAVn;2V96c8n-5W|{kRX2OS^bT8)norf~QcV%Av>Gxj! z4^duT_wS&s0_DsjCI-zsyCglEkp8mEpj?5=3aSP&9YS-f86gZW>ulC zffA$9T|+&dd7X$v4~h;gp^AnZnR264gUCwAtfbhL%0ku*&9(~**qt8S^Xzshgj((^gXny@Z`C@Ig3?=*W;Me*wbxtZ#Vf3W( z>TQngZ_#i7#2rh;wzz|;JArr83~)i3E=__n6~>DEnOzfTwTjnWZ{1IVjiUla+;{|EL<*GF~YYGg) zV!R|B5O9;aws`Smw$X#b+%jKyyj`5QiR|kXHxYl!$JQpM&?^`B4i#Z?CGS>oX8R|u zg5}W79VRaYmcP(Ltt;o%c1D5j^M0pRSr=tQ(MxH*CZjeFo4fo8#pIZh437%4N7S^b zfMfGl4+BHdl|kELn;7M)EfAl@hu)*&B?P&>w%}pP{0cJ_Am#OL{~hM`NZx7pR?$m` zUDmj&=h7Tumc;_jAxx&sxn%6ZVgzV~YVcI1hUln2r|%1FirQ98ggW!Gk1iG|M7n(c zWbUE;Q;w3etC@xkMD09LYcn>sm)ocwp?;TF|FWjLRSow4QVt!W+pSL!VTY$0C(o!nJLa zWkM?mk#`Bhj4zDV@a&zM;-ar~Cs~3^X^y_EQr*Mw`k|>e%czdV zD`M8HRY%a|Z=vBVX+blk%*l0etrlJR3&ZLZQRR(NTee0;{h|CHCXsn*Mspl(Z<9oO z`uEPyzK-ro8M{7Qt*V#H-_#nYMlLTQD~qPF(P5l5P29S#$+QZV= zM0M^fYhkg{Zmir+VUDf>rC1nfhqe?qS z*yUnL>kUWz^$c%;{!$E0878`d1P7_?vM4uY=5d-oiXpJ?h!e;$`oNSjSxlaH6NS zy|$hTXNBaUu)Fjp^|}|e1FjKN7hDi(VgZ}5BO8Ge`oYTC!gMgN&_vr^iE@Nd0zTf+ zG(pJ=(LSy#{?#8DuU_@I6X=Hj%$!i`ns;~^e1}3ki3QnD0@iBHnzsNJ%J;_Piez7E z#Z9}ZDra-)PC3$V1fl2B6P5Vo#sS+Mgk&CIkC-$o%6LPa@tIOX6oI(zduuc zhC&GBuNfsSOYE?_qkM^PRTxp`Jva~BI%vlIKMvak`@b#(&+$$XMz>N+syjuh3TNTD zZ^P`OLU>vGEAQXD(deR*MIbc&ky|-o9|`;BfHkD~L)OQayGbJSM$ihp`;DG4>BAO< zG@x4}DMw!YnfP5 z^UVav>hyyxwlPVuSmPdFXHofGxOb7VM~bjS^iL=^{cJ^Qtjf9sUPcU_vm8)5E`3TG zc+v2}oLLzS3Y@jdgC^n}FpK9E`VQsRKDYSy;+@XMGKc|;iKfsE$vs@2=1-SJNTrUdNv&G$X>-FfaDnWRflBTHkxLXaz>Pca_I^ z`sufJ#%M4t=d-xiHKal6n0E4yn{65;Aiq#>eH~Fy0*Kh6UitLJBSD>sjZBGLwR(ga zI$x3r0e#5Q4h$0WM26wiP^HxOpotT~rettRs7@t3x zu!-hhYi+4c)jf3{7@0-nc~aGjKUrv>$NBYg%f6Us zutL8V0=%0Ux-en0rf&>2dh*DWIb5l&Us^XfmtQ-BLPgte(~a^Tym{Lu|uI|Hf285 zJm=fnVQOYsv%pvOWj6)cG|hRz(tQ#9YHVo{y|iosEqp;lW@Wd~5D!D>?=jH*!c(~sdA*)M7v*C&Fa z{Ik`DBhw9n`ZlByHUu3Huow39_u4r?1B5W@Js+Q&)y<>QeiJ+;T4e48>Q)q(`F6u# z_T;*aQCZ?^Pu$4SYbiR0ngB;s2{v96w#S{PFK`N3SX;@<6xVddJm#WTuVOK|v(LKU zan)=XXrUN^^ z1a$OKGj`}mCc;}6M=0-(unZ@5FHh-`6&j!0P_}5z9-0srR+11EZHR)M)2h95_HC%^ zsQ6@n^~fyehif^>%@1ri;+|iJ-O@Mypz}255uSi`^=BCYML_YDQbo}o3)-GTW>EC8 zT|yv$qmQwR33JL0_XITt;4qZls!!1VC;&T)1#HC9H#aZ@*sXLkwBK6`TT zpv|br0&PEe#e7S^op+d1Ztn;h1Tl5%)H^>GATqJ#UElTuQTxql(y0gEHa3Es++OQV zCbeSvUOYoMKLK|(Ph?>4$ABQ)z^3`^-LxoW2}cHyr1|OF%x9@33G zl#@JBp@vJ}vhn5_rx|O!y~E>X)^@P+nq#ow!|eD?w%OVt_FElqA7l!l^xrJ8c=>Zr zW_;C@tVJ3dYl2ukL191fR@w8*OTp0n`^=C@9i_H7l4MzI&rL|SY0~Wd-56J>KDpI5 z8sAy0d@!kx{(7olkDJ0LS>MwFkbpGtg@SvrL(R2E!2Ggz`fFdPX0U>8x-qS? zJMU<+%=0(2wC<(lwW6k|ik??IW`?m=lFyq{jbnVfyKYHGJi&Zimpd~PVZZidSN@Fj z^uv2yQGSe(UZ5(ZkN7fPgD`i1!ytdd{dlv@{oK0zeW!n6th{cIR1=-dy(D$H|7WpM2&MWlwTmKdHSgUIO21S~|9ldq zi~zrOF;wLxu4B9M>!Dwkx)t4UL^IET7th;bU9}DoaraU$nkw(QZ7i;r1F9$MPiz&~mst24N2<@)^?y{n^}dIg(Pn`?h~miajSL2)zZ6{@ zL@O<)Tn_SxYF3)?v@S1uH`SHhIGKhP%AODJ`NXHLd-C7`mxD$N%^z76hb{^S~(XEJ+ z+htbpBqxta@LjOc5{D58>+uh}xs>u}kWJXO6A6eh5odo)RPVVU2;1g9;yQ+ekp77) zoR&u5kh;fTQejeXe;0@ohWf%ZKD3ixCuMl`MAbqo4(SRiCzRvx%g*CgK)K&ByO0x# z(i8BGyt=2aigvt7Wpd+aLk`u`S`N{$Aw3k9eL8``fDlvv*goA5T6wErAFGrRs)9WO z#yCGB#^v=NO?6ek=g^T9{-m$U6sGCr|_s}|H<{i+Z=?Jnb5wTo!c#TUO9#CMvu{w;{6*U8Jp3_ufpfld6_>c{=P zhTVOIT~^`oTKaL49lso$k1;>Lfb*P|74>9l-4x)k5zv+q$pL?Td=`+YWGJm9je+5D z3k{Es(jeQ%!-0o;Z5lu2h+>Dc0R(({-Qr~$riPpyKU|)+pE8<|0{T5zMgDMHyllzL ziYEpP`ib|Hy&`!;UoALweXw{9e12x7JtuBrx(^tB36NXoPfO@Z0DkHE`0!YGf$-~g zN9Tki7YH*(crJB$hCA~qihM#^RKC^N2&g40Z|FjDJ7XSd{2EF@x{XdL@e>V81 uZ2X@F`hSJwe~8Hc1piZa{0~?g@xN3^RYjyX|9V9HyJ3Gb`Cp+D0Qeuf5hi~C diff --git a/libs/WindowManager/Jetpack/window-sidecar-release.aar b/libs/WindowManager/Jetpack/window-sidecar-release.aar new file mode 100644 index 0000000000000000000000000000000000000000..50f101d7d1814c1273df92ef3165b5ee22182669 GIT binary patch literal 4366 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 Ob~RV8kb?5>)Bgb)tQR~0 literal 0 HcmV?d00001