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

Side by Side Diff: third_party/WebKit/Source/core/css/StyleRuleImport.cpp

Issue 1667843003: Make Resource RefCountedWillBeGarbageCollectedFinalized, attempt #2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase + address review comments Created 4 years, 10 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
OLDNEW
1 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * (C) 2002-2003 Dirk Mueller (mueller@kde.org) 3 * (C) 2002-2003 Dirk Mueller (mueller@kde.org)
4 * Copyright (C) 2002, 2005, 2006, 2008, 2009, 2010, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) 2002, 2005, 2006, 2008, 2009, 2010, 2012 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 23 matching lines...) Expand all
34 { 34 {
35 return adoptRefWillBeNoop(new StyleRuleImport(href, media)); 35 return adoptRefWillBeNoop(new StyleRuleImport(href, media));
36 } 36 }
37 37
38 StyleRuleImport::StyleRuleImport(const String& href, PassRefPtrWillBeRawPtr<Medi aQuerySet> media) 38 StyleRuleImport::StyleRuleImport(const String& href, PassRefPtrWillBeRawPtr<Medi aQuerySet> media)
39 : StyleRuleBase(Import) 39 : StyleRuleBase(Import)
40 , m_parentStyleSheet(nullptr) 40 , m_parentStyleSheet(nullptr)
41 , m_styleSheetClient(this) 41 , m_styleSheetClient(this)
42 , m_strHref(href) 42 , m_strHref(href)
43 , m_mediaQueries(media) 43 , m_mediaQueries(media)
44 , m_resource(nullptr)
45 , m_loading(false) 44 , m_loading(false)
46 { 45 {
47 if (!m_mediaQueries) 46 if (!m_mediaQueries)
48 m_mediaQueries = MediaQuerySet::create(String()); 47 m_mediaQueries = MediaQuerySet::create(String());
48
49 #if ENABLE(OILPAN)
50 ThreadState::current()->registerPreFinalizer(this);
51 #endif
49 } 52 }
50 53
51 StyleRuleImport::~StyleRuleImport() 54 StyleRuleImport::~StyleRuleImport()
52 { 55 {
53 #if !ENABLE(OILPAN) 56 #if !ENABLE(OILPAN)
54 if (m_styleSheet) 57 if (m_styleSheet)
55 m_styleSheet->clearOwnerRule(); 58 m_styleSheet->clearOwnerRule();
59 dispose();
56 #endif 60 #endif
61 }
62
63 void StyleRuleImport::dispose()
64 {
57 if (m_resource) 65 if (m_resource)
58 m_resource->removeClient(&m_styleSheetClient); 66 m_resource->removeClient(&m_styleSheetClient);
67 m_resource = nullptr;
59 } 68 }
60 69
61 DEFINE_TRACE_AFTER_DISPATCH(StyleRuleImport) 70 DEFINE_TRACE_AFTER_DISPATCH(StyleRuleImport)
62 { 71 {
63 visitor->trace(m_styleSheetClient); 72 visitor->trace(m_styleSheetClient);
64 visitor->trace(m_parentStyleSheet); 73 visitor->trace(m_parentStyleSheet);
65 visitor->trace(m_mediaQueries); 74 visitor->trace(m_mediaQueries);
66 visitor->trace(m_styleSheet); 75 visitor->trace(m_styleSheet);
76 visitor->trace(m_resource);
67 StyleRuleBase::traceAfterDispatch(visitor); 77 StyleRuleBase::traceAfterDispatch(visitor);
68 } 78 }
69 79
70 void StyleRuleImport::setCSSStyleSheet(const String& href, const KURL& baseURL, const String& charset, const CSSStyleSheetResource* cachedStyleSheet) 80 void StyleRuleImport::setCSSStyleSheet(const String& href, const KURL& baseURL, const String& charset, const CSSStyleSheetResource* cachedStyleSheet)
71 { 81 {
72 if (m_styleSheet) 82 if (m_styleSheet)
73 m_styleSheet->clearOwnerRule(); 83 m_styleSheet->clearOwnerRule();
74 84
75 CSSParserContext context = m_parentStyleSheet ? m_parentStyleSheet->parserCo ntext() : strictCSSParserContext(); 85 CSSParserContext context = m_parentStyleSheet ? m_parentStyleSheet->parserCo ntext() : strictCSSParserContext();
76 context.setCharset(charset); 86 context.setCharset(charset);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // removed from the pending sheet count, so let the doc know 145 // removed from the pending sheet count, so let the doc know
136 // the sheet being imported is pending. 146 // the sheet being imported is pending.
137 if (m_parentStyleSheet && m_parentStyleSheet->loadCompleted() && rootShe et == m_parentStyleSheet) 147 if (m_parentStyleSheet && m_parentStyleSheet->loadCompleted() && rootShe et == m_parentStyleSheet)
138 m_parentStyleSheet->startLoadingDynamicSheet(); 148 m_parentStyleSheet->startLoadingDynamicSheet();
139 m_loading = true; 149 m_loading = true;
140 m_resource->addClient(&m_styleSheetClient); 150 m_resource->addClient(&m_styleSheetClient);
141 } 151 }
142 } 152 }
143 153
144 } // namespace blink 154 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/StyleRuleImport.h ('k') | third_party/WebKit/Source/core/dom/PendingScript.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698