Skip to content

Commit dfc8e79

Browse files
Victoria LeaseAndroid (Google) Code Review
authored andcommitted
Merge "Handle other providers in isAllowedProviderSafe()" into jb-mr1-dev
2 parents 2646b3a + 941221c commit dfc8e79

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

services/java/com/android/server/LocationManagerService.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,27 @@ private boolean isAllowedProviderSafe(String provider) {
640640
== PackageManager.PERMISSION_GRANTED) ||
641641
(mContext.checkCallingOrSelfPermission(ACCESS_COARSE_LOCATION)
642642
== PackageManager.PERMISSION_GRANTED);
643+
} else {
644+
// mock providers
645+
LocationProviderInterface lp = mMockProviders.get(provider);
646+
if (lp != null) {
647+
ProviderProperties properties = lp.getProperties();
648+
if (properties != null) {
649+
if (properties.mRequiresSatellite) {
650+
// provider requiring satellites require FINE permission
651+
return mContext.checkCallingOrSelfPermission(ACCESS_FINE_LOCATION)
652+
== PackageManager.PERMISSION_GRANTED;
653+
} else if (properties.mRequiresNetwork || properties.mRequiresCell) {
654+
// provider requiring network and or cell require COARSE or FINE
655+
return (mContext.checkCallingOrSelfPermission(ACCESS_FINE_LOCATION)
656+
== PackageManager.PERMISSION_GRANTED) ||
657+
(mContext.checkCallingOrSelfPermission(ACCESS_COARSE_LOCATION)
658+
== PackageManager.PERMISSION_GRANTED);
659+
}
660+
}
661+
}
643662
}
663+
644664
return false;
645665
}
646666

0 commit comments

Comments
 (0)