summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNandana Dutt <nandana@google.com>2018-10-12 17:31:39 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-10-12 17:31:39 +0000
commit20403620348805fac031ba7b0a6b32aa06a4a856 (patch)
tree04a779c0ae25141caa7edac62599563979d78a2a
parente5e02ecbb9c07cef65ecc57a24957cd2a6fe00b3 (diff)
parentcccbb5f588be607e76a85472bda5db7aa5f16c74 (diff)
downloadnative-oreo-mr1-1.2-iot-release.tar.gz
Merge "Add a function to Dumpstate service to trigger a bugreport"android-o-mr1-iot-release-smart-display-r3oreo-mr1-1.2-iot-release
-rw-r--r--cmds/dumpstate/Android.bp13
-rw-r--r--cmds/dumpstate/DumpstateService.cpp7
-rw-r--r--cmds/dumpstate/DumpstateService.h3
-rw-r--r--cmds/dumpstate/binder/android/os/DumpstateOptions.aidl23
-rw-r--r--cmds/dumpstate/binder/android/os/DumpstateOptions.cpp46
-rw-r--r--cmds/dumpstate/binder/android/os/DumpstateOptions.h39
-rw-r--r--cmds/dumpstate/binder/android/os/IDumpstate.aidl10
7 files changed, 140 insertions, 1 deletions
diff --git a/cmds/dumpstate/Android.bp b/cmds/dumpstate/Android.bp
index 5acc09d160..e185cbe94c 100644
--- a/cmds/dumpstate/Android.bp
+++ b/cmds/dumpstate/Android.bp
@@ -57,10 +57,21 @@ cc_library_shared {
export_aidl_headers: true,
},
srcs: [
- "binder/android/os/IDumpstate.aidl",
+ "binder/android/os/DumpstateOptions.cpp",
+ ":dumpstate_aidl",
+ ],
+ export_include_dirs: ["binder"],
+}
+
+filegroup {
+ name: "dumpstate_aidl",
+ srcs: [
"binder/android/os/IDumpstateListener.aidl",
"binder/android/os/IDumpstateToken.aidl",
+ //"binder/android/os/DumpstateOptions.aidl",
+ "binder/android/os/IDumpstate.aidl",
],
+ path: "binder",
}
cc_defaults {
diff --git a/cmds/dumpstate/DumpstateService.cpp b/cmds/dumpstate/DumpstateService.cpp
index 49a78e751b..260ea4b057 100644
--- a/cmds/dumpstate/DumpstateService.cpp
+++ b/cmds/dumpstate/DumpstateService.cpp
@@ -77,6 +77,13 @@ binder::Status DumpstateService::setListener(const std::string& name,
return binder::Status::ok();
}
+binder::Status DumpstateService::startBugreport(int, const sp<IDumpstateListener>&,
+ const DumpstateOptions&, int32_t* returned_id) {
+ // TODO: fork to handle the bugreport request and return the process id or a request id here.
+ *returned_id = -1;
+ return binder::Status::ok();
+}
+
status_t DumpstateService::dump(int fd, const Vector<String16>&) {
dprintf(fd, "id: %d\n", ds_.id_);
dprintf(fd, "pid: %d\n", ds_.pid_);
diff --git a/cmds/dumpstate/DumpstateService.h b/cmds/dumpstate/DumpstateService.h
index 7bca24ae33..131aff30a3 100644
--- a/cmds/dumpstate/DumpstateService.h
+++ b/cmds/dumpstate/DumpstateService.h
@@ -41,6 +41,9 @@ class DumpstateService : public BinderService<DumpstateService>, public BnDumpst
bool getSectionDetails,
sp<IDumpstateToken>* returned_token) override;
+ binder::Status startBugreport(int fd, const sp<IDumpstateListener>& listener,
+ const DumpstateOptions& options, int32_t* returned_id) override;
+
private:
Dumpstate& ds_;
std::mutex lock_;
diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl b/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl
new file mode 100644
index 0000000000..c1a7f158cf
--- /dev/null
+++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.aidl
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2018, 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.
+ */
+
+package android.os;
+
+/**
+ * Specifies arguments for IDumpstate.
+ * {@hide}
+ */
+parcelable DumpstateOptions cpp_header "android/os/DumpstateOptions.h";
diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp b/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp
new file mode 100644
index 0000000000..5654190bc4
--- /dev/null
+++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.cpp
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2018, 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.
+ */
+
+#include <android/os/DumpstateOptions.h>
+
+#include <binder/IBinder.h>
+#include <binder/Parcel.h>
+
+namespace android {
+namespace os {
+
+status_t DumpstateOptions::readFromParcel(const ::android::Parcel* parcel) {
+ if (status_t err = parcel->readBool(&get_section_details)) {
+ return err;
+ }
+ if (status_t err = parcel->readUtf8FromUtf16(&name)) {
+ return err;
+ }
+ return android::OK;
+}
+
+status_t DumpstateOptions::writeToParcel(::android::Parcel* parcel) const {
+ if (status_t err = parcel->writeBool(get_section_details)) {
+ return err;
+ }
+ if (status_t err = parcel->writeUtf8AsUtf16(name)) {
+ return err;
+ }
+ return android::OK;
+}
+
+} // namespace os
+} // namespace android
diff --git a/cmds/dumpstate/binder/android/os/DumpstateOptions.h b/cmds/dumpstate/binder/android/os/DumpstateOptions.h
new file mode 100644
index 0000000000..a748e3c433
--- /dev/null
+++ b/cmds/dumpstate/binder/android/os/DumpstateOptions.h
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2018, 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 ANDROID_OS_DUMPSTATE_OPTIONS_H_
+#define ANDROID_OS_DUMPSTATE_OPTIONS_H_
+
+#include <binder/Parcelable.h>
+
+namespace android {
+namespace os {
+
+struct DumpstateOptions : public android::Parcelable {
+ // If true the caller can get callbacks with per-section progress details.
+ bool get_section_details = false;
+
+ // Name of the caller.
+ std::string name;
+
+ status_t writeToParcel(android::Parcel* parcel) const override;
+ status_t readFromParcel(const android::Parcel* parcel) override;
+};
+
+} // namespace os
+} // namespace android
+
+#endif // ANDROID_OS_DUMPSTATE_OPTIONS_H_
diff --git a/cmds/dumpstate/binder/android/os/IDumpstate.aidl b/cmds/dumpstate/binder/android/os/IDumpstate.aidl
index 9b11b960c5..68a4f215e2 100644
--- a/cmds/dumpstate/binder/android/os/IDumpstate.aidl
+++ b/cmds/dumpstate/binder/android/os/IDumpstate.aidl
@@ -18,6 +18,7 @@ package android.os;
import android.os.IDumpstateListener;
import android.os.IDumpstateToken;
+import android.os.DumpstateOptions;
/**
* Binder interface for the currently running dumpstate process.
@@ -25,6 +26,8 @@ import android.os.IDumpstateToken;
*/
interface IDumpstate {
+
+ // TODO: remove method once startBugReport is used by Shell.
/*
* Sets the listener for this dumpstate progress.
*
@@ -35,4 +38,11 @@ interface IDumpstate {
*/
IDumpstateToken setListener(@utf8InCpp String name, IDumpstateListener listener,
boolean getSectionDetails);
+
+ /*
+ * Starts a bugreport in a child process.
+ *
+ * Returns an identifier of the bugreport process running in the background.
+ */
+ int startBugreport(int fd, IDumpstateListener listener, in DumpstateOptions options);
}