11754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato/**
21754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Copyright (c) 2016, The Android Open Source Project
31754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
41754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
51754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * you may not use this file except in compliance with the License.
61754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * You may obtain a copy of the License at
71754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
81754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *     http://www.apache.org/licenses/LICENSE-2.0
91754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato *
101754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * Unless required by applicable law or agreed to in writing, software
111754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
121754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * See the License for the specific language governing permissions and
141754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato * limitations under the License.
151754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato */
161754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
171754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#ifndef ANDROID_OS_DUMPSTATE_ARGS_H_
181754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#define ANDROID_OS_DUMPSTATE_ARGS_H_
191754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
201754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <binder/Parcel.h>
211754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <binder/Parcelable.h>
221754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <utils/String16.h>
231754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
241754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <set>
251754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#include <vector>
261754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
27437aa6e8ad24489fcd8a7ab2c889874cfae12d0bYi Jin#include "frameworks/base/libs/incident/proto/android/os/header.pb.h"
28437aa6e8ad24489fcd8a7ab2c889874cfae12d0bYi Jin
291754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratonamespace android {
301754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratonamespace os {
311754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
321754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratousing namespace std;
331754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
34bdf58942c86240070bacc25203177cf47f6a1577Yi Jin// DESTINATION enum value, sync with proto/android/privacy.proto
35bdf58942c86240070bacc25203177cf47f6a1577Yi Jinconst uint8_t DEST_LOCAL = 0;
36bdf58942c86240070bacc25203177cf47f6a1577Yi Jinconst uint8_t DEST_EXPLICIT = 100;
37bdf58942c86240070bacc25203177cf47f6a1577Yi Jinconst uint8_t DEST_AUTOMATIC = 200;
38bdf58942c86240070bacc25203177cf47f6a1577Yi Jin
39bdf58942c86240070bacc25203177cf47f6a1577Yi Jin
401754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratoclass IncidentReportArgs : public Parcelable {
411754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratopublic:
421754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    IncidentReportArgs();
431754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    explicit IncidentReportArgs(const IncidentReportArgs& that);
441754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    virtual ~IncidentReportArgs();
451754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
461754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    virtual status_t writeToParcel(Parcel* out) const;
471754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    virtual status_t readFromParcel(const Parcel* in);
481754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
491754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void setAll(bool all);
500f0471623e91c202fb7381a050cc331572fb439fYi Jin    void setDest(int dest);
511754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void addSection(int section);
52437aa6e8ad24489fcd8a7ab2c889874cfae12d0bYi Jin    void addHeader(const IncidentHeaderProto& headerProto);
531754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
540f0471623e91c202fb7381a050cc331572fb439fYi Jin    inline bool all() const { return mAll; }
551754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    bool containsSection(int section) const;
560f0471623e91c202fb7381a050cc331572fb439fYi Jin    inline int dest() const { return mDest; }
571754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    inline const set<int>& sections() const { return mSections; }
58bdf58942c86240070bacc25203177cf47f6a1577Yi Jin    inline const vector<vector<uint8_t>>& headers() const { return mHeaders; }
591754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
601754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    void merge(const IncidentReportArgs& that);
611754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
621754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onoratoprivate:
631754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    set<int> mSections;
64bdf58942c86240070bacc25203177cf47f6a1577Yi Jin    vector<vector<uint8_t>> mHeaders;
651754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato    bool mAll;
660f0471623e91c202fb7381a050cc331572fb439fYi Jin    int mDest;
671754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato};
681754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
691754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato}
701754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato}
711754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato
721754d744a7a34731ffc07af1bc3dbfcb06864ab0Joe Onorato#endif // ANDROID_OS_DUMPSTATE_ARGS_H_
73