Reland of Deduplicate Monochrome locale .paks

Instead of using system webview's resource whitelist, now uses a
generated list of resource IDs that are actually packed into
Webview's locale paks. This fixes the missing strings issue.

Original issue:
https://codereview.chromium.org/2980773002/

TBR=agrieve@chromium.org,dpranke@chromium.org,thestig@chromium.org,sadrul@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days
ago.
BUG=724110, 742388

Review-Url: https://codereview.chromium.org/2977993002
Cr-Original-Commit-Position: refs/heads/master@{#487176}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 368afac85d2ca5e22efcbb2271c0d379b2fc22ab
diff --git a/pak_util.py b/pak_util.py
index ec43f33..e98f9bd 100755
--- a/pak_util.py
+++ b/pak_util.py
@@ -62,6 +62,12 @@
     print line.encode('utf-8')
 
 
+def _ListMain(args):
+  resources, _ = data_pack.ReadDataPack(args.pak_file)
+  for resource_id in sorted(resources.keys()):
+    args.output.write('%d\n' % resource_id)
+
+
 def main():
   parser = argparse.ArgumentParser(
       description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
@@ -88,6 +94,14 @@
       help='Prints all pak IDs and contents. Useful for diffing.')
   sub_parser.add_argument('pak_file')
   sub_parser.set_defaults(func=_PrintMain)
+  
+  sub_parser = sub_parsers.add_parser('list-id',
+      help='Outputs all resource IDs to a file.')
+  sub_parser.add_argument('pak_file')
+  sub_parser.add_argument('--output', type=argparse.FileType('w'),
+      default=sys.stdout,
+      help='The resource list path to write (default stdout)')
+  sub_parser.set_defaults(func=_ListMain)
 
   if len(sys.argv) == 1:
     parser.print_help()