HTMLMetaElement.cpp revision 4604c0d13ca11ad633e6b3f7adb64c6ee886705d
16148c02591bd83da7b957589c4bbf6f9720d503fChris Lattner/** 2fd93908ae8b9684fe71c239e3c6cfe13ff6a2663Misha Brukman * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell * (C) 1999 Antti Koivisto (koivisto@kde.org) 4b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell * (C) 2001 Dirk Mueller (mueller@kde.org) 54ee451de366474b9c228b4e5fa573795a715216dChris Lattner * Copyright (C) 2003 Apple Computer, Inc. 64ee451de366474b9c228b4e5fa573795a715216dChris Lattner * 7fd93908ae8b9684fe71c239e3c6cfe13ff6a2663Misha Brukman * This library is free software; you can redistribute it and/or 8b576c94c15af9a440f69d9d03c2afead7971118cJohn Criswell * modify it under the terms of the GNU Library General Public 96148c02591bd83da7b957589c4bbf6f9720d503fChris Lattner * License as published by the Free Software Foundation; either 1040bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * version 2 of the License, or (at your option) any later version. 1140bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * 1240bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * This library is distributed in the hope that it will be useful, 1340bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * but WITHOUT ANY WARRANTY; without even the implied warranty of 1447a53ac726ceb1ac11bc1326be3fbe095f726b0dReid Spencer * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1540bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * Library General Public License for more details. 1640bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * 1740bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * You should have received a copy of the GNU Library General Public License 1840bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * along with this library; see the file COPYING.LIB. If not, write to 1940bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20ea73f3c2e14d84bb4cb07bd6a1a3d7915f3aff83Dan Gohman * Boston, MA 02110-1301, USA. 21ea73f3c2e14d84bb4cb07bd6a1a3d7915f3aff83Dan Gohman */ 22ea73f3c2e14d84bb4cb07bd6a1a3d7915f3aff83Dan Gohman 23ea73f3c2e14d84bb4cb07bd6a1a3d7915f3aff83Dan Gohman#include "config.h" 2440bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#include "HTMLMetaElement.h" 2540bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner 2640bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#include "Document.h" 2740bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#include "HTMLNames.h" 2840bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#include "MappedAttribute.h" 2940bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner 3040bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#ifdef ANDROID_META_SUPPORT 3140bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#include "Settings.h" 3240bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner#endif 3340bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner 3440bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattnernamespace WebCore { 3540bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner 3640bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattnerusing namespace HTMLNames; 37c2c4cbf7b3a0229cf1804ca9d7c18113f75bab46Dan Gohman 386148c02591bd83da7b957589c4bbf6f9720d503fChris LattnerHTMLMetaElement::HTMLMetaElement(const QualifiedName& tagName, Document* doc) 396148c02591bd83da7b957589c4bbf6f9720d503fChris Lattner : HTMLElement(tagName, doc) 406148c02591bd83da7b957589c4bbf6f9720d503fChris Lattner{ 410e5f499638c8d277b9dc4a4385712177c53b5681Chris Lattner ASSERT(hasTagName(metaTag)); 42022103b3f33febb7e54b8fdf2c9bc461eea78cbaChris Lattner} 4340bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner 4459fdaeeae8f183e18bb6ad5c382ca23e28e6aaf6Chris LattnerHTMLMetaElement::~HTMLMetaElement() 4518b3c97bc773b24a66eb779e85da1820b0f16b31Chris Lattner{ 467b9f6b1b21bc0b06f3c72beae51e9db631319503Devang Patel} 47d672ecb0178c6247a5eaa5b0fb0c3b23cd25bd7cOwen Anderson 4840bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattnervoid HTMLMetaElement::parseMappedAttribute(MappedAttribute* attr) 4981db61a2e6d3c95a2738c3559a108e05e9d7a05aDan Gohman{ 5081db61a2e6d3c95a2738c3559a108e05e9d7a05aDan Gohman if (attr->name() == http_equivAttr) { 5136f891bdf6cf38fcc655a0930ca18664e18518d4Nate Begeman m_equiv = attr->value(); 5247df12d80db90e125e9f2ff764286ee11665476dJohn Criswell process(); 535ee99979065d75605d150d7e567e4351024aae8fDevang Patel } else if (attr->name() == contentAttr) { 54455889aa79e3463a4b0f2161e3d9d72a683268b6Chris Lattner m_content = attr->value(); 5556caa098085977c14cfab39d92c7dfa15dde0d90Andrew Trick process(); 56ee4f13a9046c380725cdeab62d57722db375c473Chris Lattner } else if (attr->name() == nameAttr) { 57bdff548e4dd577a72094d57b282de4e765643b96Chris Lattner // Do nothing. 5847df12d80db90e125e9f2ff764286ee11665476dJohn Criswell } else 5981db61a2e6d3c95a2738c3559a108e05e9d7a05aDan Gohman HTMLElement::parseMappedAttribute(attr); 6037da40875873d70b83dc08b2803052bec9b68886Andrew Trick} 61a54b7cbd452b3adb2f51346140d996b29c2cdb30Reid Spencer 62551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencervoid HTMLMetaElement::insertedIntoDocument() 6381db61a2e6d3c95a2738c3559a108e05e9d7a05aDan Gohman{ 6447df12d80db90e125e9f2ff764286ee11665476dJohn Criswell HTMLElement::insertedIntoDocument(); 65d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke process(); 662fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick} 672fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick 682fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trickvoid HTMLMetaElement::process() 692fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick{ 702fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick#ifdef ANDROID_META_SUPPORT 712fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick if (!inDocument() || m_content.isNull()) 722fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick return; 732fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick if (equalIgnoringCase(name(), "viewport") || equalIgnoringCase(name(), "format-detection")) 742fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick document()->processMetadataSettings(m_content); 753324e718bc9ac2ede08a14c325848b576849542bChris Lattner else if (equalIgnoringCase(name(), "HandheldFriendly") && equalIgnoringCase(m_content, "true") 7656caa098085977c14cfab39d92c7dfa15dde0d90Andrew Trick && document()->settings()->viewportWidth() == -1) 7756caa098085977c14cfab39d92c7dfa15dde0d90Andrew Trick // fit mobile sites directly in the screen 7856caa098085977c14cfab39d92c7dfa15dde0d90Andrew Trick document()->settings()->setMetadataSettings("width", "device-width"); 7937da40875873d70b83dc08b2803052bec9b68886Andrew Trick#endif 800e5f499638c8d277b9dc4a4385712177c53b5681Chris Lattner // Get the document to process the tag, but only if we're actually part of DOM tree (changing a meta tag while 813e8b6631e67e01e4960a7ba4668a50c596607473Chris Lattner // it's not in the tree shouldn't have any effect on the document) 8281db61a2e6d3c95a2738c3559a108e05e9d7a05aDan Gohman if (inDocument() && !m_equiv.isNull() && !m_content.isNull()) 8340bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner document()->processHttpEquiv(m_equiv, m_content); 8440bf8b48cdb9961898dba1bc67320be1e49e3da1Chris Lattner} 85de53dc03f5c1549f3176e979bbeeac965dfa5cbcDan Gohman 8637da40875873d70b83dc08b2803052bec9b68886Andrew TrickString HTMLMetaElement::content() const 872fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick{ 88b12a754cce0c1d5542af605203a47820edba454dAndrew Trick return getAttribute(contentAttr); 8915cad759fe2048ac5eb137c6bb0ab7287538677eChris Lattner} 903324e718bc9ac2ede08a14c325848b576849542bChris Lattner 91794fd75c67a2cdc128d67342c6d88a504d186896Devang Patelvoid HTMLMetaElement::setContent(const String& value) 925668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman{ 932fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick setAttribute(contentAttr, value); 9415832f61775040995bb8aa6056176425bc2c9088Andrew Trick} 95081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson 96081c34b725980f995be9080eaec24cd3dfaaf065Owen AndersonString HTMLMetaElement::httpEquiv() const 97794fd75c67a2cdc128d67342c6d88a504d186896Devang Patel{ 985668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman return getAttribute(http_equivAttr); 9960f8a63e2502d57e879bf52a4a48505b74fa9716Dan Gohman} 1005668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman 1015668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohmanvoid HTMLMetaElement::setHttpEquiv(const String& value) 1025668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman{ 1035668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman setAttribute(http_equivAttr, value); 1045668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman} 1055668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman 10656caa098085977c14cfab39d92c7dfa15dde0d90Andrew TrickString HTMLMetaElement::name() const 10756caa098085977c14cfab39d92c7dfa15dde0d90Andrew Trick{ 1085668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman return getAttribute(nameAttr); 1095668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman} 1105668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman 1112fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trickvoid HTMLMetaElement::setName(const String& value) 1122fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick{ 1135668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman setAttribute(nameAttr, value); 1145668cf77a77493ec9f2a9b33f08125e885c8e4cfDan Gohman} 1153324e718bc9ac2ede08a14c325848b576849542bChris Lattner 11640bf8b48cdb9961898dba1bc67320be1e49e3da1Chris LattnerString HTMLMetaElement::scheme() const 117b12a754cce0c1d5542af605203a47820edba454dAndrew Trick{ 1185ee99979065d75605d150d7e567e4351024aae8fDevang Patel return getAttribute(schemeAttr); 119f85092c25525f75eef6982ffa40c9b48b87da987Andrew Trick} 1202fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick 1212fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trickvoid HTMLMetaElement::setScheme(const String &value) 1222fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick{ 123aeee4616dd12d58fd8d040ab00277747f0312321Andrew Trick setAttribute(schemeAttr, value); 124aeee4616dd12d58fd8d040ab00277747f0312321Andrew Trick} 125aeee4616dd12d58fd8d040ab00277747f0312321Andrew Trick 1264417e537b65c14b378aeca75b2773582dd102f63Andrew Trick} 1272fabd464ae9fd33f068066e3fc3d0caa7ea2279dAndrew Trick