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

Unverified Commit 22ad5e7d authored by Oliver Scott's avatar Oliver Scott Committed by Michael Bestas
Browse files

Split network policy XML parsing into read/write helper functions

Change-Id: I360bfad4c549c24f56201164442056f842708124
parent 8eb0d78a
Loading
Loading
Loading
Loading
+285 −276
Original line number Diff line number Diff line
@@ -258,6 +258,8 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -2213,8 +2215,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        FileInputStream fis = null;
        try {
            fis = mPolicyFile.openRead();
            readPolicyXml(fis);
        } catch (FileNotFoundException e) {
            // missing policy is okay, probably first boot
            upgradeDefaultBackgroundDataUL();
        } catch (Exception e) {
            Log.wtf(TAG, "problem reading network policy", e);
        } finally {
            IoUtils.closeQuietly(fis);
        }
    }

    private void readPolicyXml(InputStream inputStream) {
        final XmlPullParser in = Xml.newPullParser();
            in.setInput(fis, StandardCharsets.UTF_8.name());
        in.setInput(inputStream, StandardCharsets.UTF_8.name());

        // Must save the <restrict-background> tags and convert them to <uid-policy> later,
        // to skip UIDs that were explicitly blacklisted.
@@ -2407,15 +2421,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                Slog.w(TAG, "unable to update policy on UID " + uid);
            }
        }

        } catch (FileNotFoundException e) {
            // missing policy is okay, probably first boot
            upgradeDefaultBackgroundDataUL();
        } catch (Exception e) {
            Log.wtf(TAG, "problem reading network policy", e);
        } finally {
            IoUtils.closeQuietly(fis);
        }
    }

    /**
@@ -2483,8 +2488,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        try {
            fos = mPolicyFile.startWrite();

            writePolicyXml(fos);

            mPolicyFile.finishWrite(fos);
        } catch (IOException e) {
            if (fos != null) {
                mPolicyFile.failWrite(fos);
            }
        }
    }

    private void writePolicyXml(OutputStream outputStream) {
        XmlSerializer out = new FastXmlSerializer();
            out.setOutput(fos, StandardCharsets.UTF_8.name());
        out.setOutput(outputStream, StandardCharsets.UTF_8.name());
        out.startDocument(null, true);

        out.startTag(null, TAG_POLICY_LIST);
@@ -2584,13 +2600,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        out.endTag(null, TAG_WHITELIST);

        out.endDocument();

            mPolicyFile.finishWrite(fos);
        } catch (IOException e) {
            if (fos != null) {
                mPolicyFile.failWrite(fos);
            }
        }
    }

    @Override