OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
(...skipping 5638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5649 const WrapperTypeInfo* wrapperType = wrapperTypeInfo(); | 5649 const WrapperTypeInfo* wrapperType = wrapperTypeInfo(); |
5650 | 5650 |
5651 if (frame() && frame()->script().initializeMainWorld()) { | 5651 if (frame() && frame()->script().initializeMainWorld()) { |
5652 // initializeMainWorld may have created a wrapper for the object, retry
from the start. | 5652 // initializeMainWorld may have created a wrapper for the object, retry
from the start. |
5653 v8::Local<v8::Object> wrapper = DOMDataStore::getWrapper(this, isolate); | 5653 v8::Local<v8::Object> wrapper = DOMDataStore::getWrapper(this, isolate); |
5654 if (!wrapper.IsEmpty()) | 5654 if (!wrapper.IsEmpty()) |
5655 return wrapper; | 5655 return wrapper; |
5656 } | 5656 } |
5657 | 5657 |
5658 v8::Local<v8::Object> wrapper = V8DOMWrapper::createWrapper(isolate, creatio
nContext, wrapperType, this); | 5658 v8::Local<v8::Object> wrapper = V8DOMWrapper::createWrapper(isolate, creatio
nContext, wrapperType, this); |
| 5659 // V8DOMWrapper::createWrapper may run an arbitrary script and it may result |
| 5660 // in creating a new wrapper and associating it with |this|. If so, the |
| 5661 // wrapper already created and associated must be used. |
| 5662 v8::Local<v8::Object> associatedWrapper = DOMDataStore::getWrapper(this, iso
late); |
| 5663 if (UNLIKELY(!associatedWrapper.IsEmpty())) |
| 5664 return associatedWrapper; |
5659 if (UNLIKELY(wrapper.IsEmpty())) | 5665 if (UNLIKELY(wrapper.IsEmpty())) |
5660 return wrapper; | 5666 return wrapper; |
5661 | 5667 |
5662 wrapperType->installConditionallyEnabledProperties(wrapper, isolate); | 5668 wrapperType->installConditionallyEnabledProperties(wrapper, isolate); |
5663 return associateWithWrapper(isolate, wrapperType, wrapper); | 5669 return associateWithWrapper(isolate, wrapperType, wrapper); |
5664 } | 5670 } |
5665 | 5671 |
5666 v8::Local<v8::Object> Document::associateWithWrapper(v8::Isolate* isolate, const
WrapperTypeInfo* wrapperType, v8::Local<v8::Object> wrapper) | 5672 v8::Local<v8::Object> Document::associateWithWrapper(v8::Isolate* isolate, const
WrapperTypeInfo* wrapperType, v8::Local<v8::Object> wrapper) |
5667 { | 5673 { |
5668 V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperType, wrapper
); | 5674 V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperType, wrapper
); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5770 #ifndef NDEBUG | 5776 #ifndef NDEBUG |
5771 using namespace blink; | 5777 using namespace blink; |
5772 void showLiveDocumentInstances() | 5778 void showLiveDocumentInstances() |
5773 { | 5779 { |
5774 WeakDocumentSet& set = liveDocumentSet(); | 5780 WeakDocumentSet& set = liveDocumentSet(); |
5775 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 5781 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
5776 for (Document* document : set) | 5782 for (Document* document : set) |
5777 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); | 5783 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); |
5778 } | 5784 } |
5779 #endif | 5785 #endif |
OLD | NEW |