diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-06 14:44:00 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-06 14:44:00 +0100 |
commit | 40736c5763bf61337c8c14e16d8587db021a87d4 (patch) | |
tree | b17a9c00042ad89cb1308e2484491799aa14e9f8 /Source/WebCore/css/StyleSheet.cpp | |
download | qtwebkit-40736c5763bf61337c8c14e16d8587db021a87d4.tar.gz |
Imported WebKit commit 2ea9d364d0f6efa8fa64acf19f451504c59be0e4 (http://svn.webkit.org/repository/webkit/trunk@104285)
Diffstat (limited to 'Source/WebCore/css/StyleSheet.cpp')
-rw-r--r-- | Source/WebCore/css/StyleSheet.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Source/WebCore/css/StyleSheet.cpp b/Source/WebCore/css/StyleSheet.cpp new file mode 100644 index 000000000..9813c3cf9 --- /dev/null +++ b/Source/WebCore/css/StyleSheet.cpp @@ -0,0 +1,91 @@ +/** + * (C) 1999-2003 Lars Knoll (knoll@kde.org) + * Copyright (C) 2004, 2006 Apple Computer, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ +#include "config.h" +#include "StyleSheet.h" + +#include "CSSImportRule.h" +#include "CSSStyleSheet.h" +#include "Document.h" +#include "MediaList.h" +#include "Node.h" + +namespace WebCore { + +StyleSheet::StyleSheet(Node* parentNode, const String& originalURL, const KURL& finalURL) + : m_disabled(false) + , m_ownerRule(0) + , m_ownerNode(parentNode) + , m_originalURL(originalURL) + , m_finalURL(finalURL) +{ +} + +StyleSheet::StyleSheet(CSSImportRule* parentRule, const String& originalURL, const KURL& finalURL) + : m_disabled(false) + , m_ownerRule(parentRule) + , m_ownerNode(0) + , m_originalURL(originalURL) + , m_finalURL(finalURL) +{ +} + +StyleSheet::~StyleSheet() +{ + if (m_media) + m_media->setParentStyleSheet(0); +} + +StyleSheet* StyleSheet::parentStyleSheet() const +{ + ASSERT(isCSSStyleSheet()); + return m_ownerRule ? m_ownerRule->parentStyleSheet() : 0; +} + +void StyleSheet::setMedia(PassRefPtr<MediaList> media) +{ + ASSERT(isCSSStyleSheet()); + ASSERT(!media->parentStyleSheet() || media->parentStyleSheet() == this); + + if (m_media) + m_media->setParentStyleSheet(0); + + m_media = media; + m_media->setParentStyleSheet(static_cast<CSSStyleSheet*>(this)); +} + +KURL StyleSheet::baseURL() const +{ + if (!m_finalURL.isNull()) + return m_finalURL; + if (StyleSheet* parentSheet = parentStyleSheet()) + return parentSheet->baseURL(); + if (!m_ownerNode) + return KURL(); + return m_ownerNode->document()->baseURL(); +} + +void StyleSheet::setDisabled(bool disabled) +{ + m_disabled = disabled; + if (isCSSStyleSheet()) + static_cast<CSSStyleSheet*>(this)->styleSheetChanged(); +} + +} |