Cleanup perfetto_cmd.cc
- Move android-specific stuff to perfetto_cmd_android.cc
- Move dropbox code into android_internal
- Get rid of AndroidTaskRunner. Looks like it's not necessary
anymore.
- Get rid of libandroid.so dependency (previously required for
AndroidTaskRunner). This is a huge improvement because
libandroid.so was used to pull transitively hundreds of .so(s)
Test: manual
Change-Id: I2d9a78a6a9cd146c3693fbccd88467acfbb2eac5
diff --git a/src/android_internal/BUILD.gn b/src/android_internal/BUILD.gn
index 52e86e1..d1bea0f 100644
--- a/src/android_internal/BUILD.gn
+++ b/src/android_internal/BUILD.gn
@@ -20,6 +20,7 @@
]
sources = [
"atrace_hal.h",
+ "dropbox_service.h",
"health_hal.h",
"incident_service.h",
"power_stats_hal.h",
@@ -52,6 +53,7 @@
if (perfetto_build_with_android) {
sources = [
"atrace_hal.cc",
+ "dropbox_service.cc",
"health_hal.cc",
"incident_service.cc",
"power_stats_hal.cc",
@@ -65,6 +67,7 @@
"log",
"hidlbase",
"incident",
+ "services",
"utils",
]
}
diff --git a/src/android_internal/dropbox_service.cc b/src/android_internal/dropbox_service.cc
new file mode 100644
index 0000000..8088028
--- /dev/null
+++ b/src/android_internal/dropbox_service.cc
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2019 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 "src/android_internal/dropbox_service.h"
+
+#include <android/os/DropBoxManager.h>
+#include <utils/StrongPointer.h>
+
+namespace perfetto {
+namespace android_internal {
+
+bool SaveIntoDropbox(const char* tag, int fd) {
+ using android::os::DropBoxManager;
+ android::sp<DropBoxManager> dropbox(new DropBoxManager());
+ auto status = dropbox->addFile(android::String16(tag), fd, /*flags=*/0);
+ return status.isOk();
+}
+
+} // namespace android_internal
+} // namespace perfetto
diff --git a/src/android_internal/dropbox_service.h b/src/android_internal/dropbox_service.h
new file mode 100644
index 0000000..6365355
--- /dev/null
+++ b/src/android_internal/dropbox_service.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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 SRC_ANDROID_INTERNAL_DROPBOX_SERVICE_H_
+#define SRC_ANDROID_INTERNAL_DROPBOX_SERVICE_H_
+
+namespace perfetto {
+namespace android_internal {
+
+extern "C" {
+
+// Saves the passed file into Dropbox with the given tag.
+// Takes ownership of the passed file descriptor.
+bool __attribute__((visibility("default")))
+SaveIntoDropbox(const char* tag, int fd);
+
+} // extern "C"
+
+} // namespace android_internal
+} // namespace perfetto
+
+#endif // SRC_ANDROID_INTERNAL_DROPBOX_SERVICE_H_