Merge "Make update_prebilts.py fail gracefully on bad sdk zip" am: 3c438b3962 am: c5c89c1e95

Change-Id: I0b3e308dd7380739781ef94ca433ea9a417b8970
diff --git a/update_prebuilts/update_prebuilts.py b/update_prebuilts/update_prebuilts.py
index cce652c..cde5c27 100755
--- a/update_prebuilts/update_prebuilts.py
+++ b/update_prebuilts/update_prebuilts.py
@@ -645,12 +645,6 @@
                                  os.path.join(extras_dir, 'material-design-x'), extract_res=False)
 
 
-def extract_to(zip_file, filename, parent_path):
-    zip_path = next(filter(lambda path: filename in path, zip_file.namelist()))
-    src_path = zip_file.extract(zip_path)
-    dst_path = path(parent_path, filename)
-    mv(src_path, dst_path)
-
 def update_framework(build_id, sdk_dir):
     api_scope_list = ['public', 'system', 'test']
     if sdk_dir == 'current':
@@ -675,7 +669,15 @@
 
             with zipfile.ZipFile(artifact_path) as zipFile:
                 for filename in ['android.jar', 'framework.aidl', 'uiautomator.jar']:
-                    extract_to(zipFile, filename, target_dir)
+                    matches = list(filter(lambda path: filename in path, zipFile.namelist()))
+                    if len(matches) != 1:
+                        print_e('Expected 1 file named \'%s\' in zip %s, found %d' %
+                                (filename, zipFile.filename, len(matches)))
+                        return False
+                    zip_path = matches[0]
+                    src_path = zipFile.extract(zip_path)
+                    dst_path = path(target_dir, filename)
+                    mv(src_path, dst_path)
 
     return True