OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 } | 149 } |
150 | 150 |
151 if (event->type() == eventNames().beforeunloadEvent || event->type() == even
tNames().unloadEvent) | 151 if (event->type() == eventNames().beforeunloadEvent || event->type() == even
tNames().unloadEvent) |
152 DateExtension::get()->setAllowSleep(true, v8Context->GetIsolate()); | 152 DateExtension::get()->setAllowSleep(true, v8Context->GetIsolate()); |
153 | 153 |
154 ASSERT(!handleOutOfMemory() || returnValue.IsEmpty()); | 154 ASSERT(!handleOutOfMemory() || returnValue.IsEmpty()); |
155 | 155 |
156 if (returnValue.IsEmpty()) | 156 if (returnValue.IsEmpty()) |
157 return; | 157 return; |
158 | 158 |
159 if (!returnValue->IsNull() && !returnValue->IsUndefined() && event->isBefore
UnloadEvent()) | 159 if (!returnValue->IsNull() && !returnValue->IsUndefined() && event->isBefore
UnloadEvent()) { |
160 toBeforeUnloadEvent(event)->setReturnValue(toWebCoreString(returnValue))
; | 160 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, stringReturnVal
ue, returnValue); |
| 161 toBeforeUnloadEvent(event)->setReturnValue(stringReturnValue); |
| 162 } |
161 | 163 |
162 if (m_isAttribute && shouldPreventDefault(returnValue)) | 164 if (m_isAttribute && shouldPreventDefault(returnValue)) |
163 event->preventDefault(); | 165 event->preventDefault(); |
164 } | 166 } |
165 | 167 |
166 bool V8AbstractEventListener::shouldPreventDefault(v8::Local<v8::Value> returnVa
lue) | 168 bool V8AbstractEventListener::shouldPreventDefault(v8::Local<v8::Value> returnVa
lue) |
167 { | 169 { |
168 // Prevent default action if the return value is false in accord with the sp
ec | 170 // Prevent default action if the return value is false in accord with the sp
ec |
169 // http://www.w3.org/TR/html5/webappapis.html#event-handler-attributes | 171 // http://www.w3.org/TR/html5/webappapis.html#event-handler-attributes |
170 return returnValue->IsBoolean() && !returnValue->BooleanValue(); | 172 return returnValue->IsBoolean() && !returnValue->BooleanValue(); |
(...skipping 12 matching lines...) Expand all Loading... |
183 return v8::Local<v8::Object>(); | 185 return v8::Local<v8::Object>(); |
184 return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value)); | 186 return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value)); |
185 } | 187 } |
186 | 188 |
187 void V8AbstractEventListener::makeWeakCallback(v8::Isolate*, v8::Persistent<v8::
Object>*, V8AbstractEventListener* listener) | 189 void V8AbstractEventListener::makeWeakCallback(v8::Isolate*, v8::Persistent<v8::
Object>*, V8AbstractEventListener* listener) |
188 { | 190 { |
189 listener->m_listener.clear(); | 191 listener->m_listener.clear(); |
190 } | 192 } |
191 | 193 |
192 } // namespace WebCore | 194 } // namespace WebCore |
OLD | NEW |