Changeset 97714 in webkit


Ignore:
Timestamp:
Oct 17, 2011 9:31:00 PM (13 years ago)
Author:
adamk@chromium.org
Message:

Parse MutationObserverOptions directly into a bitfield
https://bugs.webkit.org/show_bug.cgi?id=70287

Reviewed by Ryosuke Niwa.

Replaces the MutationObserverOptions class with a typedef,
used to pass a bitfield composed of enums defined in
WebKitMutationObserver.h.

No new tests because no behavior should change.

  • GNUmakefile.list.am:
  • WebCore.gypi:
  • WebCore.pro:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDictionary.h: Removed now-unused method.
  • bindings/js/JSWebKitMutationObserverCustom.cpp:

(WebCore::JSWebKitMutationObserver::observe):

  • bindings/v8/custom/V8WebKitMutationObserverCustom.cpp:

(WebCore::V8WebKitMutationObserver::observeCallback):

  • dom/MutationObserverOptions.h: Removed.
  • dom/Node.cpp:

(WebCore::Node::registerMutationObserver):

  • dom/Node.h:
  • dom/NodeRareData.h:

(WebCore::MutationObserverEntry::MutationObserverEntry):
(WebCore::MutationObserverEntry::matches):

  • dom/WebKitMutationObserver.cpp:

(WebCore::WebKitMutationObserver::observe):

  • dom/WebKitMutationObserver.h:
