Changeset 47176 in webkit


Ignore:
Timestamp:
Aug 12, 2009 7:47:16 PM (15 years ago)
Author:
staikos@webkit.org
Message:

2009-08-12 Charles Wei <charles.wei@torchmobile.com.cn>

Reviewed by Niko Zimmermann.

This is to add WCSS marquee support , which is defined by OMA and is an extension for CSS2,
It extends CSS display with "display:-wap-marquee;-wap-marquee-dir:xxx;-wap-marquee-speed:xxx;-wap-marquee-style:xxx"
Minor fixes by Eric Seidel and George Staikos.
https://bugs.webkit.org/show_bug.cgi?id=23727

No new tests, the tests have already been landed at LayoutTests/fast/wcss/

Location:
trunk/WebCore
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r47172 r47176  
     12009-08-12  Charles Wei  <charles.wei@torchmobile.com.cn>
     2
     3        Reviewed by Niko Zimmermann.
     4
     5        This is to add WCSS marquee support , which is defined by OMA and is an extension for CSS2,
     6        It extends CSS display with "display:-wap-marquee;-wap-marquee-dir:xxx;-wap-marquee-speed:xxx;-wap-marquee-style:xxx"
     7        Minor fixes by Eric Seidel and George Staikos.
     8        https://bugs.webkit.org/show_bug.cgi?id=23727
     9
     10        No new tests, the tests have already been landed at LayoutTests/fast/wcss/
     11
     12        * WebCore.pro:
     13        * css/CSSParser.cpp:
     14        (WebCore::CSSParser::parseValue):
     15        * css/CSSPrimitiveValueMappings.h:
     16        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     17        * css/CSSStyleSelector.cpp:
     18        (WebCore::CSSStyleSelector::applyProperty):
     19        * css/CSSValueKeywords.in:
     20        * css/WCSSPropertyNames.in: Added.
     21        * css/WCSSValueKeywords.in: Added.
     22        * rendering/RenderMarquee.cpp:
     23        (WebCore::RenderMarquee::start):
     24        * rendering/RenderObject.cpp:
     25        (WebCore::RenderObject::createObject):
     26        * rendering/style/RenderStyleConstants.h:
     27        (WebCore::):
     28
    1292009-08-12  George Wright  <george.wright@torchmobile.com>
    230
  • trunk/WebCore/WebCore.pro

    r47165 r47176  
    126126!contains(DEFINES, ENABLE_XSLT=.): DEFINES += ENABLE_XSLT=0
    127127#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1
     128!contains(DEFINES, ENABLE_WCSS=.): DEFINES += ENABLE_WCSS=0
    128129!contains(DEFINES, ENABLE_WML=.): DEFINES += ENABLE_WML=0
    129130!contains(DEFINES, ENABLE_SHARED_WORKERS=.): DEFINES += ENABLE_SHARED_WORKERS=0
     
    256257DASHBOARDSUPPORTCSSPROPERTIES = $$PWD/css/DashboardSupportCSSPropertyNames.in
    257258
    258 SVGCSSPROPERTIES = $$PWD/css/SVGCSSPropertyNames.in
    259 
    260 SVGCSSVALUES = $$PWD/css/SVGCSSValueKeywords.in
     259
     260contains(DEFINES, ENABLE_SVG=1) {
     261    EXTRACSSPROPERTIES += $$PWD/css/SVGCSSPropertyNames.in
     262    EXTRACSSVALUES += $$PWD/css/SVGCSSValueKeywords.in
     263}
     264
     265contains(DEFINES, ENABLE_WCSS=1) {
     266    EXTRACSSPROPERTIES += $$PWD/css/WCSSPropertyNames.in
     267    EXTRACSSVALUES += $$PWD/css/WCSSValueKeywords.in
     268}
    261269
    262270STYLESHEETS_EMBED = \
     
    26762684}
    26772685
     2686contains(DEFINES, ENABLE_WCSS=1) {
     2687    FEATURE_DEFINES_JAVASCRIPT += ENABLE_WCSS=1
     2688    contains(DEFINES, ENABLE_XHTMLMP=0) {
     2689        DEFINES -= ENABLE_XHTMLMP=0
     2690        DEFINES += ENABLE_XHTMLMP=1
     2691    }
     2692}
     2693
    26782694contains(DEFINES, ENABLE_WML=1) {
    26792695    SOURCES += \
     
    29843000        addExtraCompilerWithHeader(xlinknames)
    29853001
    2986     # GENERATOR 6-A:
    2987     cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
    2988     cssprops.input = WALDOCSSPROPS
    2989     cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$SVGCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
    2990     cssprops.CONFIG = target_predeps no_link
    2991     cssprops.variable_out =
    2992     cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES SVGCSSPROPERTIES
    2993     addExtraCompilerWithHeader(cssprops)
    2994 
    2995     # GENERATOR 6-B:
    2996     cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
    2997     cssvalues.input = WALDOCSSVALUES
    2998     cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$SVGCSSVALUES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
    2999     cssvalues.CONFIG = target_predeps no_link
    3000     cssvalues.variable_out =
    3001     cssvalues.depend = ${QMAKE_FILE_NAME} SVGCSSVALUES
    3002     addExtraCompilerWithHeader(cssvalues)
    3003 } else {
    3004     # GENERATOR 6-A:
    3005     cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
    3006     cssprops.input = WALDOCSSPROPS
    3007     cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
    3008     cssprops.CONFIG = target_predeps no_link
    3009     cssprops.variable_out =
    3010     cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES
    3011     addExtraCompilerWithHeader(cssprops)
    3012 
    3013     # GENERATOR 6-B:
    3014     cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
    3015     cssvalues.input = WALDOCSSVALUES
    3016     cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
    3017     cssvalues.CONFIG = target_predeps no_link
    3018     cssvalues.variable_out =
    3019     cssvalues.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}${QMAKE_FILE_BASE}.h
    3020     addExtraCompiler(cssvalues)
    3021 }
     3002}
     3003# GENERATOR 6-A:
     3004cssprops.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp
     3005cssprops.input = WALDOCSSPROPS
     3006cssprops.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$DASHBOARDSUPPORTCSSPROPERTIES $$EXTRACSSPROPERTIES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
     3007cssprops.CONFIG = target_predeps no_link
     3008cssprops.variable_out =
     3009cssprops.depend = ${QMAKE_FILE_NAME} DASHBOARDSUPPORTCSSPROPERTIES EXTRACSSPROPERTIES
     3010addExtraCompilerWithHeader(cssprops)
     3011
     3012# GENERATOR 6-B:
     3013cssvalues.output = $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.c
     3014cssvalues.input = WALDOCSSVALUES
     3015cssvalues.commands = perl -ne \"print lc\" ${QMAKE_FILE_NAME} $$EXTRACSSVALUES > $${GENERATED_SOURCES_DIR}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.in && cd $$GENERATED_SOURCES_DIR && perl $$PWD/css/makevalues.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.gperf
     3016cssvalues.CONFIG = target_predeps no_link
     3017cssvalues.variable_out =
     3018cssvalues.depend = ${QMAKE_FILE_NAME} EXTRACSSVALUES
     3019cssvalues.clean = ${QMAKE_FILE_OUT} ${QMAKE_VAR_GENERATED_SOURCES_DIR_SLASH}${QMAKE_FILE_BASE}.h
     3020addExtraCompiler(cssvalues)
    30223021
    30233022contains(DEFINES, ENABLE_JAVASCRIPT_DEBUGGER=1) {
  • trunk/WebCore/css/CSSParser.cpp

    r46547 r47176  
    55 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
    66 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
     7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
    78 *
    89 * This library is free software; you can redistribute it and/or
     
    696697        // inline-table | table-row-group | table-header-group | table-footer-group | table-row |
    697698        // table-column-group | table-column | table-cell | table-caption | box | inline-box | none | inherit
     699#if ENABLE(WCSS)
     700        if ((id >= CSSValueInline && id <= CSSValueWapMarquee) || id == CSSValueNone)
     701#else
    698702        if ((id >= CSSValueInline && id <= CSSValueWebkitInlineBox) || id == CSSValueNone)
     703#endif
    699704            valid_primitive = true;
    700705        break;
     
    12621267            valid_primitive = validUnit(value, FTime|FInteger|FNonNeg, m_strict);
    12631268        break;
     1269#if ENABLE(WCSS)
     1270    case CSSPropertyWapMarqueeDir:
     1271        if (id == CSSValueLtr || id == CSSValueRtl)
     1272            valid_primitive = true;
     1273        break;
     1274    case CSSPropertyWapMarqueeStyle:
     1275        if (id == CSSValueNone || id == CSSValueSlide || id == CSSValueScroll || id == CSSValueAlternate)
     1276            valid_primitive = true;
     1277        break;
     1278    case CSSPropertyWapMarqueeLoop:
     1279        if (id == CSSValueInfinite)
     1280            valid_primitive = true;
     1281        else
     1282            valid_primitive = validUnit(value, FInteger | FNonNeg, m_strict);
     1283        break;
     1284    case CSSPropertyWapMarqueeSpeed:
     1285        if (id == CSSValueNormal || id == CSSValueSlow || id == CSSValueFast)
     1286            valid_primitive = true;
     1287        else
     1288            valid_primitive = validUnit(value, FTime | FInteger | FNonNeg, m_strict);
     1289        break;
     1290#endif
    12641291    case CSSPropertyWebkitUserDrag: // auto | none | element
    12651292        if (id == CSSValueAuto || id == CSSValueNone || id == CSSValueElement)
  • trunk/WebCore/css/CSSPrimitiveValueMappings.h

    r46281 r47176  
    22 * Copyright (C) 2007 Alexey Proskuryakov <ap@nypop.com>.
    33 * Copyright (C) 2008 Apple Inc. All rights reserved.
     4 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
    45 *
    56 * Redistribution and use in source and binary forms, with or without
     
    778779            m_value.ident = CSSValueTableCaption;
    779780            break;
     781#if ENABLE(WCSS)
     782        case WAP_MARQUEE:
     783            m_value.ident = CSSValueWapMarquee;
     784            break;
     785#endif
    780786        case BOX:
    781787            m_value.ident = CSSValueWebkitBox;
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r47155 r47176  
    29972997    case CSSPropertyDisplay:
    29982998        HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(display, Display)
     2999#if ENABLE(WCSS)
     3000        if (primitiveValue) {
     3001            if (primitiveValue->getIdent() == CSSValueWapMarquee) {
     3002                // Initialize Wap Marquee style
     3003                m_style->setOverflowX(OMARQUEE);
     3004                m_style->setOverflowY(OMARQUEE);
     3005                m_style->setWhiteSpace(NOWRAP);
     3006                m_style->setMarqueeDirection(MLEFT);
     3007                m_style->setMarqueeSpeed(85); // Normal speed
     3008                m_style->setMarqueeLoopCount(1);
     3009                m_style->setMarqueeBehavior(MSCROLL);
     3010
     3011                if (m_parentStyle)
     3012                    m_style->setDisplay(m_parentStyle->display());
     3013                else
     3014                    m_style->setDisplay(*primitiveValue);
     3015            } else
     3016                m_style->setDisplay(*primitiveValue);
     3017        }
     3018#endif
    29993019        return;
    30003020    case CSSPropertyEmptyCells:
     
    47484768        m_style->setMarqueeBehavior(m_parentStyle->marqueeBehavior());
    47494769        return;
     4770#if ENABLE(WCSS)
     4771    case CSSPropertyWapMarqueeLoop:
     4772#endif
    47504773    case CSSPropertyWebkitMarqueeRepetition: {
    47514774        HANDLE_INHERIT_AND_INITIAL(marqueeLoopCount, MarqueeLoopCount)
     
    47584781        return;
    47594782    }
     4783#if ENABLE(WCSS)
     4784    case CSSPropertyWapMarqueeSpeed:
     4785#endif
    47604786    case CSSPropertyWebkitMarqueeSpeed: {
    47614787        HANDLE_INHERIT_AND_INITIAL(marqueeSpeed, MarqueeSpeed)     
     
    48084834        return;
    48094835    }
     4836#if ENABLE(WCSS)
     4837    case CSSPropertyWapMarqueeStyle:
     4838#endif
    48104839    case CSSPropertyWebkitMarqueeStyle:
    48114840        HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeBehavior, MarqueeBehavior)     
    48124841        return;
     4842#if ENABLE(WCSS)
     4843    case CSSPropertyWapMarqueeDir:
     4844        HANDLE_INHERIT_AND_INITIAL(marqueeDirection, MarqueeDirection)
     4845        if (primitiveValue && primitiveValue->getIdent()) {
     4846            switch (primitiveValue->getIdent()) {
     4847            case CSSValueLtr:
     4848                m_style->setMarqueeDirection(MRIGHT);
     4849                break;
     4850            case CSSValueRtl:
     4851                m_style->setMarqueeDirection(MLEFT);
     4852                break;
     4853            default:
     4854                m_style->setMarqueeDirection(*primitiveValue);
     4855                break;
     4856            }
     4857        }
     4858        return;
     4859#endif
    48134860    case CSSPropertyWebkitMarqueeDirection:
    48144861        HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeDirection, MarqueeDirection)
  • trunk/WebCore/css/CSSValueKeywords.in

    r46281 r47176  
    261261-webkit-box
    262262-webkit-inline-box
     263-wap-marquee
    263264#none
    264265#
  • trunk/WebCore/rendering/RenderMarquee.cpp

    r45624 r47176  
    11/*
    22 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
     3 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
    34 *
    45 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
     
    153154void RenderMarquee::start()
    154155{
    155     if (m_timer.isActive() || m_layer->renderer()->style()->marqueeIncrement().isZero())
     156    if (m_timer.isActive() || m_layer->renderer()->style()->marqueeIncrement().isZero()
     157#if ENABLE(WCSS) && ENABLE(XHTMLMP)
     158        || (m_layer->renderer()->document()->isXHTMLMPDocument() && !m_layer->renderer()->style()->marqueeLoopCount())
     159#endif
     160       )
    156161        return;
    157162
  • trunk/WebCore/rendering/RenderObject.cpp

    r46815 r47176  
    55 *           (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
    66 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
     7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
    78 *
    89 * This library is free software; you can redistribute it and/or
     
    143144            break;
    144145        case TABLE_CAPTION:
     146#if ENABLE(WCSS)
     147        // As per the section 17.1 of the spec WAP-239-WCSS-20011026-a.pdf,
     148        // the marquee box inherits and extends the characteristics of the
     149        // principal block box ([CSS2] section 9.2.1).
     150        case WAP_MARQUEE:
     151#endif
    145152            o = new (arena) RenderBlock(node);
    146153            break;
  • trunk/WebCore/rendering/style/RenderStyleConstants.h

    r46547 r47176  
    55 * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
    66 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
     7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
    78 *
    89 * This library is free software; you can redistribute it and/or
     
    299300    TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW,
    300301    TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
    301     TABLE_CAPTION, BOX, INLINE_BOX, NONE
     302    TABLE_CAPTION, BOX, INLINE_BOX,
     303#if ENABLE(WCSS)
     304    WAP_MARQUEE,
     305#endif
     306    NONE
    302307};
    303308
Note: See TracChangeset for help on using the changeset viewer.