| OLD | NEW | 
|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 logging | 5 import logging | 
| 6 | 6 | 
| 7 from devil.android import device_errors | 7 from devil.android import device_errors | 
| 8 | 8 | 
| 9 | 9 | 
| 10 class FlagChanger(object): | 10 class FlagChanger(object): | 
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 49     self._UpdateCommandLineFile() | 49     self._UpdateCommandLineFile() | 
| 50 | 50 | 
| 51   def AddFlags(self, flags): | 51   def AddFlags(self, flags): | 
| 52     """Appends flags to the command line if they aren't already there. | 52     """Appends flags to the command line if they aren't already there. | 
| 53        Saves the current flags state on the stack, so a call to Restore will | 53        Saves the current flags state on the stack, so a call to Restore will | 
| 54        change the state back to the one preceeding the call to AddFlags. | 54        change the state back to the one preceeding the call to AddFlags. | 
| 55 | 55 | 
| 56     Args: | 56     Args: | 
| 57       flags: A sequence of flags to add on, eg. ['--single-process']. | 57       flags: A sequence of flags to add on, eg. ['--single-process']. | 
| 58     """ | 58     """ | 
| 59     new_flags = self._state_stack[-1].copy() | 59     self.PushFlags(add=flags) | 
| 60     new_flags.update(flags) |  | 
| 61     self.ReplaceFlags(new_flags) |  | 
| 62 | 60 | 
| 63   def RemoveFlags(self, flags): | 61   def RemoveFlags(self, flags): | 
| 64     """Removes flags from the command line, if they exist. | 62     """Removes flags from the command line, if they exist. | 
| 65        Saves the current flags state on the stack, so a call to Restore will | 63        Saves the current flags state on the stack, so a call to Restore will | 
| 66        change the state back to the one preceeding the call to RemoveFlags. | 64        change the state back to the one preceeding the call to RemoveFlags. | 
| 67 | 65 | 
| 68        Note that calling RemoveFlags after AddFlags will result in having | 66        Note that calling RemoveFlags after AddFlags will result in having | 
| 69        two nested states. | 67        two nested states. | 
| 70 | 68 | 
| 71     Args: | 69     Args: | 
| 72       flags: A sequence of flags to remove, eg. ['--single-process'].  Note | 70       flags: A sequence of flags to remove, eg. ['--single-process'].  Note | 
| 73              that we expect a complete match when removing flags; if you want | 71              that we expect a complete match when removing flags; if you want | 
| 74              to remove a switch with a value, you must use the exact string | 72              to remove a switch with a value, you must use the exact string | 
| 75              used to add it in the first place. | 73              used to add it in the first place. | 
| 76     """ | 74     """ | 
|  | 75     self.PushFlags(remove=flags) | 
|  | 76 | 
|  | 77   def PushFlags(self, add=None, remove=None): | 
|  | 78     """Appends and removes flags to/from the command line if they aren't already | 
|  | 79        there. Saves the current flags state on the stack, so a call to Restore | 
|  | 80        will change the state back to the one preceeding the call to PushFlags. | 
|  | 81 | 
|  | 82     Args: | 
|  | 83       add: A list of flags to add on, eg. ['--single-process']. | 
|  | 84       remove: A list of flags to remove, eg. ['--single-process'].  Note that we | 
|  | 85               expect a complete match when removing flags; if you want to remove | 
|  | 86               a switch with a value, you must use the exact string used to add | 
|  | 87               it in the first place. | 
|  | 88     """ | 
| 77     new_flags = self._state_stack[-1].copy() | 89     new_flags = self._state_stack[-1].copy() | 
| 78     new_flags.difference_update(flags) | 90     if add: | 
|  | 91       new_flags.update(add) | 
|  | 92     if remove: | 
|  | 93       new_flags.difference_update(remove) | 
| 79     self.ReplaceFlags(new_flags) | 94     self.ReplaceFlags(new_flags) | 
| 80 | 95 | 
| 81   def Restore(self): | 96   def Restore(self): | 
| 82     """Restores the flags to their state prior to the last AddFlags or | 97     """Restores the flags to their state prior to the last AddFlags or | 
| 83        RemoveFlags call. | 98        RemoveFlags call. | 
| 84     """ | 99     """ | 
| 85     # The initial state must always remain on the stack. | 100     # The initial state must always remain on the stack. | 
| 86     assert len(self._state_stack) > 1, ( | 101     assert len(self._state_stack) > 1, ( | 
| 87       "Mismatch between calls to Add/RemoveFlags and Restore") | 102       "Mismatch between calls to Add/RemoveFlags and Restore") | 
| 88     self._state_stack.pop() | 103     self._state_stack.pop() | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 151 | 166 | 
| 152     # Tack on the last flag. | 167     # Tack on the last flag. | 
| 153     if not current_flag: | 168     if not current_flag: | 
| 154       if within_quotations: | 169       if within_quotations: | 
| 155         logging.warn('Unterminated quoted argument: ' + line) | 170         logging.warn('Unterminated quoted argument: ' + line) | 
| 156     else: | 171     else: | 
| 157       tokenized_flags.append(current_flag) | 172       tokenized_flags.append(current_flag) | 
| 158 | 173 | 
| 159     # Return everything but the program name. | 174     # Return everything but the program name. | 
| 160     return tokenized_flags[1:] | 175     return tokenized_flags[1:] | 
| OLD | NEW | 
|---|