Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: build/android/gyp/generate_v14_compatible_resources.py

Issue 15907024: [Android] Skip generating v14 resources if already a version is specified. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Convert Android xml resources to API 14 compatible. 7 """Convert Android xml resources to API 14 compatible.
8 8
9 There are two reasons that we cannot just use API 17 attributes, 9 There are two reasons that we cannot just use API 17 attributes,
10 so we are generating another set of resources by this script. 10 so we are generating another set of resources by this script.
11 11
12 1. paddingStart attribute can cause a crash on Galaxy Tab 2. 12 1. paddingStart attribute can cause a crash on Galaxy Tab 2.
13 2. There is a bug that paddingStart does not override paddingLeft on 13 2. There is a bug that paddingStart does not override paddingLeft on
14 JB-MR1. This is fixed on JB-MR2. 14 JB-MR1. This is fixed on JB-MR2.
15 15
16 Therefore, this resource generation script can be removed when 16 Therefore, this resource generation script can be removed when
17 we drop the support for JB-MR1. 17 we drop the support for JB-MR1.
18 18
19 Please refer to http://crbug.com/235118 for the details. 19 Please refer to http://crbug.com/235118 for the details.
20 """ 20 """
21 21
22 import optparse 22 import optparse
23 import os 23 import os
24 import re
24 import shutil 25 import shutil
25 import sys 26 import sys
26 import xml.dom.minidom as minidom 27 import xml.dom.minidom as minidom
27 28
28 from util import build_utils 29 from util import build_utils
29 30
30 # Note that we are assuming 'android:' is an alias of 31 # Note that we are assuming 'android:' is an alias of
31 # the namespace 'http://schemas.android.com/apk/res/android'. 32 # the namespace 'http://schemas.android.com/apk/res/android'.
32 33
33 GRAVITY_ATTRIBUTES = ('android:gravity', 'android:layout_gravity') 34 GRAVITY_ATTRIBUTES = ('android:gravity', 'android:layout_gravity')
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 build_utils.MakeDirectory(options.res_v14_compatibility_dir) 235 build_utils.MakeDirectory(options.res_v14_compatibility_dir)
235 236
236 for name in os.listdir(options.res_dir): 237 for name in os.listdir(options.res_dir):
237 if not os.path.isdir(os.path.join(options.res_dir, name)): 238 if not os.path.isdir(os.path.join(options.res_dir, name)):
238 continue 239 continue
239 240
240 dir_pieces = name.split('-') 241 dir_pieces = name.split('-')
241 resource_type = dir_pieces[0] 242 resource_type = dir_pieces[0]
242 qualifiers = dir_pieces[1:] 243 qualifiers = dir_pieces[1:]
243 244
245 api_level_qualifier_index = -1
246 api_level_qualifier = ''
247 for index, qualifier in enumerate(qualifiers):
248 if re.match('v[0-9]+$', qualifier):
249 api_level_qualifier_index = index
250 api_level_qualifier = qualifier
251 break
252
244 # Android pre-v17 API doesn't support RTL. Skip. 253 # Android pre-v17 API doesn't support RTL. Skip.
245 if 'ldrtl' in qualifiers: 254 if 'ldrtl' in qualifiers:
246 continue 255 continue
247 256
248 # We also need to copy the original v17 resource to *-v17 directory 257 # We also need to copy the original v17 resource to *-v17 directory
249 # because the generated v14 resource will hide the original resource. 258 # because the generated v14 resource will hide the original resource.
250 input_dir = os.path.join(options.res_dir, name) 259 input_dir = os.path.join(options.res_dir, name)
251 output_v14_dir = os.path.join(options.res_v14_compatibility_dir, name) 260 output_v14_dir = os.path.join(options.res_v14_compatibility_dir, name)
252 output_v17_dir = os.path.join(options.res_v14_compatibility_dir, name + 261 output_v17_dir = os.path.join(options.res_v14_compatibility_dir, name +
253 '-v17') 262 '-v17')
254 263
255 # We only convert layout resources under layout*/, xml*/, 264 # We only convert layout resources under layout*/, xml*/,
256 # and style resources under values*/. 265 # and style resources under values*/.
257 # TODO(kkimlabs): don't process xml directly once all layouts have
258 # been moved out of XML directory. see http://crbug.com/238458
259 if resource_type in ('layout', 'xml'): 266 if resource_type in ('layout', 'xml'):
260 GenerateV14LayoutResourcesInDir(input_dir, output_v14_dir, output_v17_dir) 267 if not api_level_qualifier:
268 GenerateV14LayoutResourcesInDir(input_dir, output_v14_dir,
269 output_v17_dir)
261 elif resource_type == 'values': 270 elif resource_type == 'values':
262 if 'v17' in qualifiers: 271 if api_level_qualifier == 'v17':
263 output_qualifiers = qualifiers[:] 272 output_qualifiers = qualifiers[:]
264 del output_qualifiers[qualifiers.index('v17')] 273 del output_qualifiers[api_level_qualifier_index]
265 output_v14_dir = os.path.join(options.res_v14_compatibility_dir, 274 output_v14_dir = os.path.join(options.res_v14_compatibility_dir,
266 '-'.join([resource_type] + 275 '-'.join([resource_type] +
267 output_qualifiers)) 276 output_qualifiers))
268 GenerateV14StyleResourcesInDir(input_dir, output_v14_dir) 277 GenerateV14StyleResourcesInDir(input_dir, output_v14_dir)
269 else: 278 elif not api_level_qualifier:
270 ErrorIfStyleResourceExistsInDir(input_dir) 279 ErrorIfStyleResourceExistsInDir(input_dir)
271 280
272 if options.stamp: 281 if options.stamp:
273 build_utils.Touch(options.stamp) 282 build_utils.Touch(options.stamp)
274 283
275 if __name__ == '__main__': 284 if __name__ == '__main__':
276 sys.exit(main(sys.argv)) 285 sys.exit(main(sys.argv))
277 286
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698