Merge "Remove liblog usage in MQDescriptor.h"
diff --git a/base/HidlSupport.cpp b/base/HidlSupport.cpp
index 547f7e7..e97797d 100644
--- a/base/HidlSupport.cpp
+++ b/base/HidlSupport.cpp
@@ -30,26 +30,13 @@
 
 vintf::Transport getTransportFromManifest(
         const FQName &fqName, const std::string &instanceName,
-        const std::string &manifestName,
         const vintf::HalManifest *vm) {
     if (vm == nullptr) {
-        LOG(WARNING) << "getTransportFromManifest: No " << manifestName << " manifest defined, "
-                     << "using default transport for " << fqName.string();
         return vintf::Transport::EMPTY;
     }
-    vintf::Transport tr = vm->getTransport(fqName.package(),
+    return vm->getTransport(fqName.package(),
             vintf::Version{fqName.getPackageMajorVersion(), fqName.getPackageMinorVersion()},
             fqName.name(), instanceName);
-    if (tr == vintf::Transport::EMPTY) {
-        LOG(WARNING) << "getTransportFromManifest: Cannot find entry "
-                     << fqName.string()
-                     << " in " << manifestName << " manifest, using default transport.";
-    } else {
-        LOG(DEBUG) << "getTransportFromManifest: " << fqName.string()
-                   << " declares transport method " << to_string(tr)
-                   << " in " << manifestName << " manifest";
-    }
-    return tr;
 }
 
 vintf::Transport getTransport(const std::string &interfaceName, const std::string &instanceName) {
@@ -68,13 +55,22 @@
                    << " does not specify an interface name. Using default transport.";
         return vintf::Transport::EMPTY;
     }
-    // TODO(b/34772739): modify the list if other packages are added to system/manifest.xml
-    if (fqName.inPackage("android.hidl")) {
-        return getTransportFromManifest(fqName, instanceName, "framework",
-                vintf::VintfObject::GetFrameworkHalManifest());
+
+    vintf::Transport tr = getTransportFromManifest(fqName, instanceName,
+            vintf::VintfObject::GetFrameworkHalManifest());
+    if (tr != vintf::Transport::EMPTY) {
+        return tr;
     }
-    return getTransportFromManifest(fqName, instanceName, "device",
+    tr = getTransportFromManifest(fqName, instanceName,
             vintf::VintfObject::GetDeviceHalManifest());
+    if (tr != vintf::Transport::EMPTY) {
+        return tr;
+    }
+
+    LOG(WARNING) << "getTransportFromManifest: Cannot find entry "
+                 << fqName.string()
+                 << " in either framework or device manifest, using default transport.";
+    return vintf::Transport::EMPTY;
 }
 
 namespace details {
diff --git a/manifest.xml b/manifest.xml
index 02cd8a1..8f80d90 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -1,5 +1,3 @@
-<!-- TODO(b/35434793): move to frameworks/interfaces -->
-
 <manifest version="1.0">
     <hal>
         <name>android.hidl.manager</name>
diff --git a/transport/memory/1.0/IMemory.hal b/transport/memory/1.0/IMemory.hal
index 66f37b3..14dcfb1 100644
--- a/transport/memory/1.0/IMemory.hal
+++ b/transport/memory/1.0/IMemory.hal
@@ -34,7 +34,20 @@
     updateRange(uint64_t start, uint64_t length);
 
     /**
-     * Notify that you are done modifying this memory.
+     * Notify that you are about to start reading all of this memory.
+     */
+    read();
+
+    /**
+     * Notify that you are about to read the specific range.
+     *
+     * @param start Offset from start of buffer about to be read.
+     * @param length Number of bytes to be read.
+     */
+    readRange(uint64_t start, uint64_t length);
+
+    /**
+     * Notify that you are done reading and/or writing this memory.
      *
      * Must commit all previous update's and updateAll's.
      */
diff --git a/transport/memory/1.0/default/AshmemMemory.cpp b/transport/memory/1.0/default/AshmemMemory.cpp
index 912b724..0729608 100644
--- a/transport/memory/1.0/default/AshmemMemory.cpp
+++ b/transport/memory/1.0/default/AshmemMemory.cpp
@@ -46,6 +46,16 @@
     return Void();
 }
 
+Return<void> AshmemMemory::read() {
+    // NOOP (since non-remoted memory)
+    return Void();
+}
+
+Return<void> AshmemMemory::readRange(uint64_t /* start */, uint64_t /* length */) {
+    // NOOP (since non-remoted memory)
+    return Void();
+}
+
 Return<void> AshmemMemory::commit() {
     // NOOP (since non-remoted memory)
     return Void();
diff --git a/transport/memory/1.0/default/AshmemMemory.h b/transport/memory/1.0/default/AshmemMemory.h
index 825d74e..cf2d543 100644
--- a/transport/memory/1.0/default/AshmemMemory.h
+++ b/transport/memory/1.0/default/AshmemMemory.h
@@ -44,6 +44,8 @@
     // Methods from ::android::hidl::memory::V1_0::IMemory follow.
     Return<void> update() override;
     Return<void> updateRange(uint64_t start, uint64_t length) override;
+    Return<void> read() override;
+    Return<void> readRange(uint64_t start, uint64_t length) override;
     Return<void> commit() override;
     Return<void*> getPointer() override;
     Return<uint64_t> getSize() override;