Implement EncodedBuffer that strip pii based on given privacy request. The reason to implement another buffer is the length-delimited field's size could change when its submessage gets stripped. It also intends to keep the orignal data around for other requests to consume it. In addition, the section implementation has adapted EncodedBuffer so write out to each request's fd could be request-specific. The next step is allow requests to set its privacy spec. Notice the current design set the privacy spec of dropbox to AUTOMATIC, this behavior might change in the future. Bug: 64687253 Test: unit tests are writtern, see README.md for how to run unit tests. Change-Id: I7ac236b8265ba9289dc6e17a8a5bf7f67ffb6bf5
94 lines
2.4 KiB
C++
94 lines
2.4 KiB
C++
/*
|
|
* Copyright (C) 2017 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.
|
|
*/
|
|
|
|
#ifndef INCIDENT_HELPER_H
|
|
#define INCIDENT_HELPER_H
|
|
|
|
#include <utils/Errors.h>
|
|
#include <utils/String8.h>
|
|
|
|
using namespace android;
|
|
|
|
/**
|
|
* Base class for text parser
|
|
*/
|
|
class TextParserBase {
|
|
public:
|
|
String8 name;
|
|
|
|
TextParserBase(String8 name) : name(name) {};
|
|
virtual ~TextParserBase() {};
|
|
|
|
virtual status_t Parse(const int in, const int out) const = 0;
|
|
};
|
|
|
|
/**
|
|
* No op parser returns what it reads
|
|
*/
|
|
class NoopParser : public TextParserBase {
|
|
public:
|
|
NoopParser() : TextParserBase(String8("NoopParser")) {};
|
|
~NoopParser() {};
|
|
|
|
virtual status_t Parse(const int in, const int out) const;
|
|
};
|
|
|
|
/**
|
|
* This parser is used for testing only, results in timeout.
|
|
*/
|
|
class TimeoutParser : public TextParserBase {
|
|
public:
|
|
TimeoutParser() : TextParserBase(String8("TimeoutParser")) {};
|
|
~TimeoutParser() {};
|
|
|
|
virtual status_t Parse(const int /** in */, const int /** out */) const { while (true); };
|
|
};
|
|
|
|
/**
|
|
* This parser is used for testing only, results in reversed input text.
|
|
*/
|
|
class ReverseParser : public TextParserBase {
|
|
public:
|
|
ReverseParser() : TextParserBase(String8("ReverseParser")) {};
|
|
~ReverseParser() {};
|
|
|
|
virtual status_t Parse(const int in, const int out) const;
|
|
};
|
|
|
|
/**
|
|
* Kernel wakeup sources parser, parses text to protobuf in /d/wakeup_sources
|
|
*/
|
|
class KernelWakesParser : public TextParserBase {
|
|
public:
|
|
KernelWakesParser() : TextParserBase(String8("KernelWakeSources")) {};
|
|
~KernelWakesParser() {};
|
|
|
|
virtual status_t Parse(const int in, const int out) const;
|
|
};
|
|
|
|
/**
|
|
* Procrank parser, parses text produced by command procrank
|
|
*/
|
|
class ProcrankParser : public TextParserBase {
|
|
public:
|
|
ProcrankParser() : TextParserBase(String8("ProcrankParser")) {};
|
|
~ProcrankParser() {};
|
|
|
|
virtual status_t Parse(const int in, const int out) const;
|
|
};
|
|
|
|
#endif // INCIDENT_HELPER_H
|