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

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

Issue 235113002: Oilpan: Remove guardRef and guardDeref from TreeScope. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 }; 369 };
370 370
371 DocumentVisibilityObserver::DocumentVisibilityObserver(Document& document) 371 DocumentVisibilityObserver::DocumentVisibilityObserver(Document& document)
372 : m_document(0) 372 : m_document(0)
373 { 373 {
374 registerObserver(document); 374 registerObserver(document);
375 } 375 }
376 376
377 DocumentVisibilityObserver::~DocumentVisibilityObserver() 377 DocumentVisibilityObserver::~DocumentVisibilityObserver()
378 { 378 {
379 #if !ENABLE(OILPAN)
379 unregisterObserver(); 380 unregisterObserver();
381 #endif
380 } 382 }
381 383
382 void DocumentVisibilityObserver::unregisterObserver() 384 void DocumentVisibilityObserver::unregisterObserver()
383 { 385 {
384 if (m_document) { 386 if (m_document) {
385 m_document->unregisterVisibilityObserver(this); 387 m_document->unregisterVisibilityObserver(this);
386 m_document = 0; 388 m_document = 0;
387 } 389 }
388 } 390 }
389 391
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 // m_fetcher. 517 // m_fetcher.
516 m_styleEngine = StyleEngine::create(*this); 518 m_styleEngine = StyleEngine::create(*this);
517 } 519 }
518 520
519 Document::~Document() 521 Document::~Document()
520 { 522 {
521 ASSERT(!renderView()); 523 ASSERT(!renderView());
522 ASSERT(m_ranges.isEmpty()); 524 ASSERT(m_ranges.isEmpty());
523 ASSERT(!parentTreeScope()); 525 ASSERT(!parentTreeScope());
524 ASSERT(!hasGuardRefCount()); 526 ASSERT(!hasGuardRefCount());
527 #if !ENABLE(OILPAN)
528 // With oilpan the visibility obeservers and the document can die together
529 // at which point the weak collection of observers will not be empty.
525 ASSERT(m_visibilityObservers.isEmpty()); 530 ASSERT(m_visibilityObservers.isEmpty());
531 #endif
526 532
527 if (m_templateDocument) 533 if (m_templateDocument)
528 m_templateDocument->m_templateDocumentHost = 0; // balanced in ensureTem plateDocument(). 534 m_templateDocument->m_templateDocumentHost = 0; // balanced in ensureTem plateDocument().
529 535
530 m_scriptRunner.clear(); 536 m_scriptRunner.clear();
531 537
532 removeAllEventListenersRecursively(); 538 removeAllEventListenersRecursively();
533 539
534 // Currently we believe that Document can never outlive the parser. 540 // Currently we believe that Document can never outlive the parser.
535 // Although the Document may be replaced synchronously, DocumentParsers 541 // Although the Document may be replaced synchronously, DocumentParsers
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after
1412 return pageVisibilityState() != PageVisibilityStateVisible; 1418 return pageVisibilityState() != PageVisibilityStateVisible;
1413 } 1419 }
1414 1420
1415 void Document::didChangeVisibilityState() 1421 void Document::didChangeVisibilityState()
1416 { 1422 {
1417 dispatchEvent(Event::create(EventTypeNames::visibilitychange)); 1423 dispatchEvent(Event::create(EventTypeNames::visibilitychange));
1418 // Also send out the deprecated version until it can be removed. 1424 // Also send out the deprecated version until it can be removed.
1419 dispatchEvent(Event::create(EventTypeNames::webkitvisibilitychange)); 1425 dispatchEvent(Event::create(EventTypeNames::webkitvisibilitychange));
1420 1426
1421 PageVisibilityState state = pageVisibilityState(); 1427 PageVisibilityState state = pageVisibilityState();
1422 HashSet<DocumentVisibilityObserver*>::const_iterator observerEnd = m_visibil ityObservers.end(); 1428 WillBeHeapHashSet<RawPtrWillBeWeakMember<DocumentVisibilityObserver> >::cons t_iterator observerEnd = m_visibilityObservers.end();
1423 for (HashSet<DocumentVisibilityObserver*>::const_iterator it = m_visibilityO bservers.begin(); it != observerEnd; ++it) 1429 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<DocumentVisibilityObserver> >: :const_iterator it = m_visibilityObservers.begin(); it != observerEnd; ++it)
1424 (*it)->didChangeVisibilityState(state); 1430 (*it)->didChangeVisibilityState(state);
1425 } 1431 }
1426 1432
1427 void Document::registerVisibilityObserver(DocumentVisibilityObserver* observer) 1433 void Document::registerVisibilityObserver(DocumentVisibilityObserver* observer)
1428 { 1434 {
1429 ASSERT(!m_visibilityObservers.contains(observer)); 1435 ASSERT(!m_visibilityObservers.contains(observer));
1430 m_visibilityObservers.add(observer); 1436 m_visibilityObservers.add(observer);
1431 } 1437 }
1432 1438
1433 void Document::unregisterVisibilityObserver(DocumentVisibilityObserver* observer ) 1439 void Document::unregisterVisibilityObserver(DocumentVisibilityObserver* observer )
(...skipping 3322 matching lines...) Expand 10 before | Expand all | Expand 10 after
4756 m_ranges.add(range); 4762 m_ranges.add(range);
4757 } 4763 }
4758 4764
4759 void Document::detachRange(Range* range) 4765 void Document::detachRange(Range* range)
4760 { 4766 {
4761 // We don't ASSERT m_ranges.contains(range) to allow us to call this 4767 // We don't ASSERT m_ranges.contains(range) to allow us to call this
4762 // unconditionally to fix: https://bugs.webkit.org/show_bug.cgi?id=26044 4768 // unconditionally to fix: https://bugs.webkit.org/show_bug.cgi?id=26044
4763 m_ranges.remove(range); 4769 m_ranges.remove(range);
4764 } 4770 }
4765 4771
4766 void Document::getCSSCanvasContext(const String& type, const String& name, int w idth, int height, bool& is2d, RefPtr<CanvasRenderingContext2D>& context2d, bool& is3d, RefPtr<WebGLRenderingContext>& context3d) 4772 void Document::getCSSCanvasContext(const String& type, const String& name, int w idth, int height, bool& is2d, RefPtrWillBeRawPtr<CanvasRenderingContext2D>& cont ext2d, bool& is3d, RefPtrWillBeRawPtr<WebGLRenderingContext>& context3d)
4767 { 4773 {
4768 HTMLCanvasElement& element = getCSSCanvasElement(name); 4774 HTMLCanvasElement& element = getCSSCanvasElement(name);
4769 element.setSize(IntSize(width, height)); 4775 element.setSize(IntSize(width, height));
4770 CanvasRenderingContext* context = element.getContext(type); 4776 CanvasRenderingContext* context = element.getContext(type);
4771 if (!context) 4777 if (!context)
4772 return; 4778 return;
4773 4779
4774 if (context->is2d()) { 4780 if (context->is2d()) {
4775 is2d = true; 4781 is2d = true;
4776 context2d = toCanvasRenderingContext2D(context); 4782 context2d = toCanvasRenderingContext2D(context);
(...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after
5516 return false; 5522 return false;
5517 } 5523 }
5518 5524
5519 void Document::invalidateNodeListCaches(const QualifiedName* attrName) 5525 void Document::invalidateNodeListCaches(const QualifiedName* attrName)
5520 { 5526 {
5521 HashSet<LiveNodeListBase*>::iterator end = m_listsInvalidatedAtDocument.end( ); 5527 HashSet<LiveNodeListBase*>::iterator end = m_listsInvalidatedAtDocument.end( );
5522 for (HashSet<LiveNodeListBase*>::iterator it = m_listsInvalidatedAtDocument. begin(); it != end; ++it) 5528 for (HashSet<LiveNodeListBase*>::iterator it = m_listsInvalidatedAtDocument. begin(); it != end; ++it)
5523 (*it)->invalidateCache(attrName); 5529 (*it)->invalidateCache(attrName);
5524 } 5530 }
5525 5531
5532 void Document::clearWeakMembers(Visitor* visitor)
5533 {
5534 if (m_axObjectCache)
5535 m_axObjectCache->clearWeakMembers(visitor);
5536
5537 if (m_markers)
5538 m_markers->clearWeakMembers(visitor);
5539
5540 // FIXME: Oilpan: Use a weak counted set instead.
5541 if (m_touchEventTargets) {
5542 Vector<Node*> deadNodes;
5543 for (TouchEventTargetSet::iterator it = m_touchEventTargets->begin(); it != m_touchEventTargets->end(); ++it) {
5544 if (!visitor->isAlive(it->key))
5545 deadNodes.append(it->key);
5546 }
5547 for (unsigned i = 0; i < deadNodes.size(); ++i)
5548 didClearTouchEventHandlers(deadNodes[i]);
5549 }
5550 }
5551
5526 void Document::trace(Visitor* visitor) 5552 void Document::trace(Visitor* visitor)
5527 { 5553 {
5554 visitor->trace(m_visibilityObservers);
5555 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this);
5528 Supplementable<Document>::trace(visitor); 5556 Supplementable<Document>::trace(visitor);
5557 TreeScope::trace(visitor);
5529 ContainerNode::trace(visitor); 5558 ContainerNode::trace(visitor);
5530 } 5559 }
5531 5560
5532 } // namespace WebCore 5561 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698