15f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian/* 25f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) 35af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Copyright (C) 2010 Apple Inc. All rights reserved. 45f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 55f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * This library is free software; you can redistribute it and/or 65f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * modify it under the terms of the GNU Library General Public 75f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * License as published by the Free Software Foundation; either 85f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * version 2 of the License, or (at your option) any later version. 95f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 105f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * This library is distributed in the hope that it will be useful, 115f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * but WITHOUT ANY WARRANTY; without even the implied warranty of 125f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 135f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Library General Public License for more details. 145f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * You should have received a copy of the GNU Library General Public License 165f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * along with this library; see the file COPYING.LIB. If not, write to 175f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 185f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Boston, MA 02110-1301, USA. 195f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian */ 205f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 215f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "config.h" 225f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 235f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(XHTMLMP) 245f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "HTMLNoScriptElement.h" 255f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 265f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "CSSStyleSelector.h" 275f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "HTMLNames.h" 285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "RenderObject.h" 295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 305f1ab04193ad0130ca8204aadaceae083aca9881Feng Qiannamespace WebCore { 315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianusing namespace HTMLNames; 335f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 345af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeinline HTMLNoScriptElement::HTMLNoScriptElement(const QualifiedName& tagName, Document* document) 355af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke : HTMLElement(tagName, document) 365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ASSERT(hasTagName(noscriptTag)); 385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 405af96e2c7b73ebc627c6894727826a7576d31758Leon ClarkePassRefPtr<HTMLNoScriptElement> HTMLNoScriptElement::create(const QualifiedName& tagName, Document* document) 415f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return adoptRef(new HTMLNoScriptElement(tagName, document)); 435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianvoid HTMLNoScriptElement::attach() 465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian HTMLElement::attach(); 485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 495f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // If no need to process <noscript>, we hide it by setting display:none temporarily 505f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (!document()->shouldProcessNoscriptElement()) { 515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (renderer() && renderer()->style()) 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian renderer()->style()->setDisplay(NONE); 535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian setNeedsStyleRecalc(); 545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian } 555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 575f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianvoid HTMLNoScriptElement::recalcStyle(StyleChange change) 585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 595f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (!document()->shouldProcessNoscriptElement() || !renderer() || !renderer()->style()) 605f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return; 615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // If <noscript> needs processing, we make it visiable here, including its visible children 635f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian RefPtr<RenderStyle> style = renderer()->style(); 645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (style->display() == NONE) { 655f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian style->setDisplay(INLINE); 665f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 675f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // Create renderers for its children 685f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (hasChildNodes()) { 695f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian for (Node* n = firstChild(); n; n = n->traverseNextNode(this)) 705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (!n->renderer()) 715f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian n->createRendererIfNeeded(); 725f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian } 735f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian } 745f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 755f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 765af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkebool HTMLNoScriptElement::childShouldCreateRenderer(Node*) const 775f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 785f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return document()->shouldProcessNoscriptElement(); 795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 825af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 835f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 84