Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: Source/core/dom/Document.cpp

Issue 16904002: Avoid leaking objects between isolated worlds via attribute event listeners (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 3438 matching lines...) Expand 10 before | Expand all | Expand 10 after
3449 { 3449 {
3450 if (!m_ranges.isEmpty()) { 3450 if (!m_ranges.isEmpty()) {
3451 HashSet<Range*>::const_iterator end = m_ranges.end(); 3451 HashSet<Range*>::const_iterator end = m_ranges.end();
3452 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; + +it) 3452 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; + +it)
3453 (*it)->textNodeSplit(oldNode); 3453 (*it)->textNodeSplit(oldNode);
3454 } 3454 }
3455 3455
3456 // FIXME: This should update markers for spelling and grammar checking. 3456 // FIXME: This should update markers for spelling and grammar checking.
3457 } 3457 }
3458 3458
3459 void Document::setWindowAttributeEventListener(const AtomicString& eventType, Pa ssRefPtr<EventListener> listener) 3459 void Document::setWindowAttributeEventListener(const AtomicString& eventType, Pa ssRefPtr<EventListener> listener, DOMWrapperWorld* world)
3460 { 3460 {
3461 DOMWindow* domWindow = this->domWindow(); 3461 DOMWindow* domWindow = this->domWindow();
3462 if (!domWindow) 3462 if (!domWindow)
3463 return; 3463 return;
3464 domWindow->setAttributeEventListener(eventType, listener); 3464 domWindow->setAttributeEventListener(eventType, listener, world);
3465 } 3465 }
3466 3466
3467 EventListener* Document::getWindowAttributeEventListener(const AtomicString& eve ntType) 3467 EventListener* Document::getWindowAttributeEventListener(const AtomicString& eve ntType, DOMWrapperWorld* world)
3468 { 3468 {
3469 DOMWindow* domWindow = this->domWindow(); 3469 DOMWindow* domWindow = this->domWindow();
3470 if (!domWindow) 3470 if (!domWindow)
3471 return 0; 3471 return 0;
3472 return domWindow->getAttributeEventListener(eventType); 3472 return domWindow->getAttributeEventListener(eventType, world);
3473 } 3473 }
3474 3474
3475 void Document::dispatchWindowEvent(PassRefPtr<Event> event, PassRefPtr<EventTar get> target) 3475 void Document::dispatchWindowEvent(PassRefPtr<Event> event, PassRefPtr<EventTar get> target)
3476 { 3476 {
3477 ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden()); 3477 ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
3478 DOMWindow* domWindow = this->domWindow(); 3478 DOMWindow* domWindow = this->domWindow();
3479 if (!domWindow) 3479 if (!domWindow)
3480 return; 3480 return;
3481 domWindow->dispatchEvent(event, target); 3481 domWindow->dispatchEvent(event, target);
3482 } 3482 }
(...skipping 2133 matching lines...) Expand 10 before | Expand all | Expand 10 after
5616 return; 5616 return;
5617 5617
5618 Vector<RefPtr<Element> > associatedFormControls; 5618 Vector<RefPtr<Element> > associatedFormControls;
5619 copyToVector(m_associatedFormControls, associatedFormControls); 5619 copyToVector(m_associatedFormControls, associatedFormControls);
5620 5620
5621 frame()->page()->chrome().client()->didAssociateFormControls(associatedFormC ontrols); 5621 frame()->page()->chrome().client()->didAssociateFormControls(associatedFormC ontrols);
5622 m_associatedFormControls.clear(); 5622 m_associatedFormControls.clear();
5623 } 5623 }
5624 5624
5625 } // namespace WebCore 5625 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698