| 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 sys | 5 import sys |
| 6 | 6 |
| 7 | 7 |
| 8 class Error(Exception): | 8 class Error(Exception): |
| 9 """Base class for Telemetry exceptions.""" | 9 """Base class for Telemetry exceptions.""" |
| 10 def __init__(self, msg=''): | 10 def __init__(self, msg=''): |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 It is possible that waiting for a longer period of time would result in a | 47 It is possible that waiting for a longer period of time would result in a |
| 48 successful operation. | 48 successful operation. |
| 49 """ | 49 """ |
| 50 pass | 50 pass |
| 51 | 51 |
| 52 | 52 |
| 53 class AppCrashException(Error): | 53 class AppCrashException(Error): |
| 54 def __init__(self, app=None, msg=''): | 54 def __init__(self, app=None, msg=''): |
| 55 super(AppCrashException, self).__init__(msg) | 55 super(AppCrashException, self).__init__(msg) |
| 56 self._app = app | |
| 57 self._msg = msg | 56 self._msg = msg |
| 57 self._stack_trace = app.GetStackTrace() if app else None |
| 58 | 58 |
| 59 def __str__(self): | 59 def __str__(self): |
| 60 if not self._app: | 60 if not self._stack_trace: |
| 61 return super(AppCrashException, self).__str__() | 61 return super(AppCrashException, self).__str__() |
| 62 divider = '*' * 80 | 62 divider = '*' * 80 |
| 63 return '%s\nStack Trace:\n%s\n\t%s\n%s' % ( | 63 return '%s\nStack Trace:\n%s\n\t%s\n%s' % ( |
| 64 super(AppCrashException, self).__str__(), divider, | 64 super(AppCrashException, self).__str__(), divider, |
| 65 self._app.GetStackTrace().replace('\n', '\n\t'), divider) | 65 self._stack_trace.replace('\n', '\n\t'), divider) |
| 66 | 66 |
| 67 | 67 |
| 68 class DevtoolsTargetCrashException(AppCrashException): | 68 class DevtoolsTargetCrashException(AppCrashException): |
| 69 """Represents a crash of the current devtools target but not the overall app. | 69 """Represents a crash of the current devtools target but not the overall app. |
| 70 | 70 |
| 71 This can be a tab or a WebView. In this state, the tab/WebView is | 71 This can be a tab or a WebView. In this state, the tab/WebView is |
| 72 gone, but the underlying browser is still alive. | 72 gone, but the underlying browser is still alive. |
| 73 """ | 73 """ |
| 74 def __init__(self, app, msg='Devtools target crashed'): | 74 def __init__(self, app, msg='Devtools target crashed'): |
| 75 super(DevtoolsTargetCrashException, self).__init__(app, msg) | 75 super(DevtoolsTargetCrashException, self).__init__(app, msg) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 """ Represents an exception when encountering an unsupported Android APK. """ | 122 """ Represents an exception when encountering an unsupported Android APK. """ |
| 123 | 123 |
| 124 | 124 |
| 125 class PackageDetectionError(Error): | 125 class PackageDetectionError(Error): |
| 126 """ Represents an error when parsing an Android APK's package. """ | 126 """ Represents an error when parsing an Android APK's package. """ |
| 127 | 127 |
| 128 | 128 |
| 129 class AndroidDeviceParsingError(Error): | 129 class AndroidDeviceParsingError(Error): |
| 130 """Represents an error when parsing output from an android device""" | 130 """Represents an error when parsing output from an android device""" |
| 131 | 131 |
| OLD | NEW |