OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 GetterContext, | 55 GetterContext, |
56 SetterContext, | 56 SetterContext, |
57 EnumerationContext, | 57 EnumerationContext, |
58 QueryContext, | 58 QueryContext, |
59 IndexedGetterContext, | 59 IndexedGetterContext, |
60 IndexedSetterContext, | 60 IndexedSetterContext, |
61 IndexedDeletionContext, | 61 IndexedDeletionContext, |
62 UnknownContext, // FIXME: Remove this once we've flipped over to the new
API. | 62 UnknownContext, // FIXME: Remove this once we've flipped over to the new
API. |
63 }; | 63 }; |
64 | 64 |
65 ExceptionState(Context context, const char* propertyName, const char* interf
aceName, const v8::Handle<v8::Object>& creationContext, v8::Isolate* isolate) | 65 ExceptionState(Context context, const char* propertyName, const char* interf
aceName, const v8::Local<v8::Object>& creationContext, v8::Isolate* isolate) |
66 : m_code(0) | 66 : m_code(0) |
67 , m_context(context) | 67 , m_context(context) |
68 , m_propertyName(propertyName) | 68 , m_propertyName(propertyName) |
69 , m_interfaceName(interfaceName) | 69 , m_interfaceName(interfaceName) |
70 , m_creationContext(creationContext) | 70 , m_creationContext(creationContext) |
71 , m_isolate(isolate) { } | 71 , m_isolate(isolate) { } |
72 | 72 |
73 ExceptionState(Context context, const char* interfaceName, const v8::Handle<
v8::Object>& creationContext, v8::Isolate* isolate) | 73 ExceptionState(Context context, const char* interfaceName, const v8::Local<v
8::Object>& creationContext, v8::Isolate* isolate) |
74 : m_code(0) | 74 : m_code(0) |
75 , m_context(context) | 75 , m_context(context) |
76 , m_propertyName(0) | 76 , m_propertyName(0) |
77 , m_interfaceName(interfaceName) | 77 , m_interfaceName(interfaceName) |
78 , m_creationContext(creationContext) | 78 , m_creationContext(creationContext) |
79 , m_isolate(isolate) { ASSERT(m_context == ConstructionContext || m_cont
ext == EnumerationContext || m_context == IndexedSetterContext || m_context == I
ndexedGetterContext || m_context == IndexedDeletionContext); } | 79 , m_isolate(isolate) { ASSERT(m_context == ConstructionContext || m_cont
ext == EnumerationContext || m_context == IndexedSetterContext || m_context == I
ndexedGetterContext || m_context == IndexedDeletionContext); } |
80 | 80 |
81 virtual void throwDOMException(const ExceptionCode&, const String& message); | 81 virtual void throwDOMException(const ExceptionCode&, const String& message); |
82 virtual void throwTypeError(const String& message); | 82 virtual void throwTypeError(const String& message); |
83 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()); | 83 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()); |
(...skipping 13 matching lines...) Expand all Loading... |
97 return true; | 97 return true; |
98 } | 98 } |
99 | 99 |
100 // This method clears out the exception which |this| has. | 100 // This method clears out the exception which |this| has. |
101 ScriptPromise reject(ScriptState*); | 101 ScriptPromise reject(ScriptState*); |
102 | 102 |
103 Context context() const { return m_context; } | 103 Context context() const { return m_context; } |
104 const char* propertyName() const { return m_propertyName; } | 104 const char* propertyName() const { return m_propertyName; } |
105 const char* interfaceName() const { return m_interfaceName; } | 105 const char* interfaceName() const { return m_interfaceName; } |
106 | 106 |
107 void rethrowV8Exception(v8::Handle<v8::Value> value) | 107 void rethrowV8Exception(v8::Local<v8::Value> value) |
108 { | 108 { |
109 setException(value); | 109 setException(value); |
110 } | 110 } |
111 | 111 |
112 #if ENABLE(ASSERT) | 112 #if ENABLE(ASSERT) |
113 OnStackObjectChecker& onStackObjectChecker() { return m_onStackObjectChecker
; } | 113 OnStackObjectChecker& onStackObjectChecker() { return m_onStackObjectChecker
; } |
114 #endif | 114 #endif |
115 | 115 |
116 protected: | 116 protected: |
117 ExceptionCode m_code; | 117 ExceptionCode m_code; |
118 Context m_context; | 118 Context m_context; |
119 String m_message; | 119 String m_message; |
120 const char* m_propertyName; | 120 const char* m_propertyName; |
121 const char* m_interfaceName; | 121 const char* m_interfaceName; |
122 | 122 |
123 private: | 123 private: |
124 void setException(v8::Handle<v8::Value>); | 124 void setException(v8::Local<v8::Value>); |
125 void throwException(); | 125 void throwException(); |
126 | 126 |
127 String addExceptionContext(const String&) const; | 127 String addExceptionContext(const String&) const; |
128 | 128 |
129 ScopedPersistent<v8::Value> m_exception; | 129 ScopedPersistent<v8::Value> m_exception; |
130 v8::Handle<v8::Object> m_creationContext; | 130 v8::Local<v8::Object> m_creationContext; |
131 v8::Isolate* m_isolate; | 131 v8::Isolate* m_isolate; |
132 #if ENABLE(ASSERT) | 132 #if ENABLE(ASSERT) |
133 OnStackObjectChecker m_onStackObjectChecker; | 133 OnStackObjectChecker m_onStackObjectChecker; |
134 #endif | 134 #endif |
135 }; | 135 }; |
136 | 136 |
137 // Used if exceptions can/should not be directly thrown. | 137 // Used if exceptions can/should not be directly thrown. |
138 class CORE_EXPORT NonThrowableExceptionState final : public ExceptionState { | 138 class CORE_EXPORT NonThrowableExceptionState final : public ExceptionState { |
139 public: | 139 public: |
140 NonThrowableExceptionState(): ExceptionState(ExceptionState::UnknownContext,
0, 0, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()) { } | 140 NonThrowableExceptionState(): ExceptionState(ExceptionState::UnknownContext,
0, 0, v8::Local<v8::Object>(), v8::Isolate::GetCurrent()) { } |
141 virtual void throwDOMException(const ExceptionCode&, const String& message)
override; | 141 virtual void throwDOMException(const ExceptionCode&, const String& message)
override; |
142 virtual void throwTypeError(const String& message = String()) override; | 142 virtual void throwTypeError(const String& message = String()) override; |
143 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()) override; | 143 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()) override; |
144 virtual void throwRangeError(const String& message) override; | 144 virtual void throwRangeError(const String& message) override; |
145 }; | 145 }; |
146 | 146 |
147 // Used if any exceptions thrown are ignorable. | 147 // Used if any exceptions thrown are ignorable. |
148 class CORE_EXPORT TrackExceptionState final : public ExceptionState { | 148 class CORE_EXPORT TrackExceptionState final : public ExceptionState { |
149 public: | 149 public: |
150 TrackExceptionState(): ExceptionState(ExceptionState::UnknownContext, 0, 0,
v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()) { } | 150 TrackExceptionState(): ExceptionState(ExceptionState::UnknownContext, 0, 0,
v8::Local<v8::Object>(), v8::Isolate::GetCurrent()) { } |
151 virtual void throwDOMException(const ExceptionCode&, const String& message)
override; | 151 virtual void throwDOMException(const ExceptionCode&, const String& message)
override; |
152 virtual void throwTypeError(const String& message = String()) override; | 152 virtual void throwTypeError(const String& message = String()) override; |
153 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()) override; | 153 virtual void throwSecurityError(const String& sanitizedMessage, const String
& unsanitizedMessage = String()) override; |
154 virtual void throwRangeError(const String& message) override; | 154 virtual void throwRangeError(const String& message) override; |
155 }; | 155 }; |
156 | 156 |
157 } // namespace blink | 157 } // namespace blink |
158 | 158 |
159 #endif // ExceptionState_h | 159 #endif // ExceptionState_h |
OLD | NEW |