make info_dict and GetTypeAndDevice available to device extensions

Change-Id: I3aa04cb6d7988fc1fdd7f179634b09ceab5749fb
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index be8333b..a236a12 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -766,3 +766,20 @@
     th.start()
   while threads:
     threads.pop().join()
+
+
+# map recovery.fstab's fs_types to mount/format "partition types"
+PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD",
+                    "ext4": "EMMC", "emmc": "EMMC" }
+
+def GetTypeAndDevice(mount_point, info):
+  fstab = info["fstab"]
+  if fstab:
+    return PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device
+  else:
+    devices = {"/boot": "boot",
+               "/recovery": "recovery",
+               "/radio": "radio",
+               "/data": "userdata",
+               "/cache": "cache"}
+    return info["partition_type"], info.get("partition_path", "") + devices[mount_point]
diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py
index c7bca49..756d673 100644
--- a/tools/releasetools/edify_generator.py
+++ b/tools/releasetools/edify_generator.py
@@ -21,10 +21,6 @@
   """Class to generate scripts in the 'edify' recovery script language
   used from donut onwards."""
 
-  # map recovery.fstab's fs_types to mount/format "partition types"
-  PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD",
-                      "ext4": "EMMC", "emmc": "EMMC" }
-
   def __init__(self, version, info):
     self.script = []
     self.mounts = set()
@@ -141,7 +137,7 @@
     if fstab:
       p = fstab[mount_point]
       self.script.append('mount("%s", "%s", "%s", "%s");' %
-                         (p.fs_type, self.PARTITION_TYPES[p.fs_type],
+                         (p.fs_type, common.PARTITION_TYPES[p.fs_type],
                           p.device, p.mount_point))
       self.mounts.add(p.mount_point)
     else:
@@ -176,7 +172,7 @@
     if fstab:
       p = fstab[partition]
       self.script.append('format("%s", "%s", "%s");' %
-                         (p.fs_type, self.PARTITION_TYPES[p.fs_type], p.device))
+                         (p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device))
     else:
       # older target-files without per-partition types
       partition = self.info.get("partition_path", "") + partition
@@ -223,7 +219,7 @@
     fstab = self.info["fstab"]
     if fstab:
       p = fstab[mount_point]
-      partition_type = self.PARTITION_TYPES[p.fs_type]
+      partition_type = common.PARTITION_TYPES[p.fs_type]
       args = {'device': p.device, 'fn': fn}
       if partition_type == "MTD":
         self.script.append(
diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files
index 98a4d19..aa691b4 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -76,10 +76,6 @@
 OPTIONS.extra_script = None
 OPTIONS.worker_threads = 3
 
-# TODO: this is duplicated from edify_generator.py; fix.
-PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD",
-                    "ext4": "EMMC", "emmc": "EMMC" }
-
 def MostPopularKey(d, default):
   """Given a dict, return the key corresponding to the largest
   value.  Returns 'default' if the dict is empty."""
@@ -95,19 +91,6 @@
   return (info.external_attr >> 16) == 0120777
 
 
-def GetTypeAndDevice(mount_point, info):
-  fstab = info["fstab"]
-  if fstab:
-    return PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device
-  else:
-    devices = {"/boot": "boot",
-               "/recovery": "recovery",
-               "/radio": "radio",
-               "/data": "userdata",
-               "/cache": "cache"}
-    return info["partition_type"], info.get("partition_path", "") + devices[mount_point]
-
-
 class Item:
   """Items represent the metadata (user, group, mode) of files and
   directories in the system image."""
@@ -328,8 +311,8 @@
   common.ZipWriteStr(output_zip, "recovery/recovery-from-boot.p", patch)
   Item.Get("system/recovery-from-boot.p", dir=False)
 
-  boot_type, boot_device = GetTypeAndDevice("/boot", OPTIONS.info_dict)
-  recovery_type, recovery_device = GetTypeAndDevice("/recovery", OPTIONS.info_dict)
+  boot_type, boot_device = common.GetTypeAndDevice("/boot", OPTIONS.info_dict)
+  recovery_type, recovery_device = common.GetTypeAndDevice("/recovery", OPTIONS.info_dict)
 
   # Images with different content will have a different first page, so
   # we check to see if this recovery has already been installed by
@@ -375,7 +358,8 @@
       output_zip=output_zip,
       script=script,
       input_tmp=OPTIONS.input_tmp,
-      metadata=metadata)
+      metadata=metadata,
+      info_dict=OPTIONS.info_dict)
 
   if not OPTIONS.omit_prereq:
     ts = GetBuildProp("ro.build.date.utc", input_zip)
@@ -476,7 +460,8 @@
       target_version=target_version,
       output_zip=output_zip,
       script=script,
-      metadata=metadata)
+      metadata=metadata,
+      info_dict=OPTIONS.info_dict)
 
   print "Loading target..."
   target_data = LoadSystemFiles(target_zip)
@@ -573,7 +558,7 @@
 
     common.ZipWriteStr(output_zip, "patch/boot.img.p", d)
 
-    boot_type, boot_device = GetTypeAndDevice("/boot", OPTIONS.info_dict)
+    boot_type, boot_device = common.GetTypeAndDevice("/boot", OPTIONS.info_dict)
 
     script.PatchCheck("%s:%s:%d:%s:%d:%s" %
                       (boot_type, boot_device,