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

Commit d364859c authored by Sascha Prueter's avatar Sascha Prueter Committed by Android (Google) Code Review
Browse files

Merge "Add version identifier to app ops." into jb-mr2-dev

parents 9eb434c3 483a6bbf
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ public class AppOpsService extends IAppOpsService.Stub {
    // Write at most every 30 minutes.
    static final long WRITE_DELAY = DEBUG ? 1000 : 30*60*1000;

    static final int CURRENT_VERSION = 1;

    Context mContext;
    final AtomicFile mFile;
    final Handler mHandler;
@@ -631,6 +633,9 @@ public class AppOpsService extends IAppOpsService.Stub {
                        throw new IllegalStateException("no start tag found");
                    }

                    String versStr = parser.getAttributeValue(null, "vers");
                    int vers = versStr != null ? Integer.parseInt(versStr) : 0;

                    int outerDepth = parser.getDepth();
                    while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
                            && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
@@ -640,7 +645,7 @@ public class AppOpsService extends IAppOpsService.Stub {

                        String tagName = parser.getName();
                        if (tagName.equals("pkg")) {
                            readPackage(parser);
                            readPackage(parser, vers);
                        } else {
                            Slog.w(TAG, "Unknown element under <app-ops>: "
                                    + parser.getName());
@@ -673,7 +678,7 @@ public class AppOpsService extends IAppOpsService.Stub {
        }
    }

    void readPackage(XmlPullParser parser) throws NumberFormatException,
    void readPackage(XmlPullParser parser, int vers) throws NumberFormatException,
            XmlPullParserException, IOException {
        String pkgName = parser.getAttributeValue(null, "n");
        int outerDepth = parser.getDepth();
@@ -686,7 +691,7 @@ public class AppOpsService extends IAppOpsService.Stub {

            String tagName = parser.getName();
            if (tagName.equals("uid")) {
                readUid(parser, pkgName);
                readUid(parser, vers, pkgName);
            } else {
                Slog.w(TAG, "Unknown element under <pkg>: "
                        + parser.getName());
@@ -695,7 +700,7 @@ public class AppOpsService extends IAppOpsService.Stub {
        }
    }

    void readUid(XmlPullParser parser, String pkgName) throws NumberFormatException,
    void readUid(XmlPullParser parser, int vers, String pkgName) throws NumberFormatException,
            XmlPullParserException, IOException {
        int uid = Integer.parseInt(parser.getAttributeValue(null, "n"));
        int outerDepth = parser.getDepth();
@@ -711,8 +716,13 @@ public class AppOpsService extends IAppOpsService.Stub {
                Op op = new Op(Integer.parseInt(parser.getAttributeValue(null, "n")));
                String mode = parser.getAttributeValue(null, "m");
                if (mode != null) {
                    if (vers < CURRENT_VERSION && op.op != AppOpsManager.OP_POST_NOTIFICATION) {
                        Slog.w(TAG, "AppOps vers " + vers + ": drop mode from "
                                + pkgName + "/" + uid + " op " + op.op);
                    } else {
                        op.mode = Integer.parseInt(mode);
                    }
                }
                String time = parser.getAttributeValue(null, "t");
                if (time != null) {
                    op.time = Long.parseLong(time);
@@ -761,6 +771,7 @@ public class AppOpsService extends IAppOpsService.Stub {
                out.setOutput(stream, "utf-8");
                out.startDocument(null, true);
                out.startTag(null, "app-ops");
                out.attribute(null, "vers", Integer.toString(CURRENT_VERSION));

                if (allOps != null) {
                    String lastPkg = null;