Location:
trunk/Source/WebCore
Files:
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r97712 r97714  
     12011-10-17  Adam Klein  <adamk@chromium.org>
     2
     3        Parse MutationObserverOptions directly into a bitfield
     4        https://bugs.webkit.org/show_bug.cgi?id=70287
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Replaces the MutationObserverOptions class with a typedef,
     9        used to pass a bitfield composed of enums defined in
     10        WebKitMutationObserver.h.
     11
     12        No new tests because no behavior should change.
     13
     14        * GNUmakefile.list.am:
     15        * WebCore.gypi:
     16        * WebCore.pro:
     17        * WebCore.xcodeproj/project.pbxproj:
     18        * bindings/js/JSDictionary.h: Removed now-unused method.
     19        * bindings/js/JSWebKitMutationObserverCustom.cpp:
     20        (WebCore::JSWebKitMutationObserver::observe):
     21        * bindings/v8/custom/V8WebKitMutationObserverCustom.cpp:
     22        (WebCore::V8WebKitMutationObserver::observeCallback):
     23        * dom/MutationObserverOptions.h: Removed.
     24        * dom/Node.cpp:
     25        (WebCore::Node::registerMutationObserver):
     26        * dom/Node.h:
     27        * dom/NodeRareData.h:
     28        (WebCore::MutationObserverEntry::MutationObserverEntry):
     29        (WebCore::MutationObserverEntry::matches):
     30        * dom/WebKitMutationObserver.cpp:
     31        (WebCore::WebKitMutationObserver::observe):
     32        * dom/WebKitMutationObserver.h:
     33
    1342011-10-17  Luke Macpherson   <macpherson@chromium.org>
    235
  • trunk/Source/WebCore/GNUmakefile.list.am

    r97696 r97714  
    12381238        Source/WebCore/dom/MutationEvent.cpp \
    12391239        Source/WebCore/dom/MutationEvent.h \
    1240         Source/WebCore/dom/MutationObserverOptions.h \
    12411240        Source/WebCore/dom/MutationRecord.cpp \
    12421241        Source/WebCore/dom/MutationRecord.h \
  • trunk/Source/WebCore/WebCore.gypi

    r97692 r97714  
    52285228            'dom/MutationEvent.cpp',
    52295229            'dom/MutationEvent.h',
    5230             'dom/MutationObserverOptions.h',
    52315230            'dom/MutationRecord.cpp',
    52325231            'dom/MutationRecord.h',
  • trunk/Source/WebCore/WebCore.pro

    r97696 r97714  
    15561556    dom/MutationCallback.h \
    15571557    dom/MutationEvent.h \
    1558     dom/MutationObserverOptions.h \
    15591558    dom/MutationRecord.h \
    15601559    dom/NamedNodeMap.h \
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r97669 r97714  
    54705470                C6F0900E14327B6100685849 /* WebKitMutationObserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F0900514327B6100685849 /* WebKitMutationObserver.cpp */; };
    54715471                C6F0900F14327B6100685849 /* WebKitMutationObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0900614327B6100685849 /* WebKitMutationObserver.h */; settings = {ATTRIBUTES = (Private, ); }; };
    5472                 C6F0901114327B6100685849 /* MutationObserverOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0900814327B6100685849 /* MutationObserverOptions.h */; };
    54735472                C6F0902814327D4F00685849 /* JSMutationCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6F0902014327D4F00685849 /* JSMutationCallback.cpp */; };
    54745473                C6F0902914327D4F00685849 /* JSMutationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F0902114327D4F00685849 /* JSMutationCallback.h */; };
     
    1277212771                C6F0900614327B6100685849 /* WebKitMutationObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitMutationObserver.h; sourceTree = "<group>"; };
    1277312772                C6F0900714327B6100685849 /* WebKitMutationObserver.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitMutationObserver.idl; sourceTree = "<group>"; };
    12774                 C6F0900814327B6100685849 /* MutationObserverOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MutationObserverOptions.h; sourceTree = "<group>"; };
    1277512773                C6F0902014327D4F00685849 /* JSMutationCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMutationCallback.cpp; sourceTree = "<group>"; };
    1277612774                C6F0902114327D4F00685849 /* JSMutationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMutationCallback.h; sourceTree = "<group>"; };
     
    2112921127                                85031B340A44EFC700F992E0 /* MutationEvent.h */,
    2113021128                                93EEC1F309C2877700C515D1 /* MutationEvent.idl */,
    21131                                 C6F0900814327B6100685849 /* MutationObserverOptions.h */,
    2113221129                                C6F08FB91430FE8F00685849 /* MutationRecord.cpp */,
    2113321130                                C6F08FBA1430FE8F00685849 /* MutationRecord.h */,
     
    2363523632                                C6F0900A14327B6100685849 /* MutationCallback.h in Headers */,
    2363623633                                85031B4A0A44EFC700F992E0 /* MutationEvent.h in Headers */,
    23637                                 C6F0901114327B6100685849 /* MutationObserverOptions.h in Headers */,
    2363823634                                C6F08FBD1430FE8F00685849 /* MutationRecord.h in Headers */,
    2363923635                                A81872230977D3C0005826D9 /* NamedNodeMap.h in Headers */,
  • trunk/Source/WebCore/bindings/js/JSDictionary.h

    r97159 r97714  
    5353    bool tryGetProperty(const char* propertyName, T* context, void (*setter)(T* context, const Result&));
    5454
    55     template <typename T>
    56     bool tryGetProperty(const char* propertyName, T& context, void (T::*setter)(bool));
    57 
    5855private:
    5956    enum GetPropertyResult {
     
    107104}
    108105
    109 template <typename T>
    110 bool JSDictionary::tryGetProperty(const char* propertyName, T& context, void (T::*setter)(bool))
    111 {
    112     JSC::JSValue value;
    113     switch (tryGetProperty(propertyName, value)) {
    114     case ExceptionThrown:
    115         return false;
    116     case PropertyFound: {
    117         bool result;
    118         convertValue(m_exec, value, result);
    119 
    120         if (m_exec->hadException())
    121             return false;
    122 
    123         (context.*setter)(result);
    124         break;
    125     }
    126     case NoPropertyFound:
    127         break;
    128     }
    129 
    130     return true;
    131 }
    132 
    133106template <typename Result>
    134107bool JSDictionary::tryGetProperty(const char* propertyName, Result& finalResult)
  • trunk/Source/WebCore/bindings/js/JSWebKitMutationObserverCustom.cpp

    r97159 r97714  
    3939#include "JSMutationCallback.h"
    4040#include "JSNode.h"
    41 #include "MutationObserverOptions.h"
    4241#include "Node.h"
    4342#include "WebKitMutationObserver.h"
     
    7978
    8079    JSDictionary dictionary(exec, optionsObject);
     80    MutationObserverOptions options = 0;
     81    bool option;
     82    if (dictionary.tryGetProperty("childList", option) && option)
     83        options |= WebKitMutationObserver::ChildList;
     84    if (dictionary.tryGetProperty("attributes", option) && option)
     85        options |= WebKitMutationObserver::Attributes;
     86    if (dictionary.tryGetProperty("subtree", option) && option)
     87        options |= WebKitMutationObserver::Subtree;
     88    if (dictionary.tryGetProperty("attributeOldValue", option) && option)
     89        options |= WebKitMutationObserver::AttributeOldValue;
     90    if (dictionary.tryGetProperty("characterDataOldValue", option) && option)
     91        options |= WebKitMutationObserver::CharacterDataOldValue;
    8192
    82     RefPtr<MutationObserverOptions> options = MutationObserverOptions::create();
    83     if (!dictionary.tryGetProperty("childList", *options, &MutationObserverOptions::setChildList)
    84         || !dictionary.tryGetProperty("attributes", *options, &MutationObserverOptions::setAttributes)
    85         || !dictionary.tryGetProperty("characterData", *options, &MutationObserverOptions::setCharacterData)
    86         || !dictionary.tryGetProperty("subtree", *options, &MutationObserverOptions::setSubtree)
    87         || !dictionary.tryGetProperty("attributeOldValue", *options, &MutationObserverOptions::setAttributeOldValue)
    88         || !dictionary.tryGetProperty("characterDataOldValue", *options, &MutationObserverOptions::setCharacterDataOldValue))
     93    if (exec->hadException())
    8994        return jsUndefined();
    9095
    91     impl()->observe(target, options.get());
     96    impl()->observe(target, options);
    9297    return jsUndefined();
    9398}
  • trunk/Source/WebCore/bindings/v8/custom/V8WebKitMutationObserverCustom.cpp

    r97159 r97714  
    3636
    3737#include "ExceptionCode.h"
    38 #include "MutationObserverOptions.h"
    3938#include "OptionsObject.h"
    4039#include "V8Binding.h"
     
    8786
    8887    OptionsObject optionsObject(args[1]);
    89     RefPtr<MutationObserverOptions> options = MutationObserverOptions::create();
     88    unsigned options = 0;
     89    bool option;
     90    if (optionsObject.getKeyValue("childList", option) && option)
     91        options |= WebKitMutationObserver::ChildList;
     92    if (optionsObject.getKeyValue("attributes", option) && option)
     93        options |= WebKitMutationObserver::Attributes;
     94    if (optionsObject.getKeyValue("characterData", option) && option)
     95        options |= WebKitMutationObserver::CharacterData;
     96    if (optionsObject.getKeyValue("subtree", option) && option)
     97        options |= WebKitMutationObserver::Subtree;
     98    if (optionsObject.getKeyValue("attributeOldValue", option) && option)
     99        options |= WebKitMutationObserver::AttributeOldValue;
     100    if (optionsObject.getKeyValue("characterDataOldValue", option) && option)
     101        options |= WebKitMutationObserver::CharacterDataOldValue;
    90102
    91     bool option;
    92     if (optionsObject.getKeyValue("childList", option))
    93         options->setChildList(option);
    94     if (optionsObject.getKeyValue("attributes", option))
    95         options->setAttributes(option);
    96     if (optionsObject.getKeyValue("characterData", option))
    97         options->setCharacterData(option);
    98     if (optionsObject.getKeyValue("subtree", option))
    99         options->setSubtree(option);
    100     if (optionsObject.getKeyValue("attributeOldValue", option))
    101         options->setAttributeOldValue(option);
    102     if (optionsObject.getKeyValue("characterDataOldValue", option))
    103         options->setCharacterDataOldValue(option);
    104 
    105     imp->observe(target, options.get());
     103    imp->observe(target, options);
    106104    return v8::Handle<v8::Value>();
    107105}
  • trunk/Source/WebCore/dom/Node.cpp

    r97659 r97714  
    27062706}
    27072707
    2708 Node::MutationRegistrationResult Node::registerMutationObserver(PassRefPtr<WebKitMutationObserver> observer, unsigned char options)
     2708Node::MutationRegistrationResult Node::registerMutationObserver(PassRefPtr<WebKitMutationObserver> observer, MutationObserverOptions options)
    27092709{
    27102710    Vector<MutationObserverEntry>* observerEntries = ensureMutationObserverEntries();
  • trunk/Source/WebCore/dom/Node.h

    r97659 r97714  
    599599        MutationRegistrationOptionsReset
    600600    };
    601     MutationRegistrationResult registerMutationObserver(PassRefPtr<WebKitMutationObserver>, unsigned char options);
     601    MutationRegistrationResult registerMutationObserver(PassRefPtr<WebKitMutationObserver>, MutationObserverOptions);
    602602
    603603    void unregisterMutationObserver(PassRefPtr<WebKitMutationObserver>);
  • trunk/Source/WebCore/dom/NodeRareData.h

    r97659 r97714  
    9191#if ENABLE(MUTATION_OBSERVERS)
    9292struct MutationObserverEntry {
    93     MutationObserverEntry(PassRefPtr<WebKitMutationObserver> observer, unsigned char options)
     93    MutationObserverEntry(PassRefPtr<WebKitMutationObserver> observer, MutationObserverOptions options)
    9494        : observer(observer)
    9595        , options(options)
     
    102102    }
    103103
    104     bool matches(unsigned char options) const
     104    bool matches(MutationObserverOptions options) const
    105105    {
    106106        return this->options & options;
     
    108108
    109109    RefPtr<WebKitMutationObserver> observer;
    110     unsigned char options;
     110    MutationObserverOptions options;
    111111};
    112112
  • trunk/Source/WebCore/dom/WebKitMutationObserver.cpp

    r97659 r97714  
    3535#include "WebKitMutationObserver.h"
    3636
    37 #include "MutationObserverOptions.h"
    3837#include "MutationCallback.h"
    3938#include "MutationRecord.h"
     
    5756}
    5857
    59 void WebKitMutationObserver::observe(Node* node, MutationObserverOptions* options)
     58void WebKitMutationObserver::observe(Node* node, MutationObserverOptions options)
    6059{
    61     unsigned char optionFlags = 0;
     60    // FIXME: More options composition work needs to be done here, e.g., validation.
    6261
    63     // FIXME: Push composition of the optionFlags into the custom binding.
    64     if (options->childList())
    65         optionFlags |= ChildList;
    66     if (options->attributes())
    67         optionFlags |= Attributes;
    68     if (options->characterData())
    69         optionFlags |= CharacterData;
    70     // FIXME: More options composition work needs to be done here.
    71 
    72     if (node->registerMutationObserver(this, optionFlags) == Node::MutationObserverRegistered)
     62    if (node->registerMutationObserver(this, options) == Node::MutationObserverRegistered)
    7363        m_observedNodes.append(node);
    7464}
  • trunk/Source/WebCore/dom/WebKitMutationObserver.h

    r97659 r97714  
    4242
    4343class MutationCallback;
    44 class MutationObserverOptions;
    4544class MutationRecord;
    4645class Node;
     46
     47typedef unsigned char MutationObserverOptions;
    4748
    4849class WebKitMutationObserver : public RefCounted<WebKitMutationObserver> {
     
    6667    ~WebKitMutationObserver();
    6768
    68     void observe(Node*, MutationObserverOptions*);
     69    void observe(Node*, MutationObserverOptions);
    6970    void disconnect();
    7071    void observedNodeDestructed(Node*);
Note: See TracChangeset for help on using the changeset viewer.