Merge "Merge TP1A.220905.004 to aosp-master - DO NOT MERGE"
This commit is contained in:
commit
9f510b1618
@ -5956,7 +5956,7 @@ package android.location {
|
|||||||
method public int getEphemerisSource();
|
method public int getEphemerisSource();
|
||||||
method @FloatRange public double getIonoDelayMeters();
|
method @FloatRange public double getIonoDelayMeters();
|
||||||
method @IntRange(from=0, to=1023) public int getIssueOfDataClock();
|
method @IntRange(from=0, to=1023) public int getIssueOfDataClock();
|
||||||
method @IntRange(from=0, to=255) public int getIssueOfDataEphemeris();
|
method @IntRange(from=0, to=1023) public int getIssueOfDataEphemeris();
|
||||||
method @Nullable public android.location.SatellitePvt.PositionEcef getPositionEcef();
|
method @Nullable public android.location.SatellitePvt.PositionEcef getPositionEcef();
|
||||||
method @IntRange(from=0) public long getTimeOfClockSeconds();
|
method @IntRange(from=0) public long getTimeOfClockSeconds();
|
||||||
method @IntRange(from=0) public long getTimeOfEphemerisSeconds();
|
method @IntRange(from=0) public long getTimeOfEphemerisSeconds();
|
||||||
@ -5984,7 +5984,7 @@ package android.location {
|
|||||||
method @NonNull public android.location.SatellitePvt.Builder setEphemerisSource(int);
|
method @NonNull public android.location.SatellitePvt.Builder setEphemerisSource(int);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange(from=0.0f, to=100.0f) double);
|
method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange(from=0.0f, to=100.0f) double);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataClock(@IntRange(from=0, to=1023) int);
|
method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataClock(@IntRange(from=0, to=1023) int);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataEphemeris(@IntRange(from=0, to=255) int);
|
method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataEphemeris(@IntRange(from=0, to=1023) int);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setPositionEcef(@NonNull android.location.SatellitePvt.PositionEcef);
|
method @NonNull public android.location.SatellitePvt.Builder setPositionEcef(@NonNull android.location.SatellitePvt.PositionEcef);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setTimeOfClockSeconds(@IntRange(from=0) long);
|
method @NonNull public android.location.SatellitePvt.Builder setTimeOfClockSeconds(@IntRange(from=0) long);
|
||||||
method @NonNull public android.location.SatellitePvt.Builder setTimeOfEphemerisSeconds(@IntRange(from=0) long);
|
method @NonNull public android.location.SatellitePvt.Builder setTimeOfEphemerisSeconds(@IntRange(from=0) long);
|
||||||
|
@ -539,7 +539,7 @@ public final class SatellitePvt implements Parcelable {
|
|||||||
*
|
*
|
||||||
* <p>This field is valid if {@link #hasIssueOfDataEphemeris()} is true.
|
* <p>This field is valid if {@link #hasIssueOfDataEphemeris()} is true.
|
||||||
*/
|
*/
|
||||||
@IntRange(from = 0, to = 255)
|
@IntRange(from = 0, to = 1023)
|
||||||
public int getIssueOfDataEphemeris() {
|
public int getIssueOfDataEphemeris() {
|
||||||
return mIssueOfDataEphemeris;
|
return mIssueOfDataEphemeris;
|
||||||
}
|
}
|
||||||
@ -847,8 +847,8 @@ public final class SatellitePvt implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public Builder setIssueOfDataEphemeris(
|
public Builder setIssueOfDataEphemeris(
|
||||||
@IntRange(from = 0, to = 255) int issueOfDataEphemeris) {
|
@IntRange(from = 0, to = 1023) int issueOfDataEphemeris) {
|
||||||
Preconditions.checkArgumentInRange(issueOfDataEphemeris, 0, 255,
|
Preconditions.checkArgumentInRange(issueOfDataEphemeris, 0, 1023,
|
||||||
"issueOfDataEphemeris");
|
"issueOfDataEphemeris");
|
||||||
mIssueOfDataEphemeris = issueOfDataEphemeris;
|
mIssueOfDataEphemeris = issueOfDataEphemeris;
|
||||||
mFlags = (byte) (mFlags | HAS_ISSUE_OF_DATA_EPHEMERIS);
|
mFlags = (byte) (mFlags | HAS_ISSUE_OF_DATA_EPHEMERIS);
|
||||||
|
@ -599,9 +599,7 @@ public abstract class PanelViewController {
|
|||||||
float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) {
|
float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) {
|
||||||
if (target == mExpandedHeight && mOverExpansion == 0.0f) {
|
if (target == mExpandedHeight && mOverExpansion == 0.0f) {
|
||||||
// We're at the target and didn't fling and there's no overshoot
|
// We're at the target and didn't fling and there's no overshoot
|
||||||
endJankMonitoring(CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE);
|
onFlingEnd(false /* cancelled */);
|
||||||
mKeyguardStateController.notifyPanelFlingEnd();
|
|
||||||
notifyExpandingFinished();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mIsFlinging = true;
|
mIsFlinging = true;
|
||||||
|
@ -985,6 +985,21 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
|||||||
verify(mKeyguardStateController).notifyPanelFlingEnd();
|
verify(mKeyguardStateController).notifyPanelFlingEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSwipe_exactlyToTarget_notifiesNssl() {
|
||||||
|
// No over-expansion
|
||||||
|
mNotificationPanelViewController.setOverExpansion(0f);
|
||||||
|
// Fling to a target that is equal to the current position (i.e. a no-op fling).
|
||||||
|
mNotificationPanelViewController.flingToHeight(
|
||||||
|
0f,
|
||||||
|
true,
|
||||||
|
mNotificationPanelViewController.mExpandedHeight,
|
||||||
|
1f,
|
||||||
|
false);
|
||||||
|
// Verify that the NSSL is notified that the panel is *not* flinging.
|
||||||
|
verify(mNotificationStackScrollLayoutController).setPanelFlinging(false);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDoubleTapRequired_Keyguard() {
|
public void testDoubleTapRequired_Keyguard() {
|
||||||
FalsingManager.FalsingTapListener listener = getFalsingTapListener();
|
FalsingManager.FalsingTapListener listener = getFalsingTapListener();
|
||||||
|
@ -398,18 +398,7 @@ public class AppPredictionPerUserService extends
|
|||||||
final IBinder.DeathRecipient mDeathRecipient;
|
final IBinder.DeathRecipient mDeathRecipient;
|
||||||
|
|
||||||
private final RemoteCallbackList<IPredictionCallback> mCallbacks =
|
private final RemoteCallbackList<IPredictionCallback> mCallbacks =
|
||||||
new RemoteCallbackList<IPredictionCallback>() {
|
new RemoteCallbackList<>();
|
||||||
@Override
|
|
||||||
public void onCallbackDied(IPredictionCallback callback) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Slog.d(TAG, "Binder died for session Id=" + mSessionId
|
|
||||||
+ " and callback=" + callback.asBinder());
|
|
||||||
}
|
|
||||||
if (mCallbacks.getRegisteredCallbackCount() == 0) {
|
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
AppPredictionSessionInfo(
|
AppPredictionSessionInfo(
|
||||||
@NonNull final AppPredictionSessionId id,
|
@NonNull final AppPredictionSessionId id,
|
||||||
|
@ -323,7 +323,8 @@ public abstract class AppsFilterBase implements AppsFilterSnapshot {
|
|||||||
return false;
|
return false;
|
||||||
} else if (Process.isSdkSandboxUid(callingAppId)) {
|
} else if (Process.isSdkSandboxUid(callingAppId)) {
|
||||||
// we only allow sdk sandbox processes access to forcequeryable packages
|
// we only allow sdk sandbox processes access to forcequeryable packages
|
||||||
return !isForceQueryable(targetPkgSetting.getAppId());
|
return !isForceQueryable(targetPkgSetting.getAppId())
|
||||||
|
&& !isImplicitlyQueryable(callingAppId, targetPkgSetting.getAppId());
|
||||||
}
|
}
|
||||||
if (mCacheReady) { // use cache
|
if (mCacheReady) { // use cache
|
||||||
if (!shouldFilterApplicationUsingCache(callingUid,
|
if (!shouldFilterApplicationUsingCache(callingUid,
|
||||||
|
@ -3701,8 +3701,9 @@ final class InstallPackageHelper {
|
|||||||
parsedPackage.getPackageName());
|
parsedPackage.getPackageName());
|
||||||
|
|
||||||
boolean ignoreSharedUserId = false;
|
boolean ignoreSharedUserId = false;
|
||||||
if (installedPkgSetting == null) {
|
if (installedPkgSetting == null || !installedPkgSetting.hasSharedUser()) {
|
||||||
// We can directly ignore sharedUserSetting for new installs
|
// Directly ignore sharedUserSetting for new installs, or if the app has
|
||||||
|
// already left shared UID
|
||||||
ignoreSharedUserId = parsedPackage.isLeavingSharedUid();
|
ignoreSharedUserId = parsedPackage.isLeavingSharedUid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,8 +313,7 @@ public class ParsedPermissionUtils {
|
|||||||
final ParsedPermission perm = checkDuplicatePerm.get(name);
|
final ParsedPermission perm = checkDuplicatePerm.get(name);
|
||||||
if (isMalformedDuplicate(parsedPermission, perm)) {
|
if (isMalformedDuplicate(parsedPermission, perm)) {
|
||||||
// Fix for b/213323615
|
// Fix for b/213323615
|
||||||
EventLog.writeEvent(0x534e4554, "213323615",
|
EventLog.writeEvent(0x534e4554, "213323615");
|
||||||
"The package " + pkg.getPackageName() + " seems malicious");
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
checkDuplicatePerm.put(name, parsedPermission);
|
checkDuplicatePerm.put(name, parsedPermission);
|
||||||
|
@ -334,18 +334,7 @@ public class SmartspacePerUserService extends
|
|||||||
@NonNull
|
@NonNull
|
||||||
private final SmartspaceConfig mSmartspaceConfig;
|
private final SmartspaceConfig mSmartspaceConfig;
|
||||||
private final RemoteCallbackList<ISmartspaceCallback> mCallbacks =
|
private final RemoteCallbackList<ISmartspaceCallback> mCallbacks =
|
||||||
new RemoteCallbackList<ISmartspaceCallback>() {
|
new RemoteCallbackList<>();
|
||||||
@Override
|
|
||||||
public void onCallbackDied(ISmartspaceCallback callback) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Slog.d(TAG, "Binder died for session Id=" + mSessionId
|
|
||||||
+ " and callback=" + callback.asBinder());
|
|
||||||
}
|
|
||||||
if (mCallbacks.getRegisteredCallbackCount() == 0) {
|
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SmartspaceSessionInfo(
|
SmartspaceSessionInfo(
|
||||||
@NonNull final SmartspaceSessionId id,
|
@NonNull final SmartspaceSessionId id,
|
||||||
|
@ -1376,6 +1376,39 @@ public class AppsFilterImplTest {
|
|||||||
null /* callingSetting */, target, SYSTEM_USER));
|
null /* callingSetting */, target, SYSTEM_USER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSdkSandbox_implicitAccessGranted_canSeePackage() throws Exception {
|
||||||
|
final AppsFilterImpl appsFilter =
|
||||||
|
new AppsFilterImpl(mFeatureConfigMock, new String[]{}, false, null,
|
||||||
|
mMockHandler);
|
||||||
|
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
|
||||||
|
watcher.register();
|
||||||
|
simulateAddBasicAndroid(appsFilter);
|
||||||
|
watcher.verifyChangeReported("addBasic");
|
||||||
|
appsFilter.onSystemReady(mPmInternal);
|
||||||
|
watcher.verifyChangeReported("systemReady");
|
||||||
|
|
||||||
|
PackageSetting target = simulateAddPackage(appsFilter,
|
||||||
|
pkg("com.some.package"), DUMMY_TARGET_APPID,
|
||||||
|
setting -> setting.setPkgFlags(ApplicationInfo.FLAG_SYSTEM));
|
||||||
|
|
||||||
|
int callingUid = 20123;
|
||||||
|
assertTrue(Process.isSdkSandboxUid(callingUid));
|
||||||
|
|
||||||
|
// Without granting the implicit access the app shouldn't be visible to the sdk sandbox uid.
|
||||||
|
assertTrue(
|
||||||
|
appsFilter.shouldFilterApplication(mSnapshot, callingUid,
|
||||||
|
null /* callingSetting */, target, SYSTEM_USER));
|
||||||
|
|
||||||
|
appsFilter.grantImplicitAccess(callingUid, target.getAppId(), false /* retainOnUpdate */);
|
||||||
|
watcher.verifyChangeReported("grantImplicitAccess");
|
||||||
|
|
||||||
|
// After implicit access was granted the app should be visible to the sdk sandbox uid.
|
||||||
|
assertFalse(
|
||||||
|
appsFilter.shouldFilterApplication(mSnapshot, callingUid,
|
||||||
|
null /* callingSetting */, target, SYSTEM_USER));
|
||||||
|
}
|
||||||
|
|
||||||
private List<Integer> toList(int[] array) {
|
private List<Integer> toList(int[] array) {
|
||||||
ArrayList<Integer> ret = new ArrayList<>(array.length);
|
ArrayList<Integer> ret = new ArrayList<>(array.length);
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user