OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import json | 5 import json |
6 import logging | 6 import logging |
7 import os | 7 import os |
8 import re | 8 import re |
9 | 9 |
10 | 10 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 region[1]['vma']['writable'] + | 246 region[1]['vma']['writable'] + |
247 region[1]['vma']['executable'] + | 247 region[1]['vma']['executable'] + |
248 region[1]['vma']['private'])) and | 248 region[1]['vma']['private'])) and |
249 (not rule.sharedwith or | 249 (not rule.sharedwith or |
250 not pageframe or sharedwith in rule.sharedwith)): | 250 not pageframe or sharedwith in rule.sharedwith)): |
251 return rule.name | 251 return rule.name |
252 | 252 |
253 assert False | 253 assert False |
254 | 254 |
255 @staticmethod | 255 @staticmethod |
256 def load(filename, filetype): | 256 def load(path, filename, filetype): |
257 """Loads a policy file of |filename| in a |format|. | 257 """Loads a policy file of |filename| in a |format|. |
258 | 258 |
259 Args: | 259 Args: |
260 filename: A filename to be loaded. | 260 filename: A filename to be loaded. |
261 filetype: A string to specify a type of the file. Only 'json' is | 261 filetype: A string to specify a type of the file. Only 'json' is |
262 supported for now. | 262 supported for now. |
263 | 263 |
264 Returns: | 264 Returns: |
265 A loaded Policy object. | 265 A loaded Policy object. |
266 """ | 266 """ |
267 with open(os.path.join(BASE_PATH, filename)) as policy_f: | 267 if not path: |
| 268 path = BASE_PATH |
| 269 elif path[0] == '.': |
| 270 path = os.path.join(BASE_PATH, path) |
| 271 with open(os.path.join(path, filename)) as policy_f: |
268 return Policy.parse(policy_f, filetype) | 272 return Policy.parse(policy_f, filetype) |
269 | 273 |
270 @staticmethod | 274 @staticmethod |
271 def parse(policy_f, filetype): | 275 def parse(policy_f, filetype): |
272 """Parses a policy file content in a |format|. | 276 """Parses a policy file content in a |format|. |
273 | 277 |
274 Args: | 278 Args: |
275 policy_f: An IO object to be loaded. | 279 policy_f: An IO object to be loaded. |
276 filetype: A string to specify a type of the file. Only 'json' is | 280 filetype: A string to specify a type of the file. Only 'json' is |
277 supported for now. | 281 supported for now. |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 with open(POLICIES_JSON_PATH, mode='r') as policies_f: | 399 with open(POLICIES_JSON_PATH, mode='r') as policies_f: |
396 default_policy_directory = json.load(policies_f) | 400 default_policy_directory = json.load(policies_f) |
397 return default_policy_directory | 401 return default_policy_directory |
398 | 402 |
399 @staticmethod | 403 @staticmethod |
400 def _load_policies(directory): | 404 def _load_policies(directory): |
401 LOGGER.info('Loading policy files.') | 405 LOGGER.info('Loading policy files.') |
402 policies = {} | 406 policies = {} |
403 for label in directory: | 407 for label in directory: |
404 LOGGER.info(' %s: %s' % (label, directory[label]['file'])) | 408 LOGGER.info(' %s: %s' % (label, directory[label]['file'])) |
405 loaded = Policy.load(directory[label]['file'], directory[label]['format']) | 409 path = None |
| 410 if 'path' in directory[label]: |
| 411 path = directory[label]['path'] |
| 412 loaded = Policy.load(path, directory[label]['file'], directory[label]['for
mat']) |
406 if loaded: | 413 if loaded: |
407 policies[label] = loaded | 414 policies[label] = loaded |
408 return PolicySet(policies) | 415 return PolicySet(policies) |
OLD | NEW |