Merge branch 'upstream-master'

* upstream-master:
  Pull upstream changes.

Bug: 146383629
Bug: 143789408
Test: manual 'm -j libicing'
Change-Id: Iaf6e1651711c689a55e08fcdc011a052ef5f7bd7
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..f54b066
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,99 @@
+// 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.
+
+java_library {
+    name: "icing-java-proto-lite",
+    proto: {
+        // If you change the proto type, also update jarjar-rules.txt to match
+        // the corresponding proto lib's package path.
+        type: "lite",
+        include_dirs: ["external/protobuf/src"],
+        canonical_path_from_root: false,
+    },
+    srcs: ["icing/proto/*.proto"],
+    jarjar_rules: "jarjar-rules.txt",
+    sdk_version: "core_current",
+}
+
+cc_defaults {
+    name: "libicing_defaults",
+
+    // For debug / treemap purposes.
+    //strip: {
+    //    keep_symbols: true,
+    //},
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wextra",
+        "-Wno-deprecated-declarations",
+        "-Wno-ignored-qualifiers",
+        "-Wno-missing-field-initializers",
+        "-Wno-sign-compare",
+        "-Wno-tautological-constant-out-of-range-compare",
+        "-Wno-undefined-var-template",
+        "-Wno-unused-function",
+        "-Wno-unused-parameter",
+        "-Wno-extern-c-compat",
+
+        "-funsigned-char",
+        "-fvisibility=hidden",
+    ],
+}
+
+cc_library_static {
+    name: "libicing_proto_lite",
+    defaults: ["libicing_defaults"],
+    proto: {
+        type: "lite",
+        // Find protos relative from where they're specified (useful for external protos)
+        canonical_path_from_root: false,
+        // Need to be able to see the .pb.h files that are generated
+        export_proto_headers: true,
+    },
+    srcs: ["icing/**/*.proto"],
+}
+
+cc_library_shared {
+    name: "libicing",
+    defaults: ["libicing_defaults"],
+    srcs: [
+        "icing/**/*.cc",
+    ],
+    exclude_srcs: [
+        // Tests
+        "icing/**/*_test.cc",
+        // Benchmarks
+        "icing/**/*_benchmark.cc",
+        // Test-only related files (i.e. utils)
+        "icing/testing/**/*",
+        // Tools for manual debugging/investigating
+        "icing/tools/**/*",
+    ],
+    static_libs: [
+        "libicing_proto_lite",
+        "libutf",
+    ],
+    shared_libs: [
+        "libandroidicu",
+        "liblog",
+        // TODO(b/147509515): We only need the full version for GzipStream. If we can remove
+        // that dependency, then we can just use libprotobuf-cpp-lite
+        "libprotobuf-cpp-full",
+        "libz",
+    ],
+}
+
+// TODO(cassiewang): Add build rules and a TEST_MAPPING for cc_tests
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..12188f8
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "frameworks/base/apex/appsearch/service/java/com/android/server/appsearch"
+    }
+  ]
+}
diff --git a/jarjar-rules.txt b/jarjar-rules.txt
new file mode 100644
index 0000000..0f4292e
--- /dev/null
+++ b/jarjar-rules.txt
@@ -0,0 +1 @@
+rule com.google.protobuf.** com.google.android.icing.protobuf.@1