Make metadata field mandatory for program info struct.

Test: VTS, manual
Change-Id: I3e4ed1f203dc28315d7c7db10c9ce3d83e4ec59d
diff --git a/radio/IRadio.cpp b/radio/IRadio.cpp
index ebf3859..5bbe7cb 100644
--- a/radio/IRadio.cpp
+++ b/radio/IRadio.cpp
@@ -172,16 +172,11 @@
     virtual status_t getProgramInformation(struct radio_program_info *info)
     {
         Parcel data, reply;
-        if (info == NULL) {
+        if (info == nullptr || info->metadata == nullptr) {
             return BAD_VALUE;
         }
         radio_metadata_t *metadata = info->metadata;
         data.writeInterfaceToken(IRadio::getInterfaceDescriptor());
-        if (metadata != NULL) {
-            data.writeUint32(1);
-        } else {
-            data.writeUint32(0);
-        }
         status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply);
         if (status == NO_ERROR) {
             status = (status_t)reply.readInt32();
@@ -190,13 +185,13 @@
                 // restore local metadata pointer
                 info->metadata = metadata;
 
-                uint32_t metatataSize = reply.readUint32();
-                if ((metadata != NULL) && (metatataSize != 0)) {
-                    radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metatataSize);
+                uint32_t metadataSize = reply.readUint32();
+                if (metadataSize != 0) {
+                    radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metadataSize);
                     if (newMetadata == NULL) {
                         return NO_MEMORY;
                     }
-                    reply.read(newMetadata, metatataSize);
+                    reply.read(newMetadata, metadataSize);
                     status = radio_metadata_add_metadata(&info->metadata, newMetadata);
                     free(newMetadata);
                 }
@@ -306,21 +301,17 @@
             CHECK_INTERFACE(IRadio, data, reply);
             struct radio_program_info info;
             status_t status;
-            // query metadata only if requested by remote side
-            if (data.readUint32() == 1) {
-                status = radio_metadata_allocate(&info.metadata, 0, 0);
-                if (status != NO_ERROR) {
-                    return status;
-                }
-            } else {
-                info.metadata = NULL;
+
+            status = radio_metadata_allocate(&info.metadata, 0, 0);
+            if (status != NO_ERROR) {
+                return status;
             }
             status = getProgramInformation(&info);
 
             reply->writeInt32(status);
             if (status == NO_ERROR) {
                 reply->write(&info, sizeof(struct radio_program_info));
-                if ((info.metadata != NULL) && (radio_metadata_get_count(info.metadata) > 0)) {
+                if (radio_metadata_get_count(info.metadata) > 0) {
                     size_t size = radio_metadata_get_size(info.metadata);
                     reply->writeUint32((uint32_t)size);
                     reply->write(info.metadata, size);