Merge "releasetools: compare size between compressed and patch while build otapackage"
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index fad6a5e..5f81d53 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -1203,10 +1203,11 @@
     return self._DoCall("VerifyOTA_Assertions")
 
 class File(object):
-  def __init__(self, name, data):
+  def __init__(self, name, data, compress_size = None):
     self.name = name
     self.data = data
     self.size = len(data)
+    self.compress_size = compress_size or self.size
     self.sha1 = sha1(data).hexdigest()
 
   @classmethod
diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py
index f32d9d8..403a3a4 100755
--- a/tools/releasetools/ota_from_target_files.py
+++ b/tools/releasetools/ota_from_target_files.py
@@ -748,7 +748,7 @@
       basefilename = info.filename[len(prefix):]
       fn = partition + "/" + basefilename
       data = z.read(info.filename)
-      out[fn] = common.File(fn, data)
+      out[fn] = common.File(fn, data, info.compress_size)
   return out
 
 
@@ -1379,7 +1379,7 @@
     for diff in diffs:
       tf, sf, d = diff.GetPatch()
       path = "/".join(tf.name.split("/")[:-1])
-      if d is None or len(d) > tf.size * OPTIONS.patch_threshold or \
+      if d is None or len(d) > tf.compress_size * OPTIONS.patch_threshold or \
           path not in known_paths:
         # patch is almost as big as the file; don't bother patching
         # or a patch + rename cannot take place due to the target