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_