Changeset 113783 in webkit


Ignore:
Timestamp:
Apr 10, 2012 3:39:39 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Web Inspector: CodeGeneratorInspector.py: do not expose raw methods from generated types
https://bugs.webkit.org/show_bug.cgi?id=83390

Patch by Peter Rybin <peter.rybin@gmail.com> on 2012-04-10
Reviewed by Yury Semikhatsky.

Intermediate classes InspectorObjectBase and InspectorArrayBase are created. They have all raw methos
protected. InspectorObject and InspectorArray now inherit the corresponding base classes with exposing
all their protected methods.

"Open types" are left inheriting from InspectorObject, plus field name constants are generated for
an easy random access to all properties.

All the client code is fixed to use type-safe API rather than raw access methods in function parameter
and return types and bodies.

  • inspector/CodeGeneratorInspector.py:

(RawTypes.Object):
(RawTypes.Object.get_setter_name):
(RawTypes.Array):
(RawTypes.Array.get_setter_name):
(TypeBindings.create_type_declaration_.ClassBinding.get_code_generator.CodeGenerator.generate_type_builder):
(Array):
(Generator):
(Generator.resolve_type_and_generate_ad_hoc.InterfaceGenerateContext):
(Generator.process_types.GenerateContext):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::querySelectorAll):
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):

  • inspector/InspectorDOMAgent.h:

(InspectorDOMAgent):

  • inspector/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

  • inspector/InspectorDebuggerAgent.cpp:

(WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
(WebCore::InspectorDebuggerAgent::didPause):

  • inspector/InspectorPageAgent.cpp:

(WebCore::buildObjectForSearchResult):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):

  • inspector/InspectorResourceAgent.cpp:

(WebCore::InspectorResourceAgent::didReceiveResponse):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::fillMediaListChain):
(WebCore::InspectorStyle::styleWithProperties):

  • inspector/InspectorValues.cpp:

(WebCore::InspectorObjectBase::~InspectorObjectBase):
(WebCore::InspectorObjectBase::asObject):
(WebCore::InspectorObjectBase::openAccessors):
(WebCore):
(WebCore::InspectorObjectBase::getBoolean):
(WebCore::InspectorObjectBase::getString):
(WebCore::InspectorObjectBase::getObject):
(WebCore::InspectorObjectBase::getArray):
(WebCore::InspectorObjectBase::get):
(WebCore::InspectorObjectBase::remove):
(WebCore::InspectorObjectBase::writeJSON):
(WebCore::InspectorObjectBase::InspectorObjectBase):
(WebCore::InspectorArrayBase::~InspectorArrayBase):
(WebCore::InspectorArrayBase::asArray):
(WebCore::InspectorArrayBase::writeJSON):
(WebCore::InspectorArrayBase::InspectorArrayBase):
(WebCore::InspectorArrayBase::get):

  • inspector/InspectorValues.h:

(InspectorObjectBase):
(InspectorObject):
(WebCore::InspectorObject::create):
(WebCore):
(InspectorArrayBase):
(WebCore::InspectorArrayBase::length):
(InspectorArray):
(WebCore::InspectorArray::create):
(WebCore::InspectorObjectBase::find):
(WebCore::InspectorObjectBase::setBoolean):
(WebCore::InspectorObjectBase::setNumber):
(WebCore::InspectorObjectBase::setString):
(WebCore::InspectorObjectBase::setValue):
(WebCore::InspectorObjectBase::setObject):
(WebCore::InspectorObjectBase::setArray):
(WebCore::InspectorArrayBase::pushBoolean):
(WebCore::InspectorArrayBase::pushInt):
(WebCore::InspectorArrayBase::pushNumber):
(WebCore::InspectorArrayBase::pushString):
(WebCore::InspectorArrayBase::pushValue):
(WebCore::InspectorArrayBase::pushObject):
(WebCore::InspectorArrayBase::pushArray):

  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):

Location:
trunk/Source/WebCore
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r113781 r113783  
     12012-04-10  Peter Rybin  <peter.rybin@gmail.com>
     2
     3        Web Inspector: CodeGeneratorInspector.py: do not expose raw methods from generated types
     4        https://bugs.webkit.org/show_bug.cgi?id=83390
     5
     6        Reviewed by Yury Semikhatsky.
     7
     8        Intermediate classes InspectorObjectBase and InspectorArrayBase are created. They have all raw methos
     9        protected. InspectorObject and InspectorArray now inherit the corresponding base classes with exposing
     10        all their protected methods.
     11
     12        "Open types" are left inheriting from InspectorObject, plus field name constants are generated for
     13        an easy random access to all properties.
     14
     15        All the client code is fixed to use type-safe API rather than raw access methods in function parameter
     16        and return types and bodies.
     17
     18        * inspector/CodeGeneratorInspector.py:
     19        (RawTypes.Object):
     20        (RawTypes.Object.get_setter_name):
     21        (RawTypes.Array):
     22        (RawTypes.Array.get_setter_name):
     23        (TypeBindings.create_type_declaration_.ClassBinding.get_code_generator.CodeGenerator.generate_type_builder):
     24        (Array):
     25        (Generator):
     26        (Generator.resolve_type_and_generate_ad_hoc.InterfaceGenerateContext):
     27        (Generator.process_types.GenerateContext):
     28        * inspector/InspectorDOMAgent.cpp:
     29        (WebCore::InspectorDOMAgent::querySelectorAll):
     30        (WebCore::InspectorDOMAgent::getEventListenersForNode):
     31        (WebCore::InspectorDOMAgent::buildObjectForEventListener):
     32        * inspector/InspectorDOMAgent.h:
     33        (InspectorDOMAgent):
     34        * inspector/InspectorDOMDebuggerAgent.cpp:
     35        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
     36        * inspector/InspectorDebuggerAgent.cpp:
     37        (WebCore::InspectorDebuggerAgent::setBreakpointByUrl):
     38        (WebCore::InspectorDebuggerAgent::didPause):
     39        * inspector/InspectorPageAgent.cpp:
     40        (WebCore::buildObjectForSearchResult):
     41        (WebCore::InspectorPageAgent::searchInResources):
     42        (WebCore::InspectorPageAgent::buildObjectForFrameTree):
     43        * inspector/InspectorResourceAgent.cpp:
     44        (WebCore::InspectorResourceAgent::didReceiveResponse):
     45        * inspector/InspectorStyleSheet.cpp:
     46        (WebCore::fillMediaListChain):
     47        (WebCore::InspectorStyle::styleWithProperties):
     48        * inspector/InspectorValues.cpp:
     49        (WebCore::InspectorObjectBase::~InspectorObjectBase):
     50        (WebCore::InspectorObjectBase::asObject):
     51        (WebCore::InspectorObjectBase::openAccessors):
     52        (WebCore):
     53        (WebCore::InspectorObjectBase::getBoolean):
     54        (WebCore::InspectorObjectBase::getString):
     55        (WebCore::InspectorObjectBase::getObject):
     56        (WebCore::InspectorObjectBase::getArray):
     57        (WebCore::InspectorObjectBase::get):
     58        (WebCore::InspectorObjectBase::remove):
     59        (WebCore::InspectorObjectBase::writeJSON):
     60        (WebCore::InspectorObjectBase::InspectorObjectBase):
     61        (WebCore::InspectorArrayBase::~InspectorArrayBase):
     62        (WebCore::InspectorArrayBase::asArray):
     63        (WebCore::InspectorArrayBase::writeJSON):
     64        (WebCore::InspectorArrayBase::InspectorArrayBase):
     65        (WebCore::InspectorArrayBase::get):
     66        * inspector/InspectorValues.h:
     67        (InspectorObjectBase):
     68        (InspectorObject):
     69        (WebCore::InspectorObject::create):
     70        (WebCore):
     71        (InspectorArrayBase):
     72        (WebCore::InspectorArrayBase::length):
     73        (InspectorArray):
     74        (WebCore::InspectorArray::create):
     75        (WebCore::InspectorObjectBase::find):
     76        (WebCore::InspectorObjectBase::setBoolean):
     77        (WebCore::InspectorObjectBase::setNumber):
     78        (WebCore::InspectorObjectBase::setString):
     79        (WebCore::InspectorObjectBase::setValue):
     80        (WebCore::InspectorObjectBase::setObject):
     81        (WebCore::InspectorObjectBase::setArray):
     82        (WebCore::InspectorArrayBase::pushBoolean):
     83        (WebCore::InspectorArrayBase::pushInt):
     84        (WebCore::InspectorArrayBase::pushNumber):
     85        (WebCore::InspectorArrayBase::pushString):
     86        (WebCore::InspectorArrayBase::pushValue):
     87        (WebCore::InspectorArrayBase::pushObject):
     88        (WebCore::InspectorArrayBase::pushArray):
     89        * inspector/TimelineRecordFactory.cpp:
     90        (WebCore::TimelineRecordFactory::createGenericRecord):
     91
    1922012-04-10  Philip Rogers  <pdr@google.com>
    293
  • trunk/Source/WebCore/inspector/CodeGeneratorInspector.py

    r113440 r113783  
    6262                                         "Timeline.TimelineEvent"])
    6363
    64 TYPES_WITH_OPEN_FIELD_LIST_SET = frozenset(["Timeline.TimelineEvent"])
     64TYPES_WITH_OPEN_FIELD_LIST_SET = frozenset(["Timeline.TimelineEvent",
     65                                            # InspectorStyleSheet not only creates this property but wants to read it and modify it.
     66                                            "CSS.CSSProperty",
     67                                            # InspectorResourceAgent needs to update mime-type.
     68                                            "Network.Response"])
    6569
    6670cmdline_parser = optparse.OptionParser()
     
    423427            return "Object"
    424428
    425         get_setter_name = get_getter_name
     429        @staticmethod
     430        def get_setter_name():
     431            return "Value"
    426432
    427433        @staticmethod
     
    507513            return "Array"
    508514
    509         get_setter_name = get_getter_name
     515        @staticmethod
     516        def get_setter_name():
     517            return "Value"
    510518
    511519        @staticmethod
     
    11421150                                helper.write_doc(writer)
    11431151                                class_name = fixed_type_name.class_name
     1152
     1153                                is_open_type = (context_domain_name + "." + class_name) in TYPES_WITH_OPEN_FIELD_LIST_SET
     1154
    11441155                                fixed_type_name.output_comment(writer)
    11451156                                writer.newline("class ")
    11461157                                writer.append(class_name)
    1147                                 writer.append(" : public InspectorObject {\n")
     1158                                writer.append(" : public ")
     1159                                if is_open_type:
     1160                                    writer.append("InspectorObject")
     1161                                else:
     1162                                    writer.append("InspectorObjectBase")
     1163                                writer.append(" {\n")
    11481164                                writer.newline("public:\n")
    11491165                                ad_hoc_type_writer = writer.insert_writer("    ")
     
    11851201        }
    11861202
    1187         Builder(PassRefPtr<%s> ptr)
     1203        Builder(PassRefPtr</*%s*/InspectorObject> ptr)
    11881204        {
    11891205            COMPILE_ASSERT(STATE == NoFieldsSet, builder_created_in_non_init_state);
     
    12231239        {
    12241240            COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
     1241            COMPILE_ASSERT(sizeof(%s) == sizeof(InspectorObject), cannot_cast);
    12251242            return *reinterpret_cast<RefPtr<%s>*>(&m_result);
    12261243        }
     
    12331250
    12341251"""
    1235                                 % (class_name, class_name, class_name, class_name))
     1252                                % (class_name, class_name, class_name, class_name, class_name))
    12361253
    12371254                                writer.newline("    /*\n")
     
    12451262"""    static Builder<NoFieldsSet> create()
    12461263    {
    1247         return Builder<NoFieldsSet>(adoptRef(new %s()));
     1264        return Builder<NoFieldsSet>(InspectorObject::create());
    12481265    }
    1249 """ % class_name)
     1266""")
    12501267
    12511268                                writer.newline("    typedef TypeBuilder::StructItemTraits ItemTraits;\n")
     
    12661283
    12671284                                    if setter_name in INSPECTOR_OBJECT_SETTER_NAMES:
    1268                                         writer.newline("    using InspectorObject::%s;\n\n" % setter_name)
     1285                                        writer.newline("    using InspectorObjectBase::%s;\n\n" % setter_name)
    12691286
    12701287                                if class_binding_cls.need_user_runtime_cast_:
     
    12771294                                    writer.newline("        assertCorrectValue(object.get());\n")
    12781295                                    writer.append("#endif  // %s\n" % VALIDATOR_IFDEF_NAME)
    1279                                     writer.newline("        COMPILE_ASSERT(sizeof(%s) == sizeof(InspectorObject), type_cast_problem);\n" % class_name)
    1280                                     writer.newline("        return static_cast<%s*>(object.get());\n" % class_name)
     1296                                    writer.newline("        COMPILE_ASSERT(sizeof(%s) == sizeof(InspectorObjectBase), type_cast_problem);\n" % class_name)
     1297                                    writer.newline("        return static_cast<%s*>(static_cast<InspectorObjectBase*>(object.get()));\n" % class_name)
    12811298                                    writer.newline("    }\n")
    12821299                                    writer.append("\n")
     
    13221339                                        validator_writer.newline("    ASSERT(foundPropertiesCount == object->size());\n")
    13231340                                    validator_writer.newline("}\n\n\n")
     1341
     1342                                if is_open_type:
     1343                                    cpp_writer = generate_context.cpp_writer
     1344                                    writer.append("\n")
     1345                                    writer.newline("    // Property names for type generated as open.\n")
     1346                                    for prop_data in resolve_data.main_properties + resolve_data.optional_properties:
     1347                                        prop_name = prop_data.p["name"]
     1348                                        prop_field_name = Capitalizer.lower_camel_case_to_upper(prop_name)
     1349                                        writer.newline("    static const char* %s;\n" % (prop_field_name))
     1350                                        cpp_writer.newline("const char* %s%s::%s = \"%s\";\n" % (helper.full_name_prefix_for_impl, class_name, prop_field_name, prop_name))
     1351
    13241352
    13251353                                writer.newline("};\n\n")
     
    22052233
    22062234template<typename T>
    2207 class Array : public InspectorArray {
     2235class Array : public InspectorArrayBase {
    22082236private:
    22092237    Array() { }
     2238
     2239    InspectorArray* openAccessors() {
     2240        COMPILE_ASSERT(sizeof(InspectorArray) == sizeof(Array<T>), cannot_cast);
     2241        return static_cast<InspectorArray*>(static_cast<InspectorArrayBase*>(this));
     2242    }
    22102243
    22112244public:
    22122245    void addItem(PassRefPtr<T> value)
    22132246    {
    2214         ArrayItemHelper<T>::Traits::pushRefPtr(this, value);
     2247        ArrayItemHelper<T>::Traits::pushRefPtr(this->openAccessors(), value);
    22152248    }
    22162249
    22172250    void addItem(T value)
    22182251    {
    2219         ArrayItemHelper<T>::Traits::pushRaw(this, value);
     2252        ArrayItemHelper<T>::Traits::pushRaw(this->openAccessors(), value);
    22202253    }
    22212254
     
    22342267#endif  // !ASSERT_DISABLED
    22352268        COMPILE_ASSERT(sizeof(Array<T>) == sizeof(InspectorArray), type_cast_problem);
    2236         return static_cast<Array<T>*>(array.get());
     2269        return static_cast<Array<T>*>(static_cast<InspectorArrayBase*>(array.get()));
    22372270    }
    22382271
     
    22512284
    22522285struct StructItemTraits {
    2253     static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value)
     2286    static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorValue> value)
    22542287    {
    2255         array->pushObject(value);
     2288        array->pushValue(value);
    22562289    }
    22572290
     
    22952328struct ArrayItemHelper<InspectorObject> {
    22962329    struct Traits {
    2297         static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorObject> value)
     2330        static void pushRefPtr(InspectorArray* array, PassRefPtr<InspectorValue> value)
    22982331        {
    2299             array->pushObject(value);
     2332            array->pushValue(value);
    23002333        }
    23012334    };
     
    23072340        static void pushRefPtr(InspectorArray* array, PassRefPtr<TypeBuilder::Array<T> > value)
    23082341        {
    2309             array->pushArray(value);
     2342            array->pushValue(value);
    23102343        }
    23112344    };
     
    23482381
    23492382} // namespace TypeBuilder
     2383
     2384$implCode
    23502385
    23512386#if """ + VALIDATOR_IFDEF_NAME + """
     
    24682503    validator_impl_list = []
    24692504    validator_impl_raw_types_list = []
     2505    type_builder_impl_list = []
    24702506
    24712507
     
    27782814        class InterfaceGenerateContext:
    27792815            validator_writer = "not supported in InterfaceGenerateContext"
     2816            cpp_writer = validator_writer
    27802817
    27812818        for type in ad_hoc_type_list:
     
    27922829        class GenerateContext:
    27932830            validator_writer = Writer(Generator.validator_impl_list, "")
     2831            cpp_writer = Writer(Generator.type_builder_impl_list, "")
    27942832
    27952833        def generate_all_domains_code(out, type_data_callback):
     
    29062944typebuilder_cpp_file.write(Templates.typebuilder_cpp.substitute(None,
    29072945    enumConstantValues=EnumConstants.get_enum_constant_code(),
     2946    implCode=join(flatten_list(Generator.type_builder_impl_list), ""),
    29082947    validatorCode=join(flatten_list(Generator.validator_impl_list), "")))
    29092948
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp

    r113700 r113783  
    506506
    507507    for (unsigned i = 0; i < nodes->length(); ++i)
    508         result->pushNumber(pushNodePathToFrontend(nodes->item(i)));
     508        result->addItem(pushNodePathToFrontend(nodes->item(i)));
    509509}
    510510
     
    747747            const RegisteredEventListener& listener = vector[j];
    748748            if (listener.useCapture)
    749                 listenersArray->pushObject(buildObjectForEventListener(listener, info.eventType, info.node));
     749                listenersArray->addItem(buildObjectForEventListener(listener, info.eventType, info.node));
    750750        }
    751751    }
     
    758758            const RegisteredEventListener& listener = vector[j];
    759759            if (!listener.useCapture)
    760                 listenersArray->pushObject(buildObjectForEventListener(listener, info.eventType, info.node));
     760                listenersArray->addItem(buildObjectForEventListener(listener, info.eventType, info.node));
    761761        }
    762762    }
     
    12881288}
    12891289
    1290 PassRefPtr<InspectorObject> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node)
     1290PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node)
    12911291{
    12921292    RefPtr<EventListener> eventListener = registeredEventListener.listener;
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.h

    r112428 r113783  
    228228    PassRefPtr<TypeBuilder::Array<String> > buildArrayForElementAttributes(Element*);
    229229    PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > buildArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap);
    230     PassRefPtr<InspectorObject> buildObjectForEventListener(const RegisteredEventListener&, const AtomicString& eventType, Node*);
     230    PassRefPtr<TypeBuilder::DOM::EventListener> buildObjectForEventListener(const RegisteredEventListener&, const AtomicString& eventType, Node*);
    231231
    232232    Node* nodeForPath(const String& path);
  • trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp

    r113230 r113783  
    308308        // For inheritable breakpoint types, target node isn't always the same as the node that owns a breakpoint.
    309309        // Target node may be unknown to frontend, so we need to push it first.
    310         RefPtr<InspectorObject> targetNodeObject = m_domAgent->resolveNode(target, InspectorDebuggerAgent::backtraceObjectGroup);
    311         description->setObject("targetNode", targetNodeObject);
     310        RefPtr<TypeBuilder::Runtime::RemoteObject> targetNodeObject = m_domAgent->resolveNode(target, InspectorDebuggerAgent::backtraceObjectGroup);
     311        description->setValue("targetNode", targetNodeObject);
    312312
    313313        // Find breakpoint owner node.
  • trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp

    r112555 r113783  
    243243        if (!matches(it->second.url, url, isRegex))
    244244            continue;
    245         RefPtr<InspectorObject> location = resolveBreakpoint(breakpointId, it->first, breakpoint);
     245        RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(breakpointId, it->first, breakpoint);
    246246        if (location)
    247             locations->pushObject(location);
     247            locations->addItem(location);
    248248    }
    249249    *outBreakpointId = breakpointId;
     
    569569        if (!injectedScript.hasNoValue()) {
    570570            m_breakReason = InspectorFrontend::Debugger::Reason::Exception;
    571             m_breakAuxData = injectedScript.wrapObject(exception, "backtrace");
     571            m_breakAuxData = injectedScript.wrapObject(exception, "backtrace")->openAccessors();
    572572            // m_breakAuxData might be null after this.
    573573        }
  • trunk/Source/WebCore/inspector/InspectorPageAgent.cpp

    r113709 r113783  
    590590}
    591591
    592 static PassRefPtr<InspectorObject> buildObjectForSearchResult(const String& frameId, const String& url, int matchesCount)
    593 {
    594     RefPtr<InspectorObject> result = InspectorObject::create();
    595     result->setString("frameId", frameId);
    596     result->setString("url", url);
    597     result->setNumber("matchesCount", matchesCount);
    598 
    599     return result;
     592static PassRefPtr<TypeBuilder::Page::SearchResult> buildObjectForSearchResult(const String& frameId, const String& url, int matchesCount)
     593{
     594    return TypeBuilder::Page::SearchResult::create()
     595        .setUrl(url)
     596        .setFrameId(frameId)
     597        .setMatchesCount(matchesCount);
    600598}
    601599
     
    616614                int matchesCount = ContentSearchUtils::countRegularExpressionMatches(regex, content);
    617615                if (matchesCount)
    618                     searchResults->pushValue(buildObjectForSearchResult(frameId(frame), cachedResource->url(), matchesCount));
     616                    searchResults->addItem(buildObjectForSearchResult(frameId(frame), cachedResource->url(), matchesCount));
    619617            }
    620618        }
     
    622620            int matchesCount = ContentSearchUtils::countRegularExpressionMatches(regex, content);
    623621            if (matchesCount)
    624                 searchResults->pushValue(buildObjectForSearchResult(frameId(frame), frame->document()->url(), matchesCount));
     622                searchResults->addItem(buildObjectForSearchResult(frameId(frame), frame->document()->url(), matchesCount));
    625623        }
    626624    }
     
    904902    }
    905903
    906     RefPtr<InspectorArray> childrenArray;
     904    RefPtr<TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree> > childrenArray;
    907905    for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
    908906        if (!childrenArray) {
    909             childrenArray = InspectorArray::create();
    910             result->setArray("childFrames", childrenArray);
     907            childrenArray = TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree>::create();
     908            result->setChildFrames(childrenArray);
    911909        }
    912         childrenArray->pushObject(buildObjectForFrameTree(child));
     910        childrenArray->addItem(buildObjectForFrameTree(child));
    913911    }
    914912    return result;
  • trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp

    r113438 r113783  
    254254            // Use mime type from cached resource in case the one in response is empty.
    255255            if (resourceResponse && response.mimeType().isEmpty())
    256                 resourceResponse->setString("mimeType", cachedResource->response().mimeType());
     256                resourceResponse->setString(TypeBuilder::Network::Response::MimeType, cachedResource->response().mimeType());
    257257
    258258            m_resourcesData->addCachedResource(requestId, cachedResource);
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp

    r113438 r113783  
    230230                    else
    231231                        sourceURL = "";
    232                     mediaArray->pushObject(buildMediaObject(mediaList, styleSheet->ownerNode() ? MediaListSourceLinkedSheet : MediaListSourceInlineSheet, sourceURL));
     232                    mediaArray->addItem(buildMediaObject(mediaList, styleSheet->ownerNode() ? MediaListSourceLinkedSheet : MediaListSourceInlineSheet, sourceURL));
    233233                }
    234234                parentRule = styleSheet->ownerRule();
     
    511511                    else {
    512512                        bool previousParsedOk;
    513                         bool success = activeIt->second->getBoolean("parsedOk", &previousParsedOk);
     513                        bool success = activeIt->second->getBoolean(TypeBuilder::CSS::CSSProperty::ParsedOk, &previousParsedOk);
    514514                        if (success && !previousParsedOk)
    515515                            shouldInactivate = true;
     
    520520                if (shouldInactivate) {
    521521                    activeIt->second->setStatus(TypeBuilder::CSS::CSSProperty::Status::Inactive);
    522                     activeIt->second->remove("shorthandName");
     522                    activeIt->second->remove(TypeBuilder::CSS::CSSProperty::ShorthandName);
    523523                    propertyNameToPreviousActiveProperty.set(canonicalPropertyName, property);
    524524                }
     
    547547                    shorthandEntry->setString("name", shorthand);
    548548                    shorthandEntry->setString("value", shorthandValue(shorthand));
    549                     shorthandEntries->pushObject(shorthandEntry.release());
     549                    shorthandEntries->addItem(shorthandEntry.release());
    550550                }
    551551            }
  • trunk/Source/WebCore/inspector/InspectorValues.cpp

    r110854 r113783  
    5959    INVALID_TOKEN,
    6060};
    61    
     61
    6262const char* const nullString = "null";
    6363const char* const trueString = "true";
     
    242242    case '9':
    243243    case '-':
    244         if (parseNumberToken(start, end, tokenEnd)) 
     244        if (parseNumberToken(start, end, tokenEnd))
    245245            return NUMBER;
    246         break;           
     246        break;
    247247    case '"':
    248         if (parseStringToken(start + 1, end, tokenEnd)) 
     248        if (parseStringToken(start + 1, end, tokenEnd))
    249249            return STRING;
    250250        break;
     
    662662}
    663663
    664 InspectorObject::~InspectorObject()
    665 {
    666 }
    667 
    668 bool InspectorObject::asObject(RefPtr<InspectorObject>* output)
    669 {
    670     *output = this;
    671     return true;
    672 }
    673 
    674 PassRefPtr<InspectorObject> InspectorObject::asObject()
    675 {
    676     return this;
    677 }
    678 
    679 bool InspectorObject::getBoolean(const String& name, bool* output) const
     664InspectorObjectBase::~InspectorObjectBase()
     665{
     666}
     667
     668bool InspectorObjectBase::asObject(RefPtr<InspectorObject>* output)
     669{
     670    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
     671    *output = static_cast<InspectorObject*>(this);
     672    return true;
     673}
     674
     675PassRefPtr<InspectorObject> InspectorObjectBase::asObject()
     676{
     677    return openAccessors();
     678}
     679
     680InspectorObject* InspectorObjectBase::openAccessors()
     681{
     682    COMPILE_ASSERT(sizeof(InspectorObject) == sizeof(InspectorObjectBase), cannot_cast);
     683    return static_cast<InspectorObject*>(this);
     684}
     685
     686bool InspectorObjectBase::getBoolean(const String& name, bool* output) const
    680687{
    681688    RefPtr<InspectorValue> value = get(name);
     
    685692}
    686693
    687 bool InspectorObject::getString(const String& name, String* output) const
     694bool InspectorObjectBase::getString(const String& name, String* output) const
    688695{
    689696    RefPtr<InspectorValue> value = get(name);
     
    693700}
    694701
    695 PassRefPtr<InspectorObject> InspectorObject::getObject(const String& name) const
     702PassRefPtr<InspectorObject> InspectorObjectBase::getObject(const String& name) const
    696703{
    697704    PassRefPtr<InspectorValue> value = get(name);
     
    701708}
    702709
    703 PassRefPtr<InspectorArray> InspectorObject::getArray(const String& name) const
     710PassRefPtr<InspectorArray> InspectorObjectBase::getArray(const String& name) const
    704711{
    705712    PassRefPtr<InspectorValue> value = get(name);
     
    709716}
    710717
    711 PassRefPtr<InspectorValue> InspectorObject::get(const String& name) const
     718PassRefPtr<InspectorValue> InspectorObjectBase::get(const String& name) const
    712719{
    713720    Dictionary::const_iterator it = m_data.find(name);
     
    717724}
    718725
    719 void InspectorObject::remove(const String& name)
     726void InspectorObjectBase::remove(const String& name)
    720727{
    721728    m_data.remove(name);
     
    728735}
    729736
    730 void InspectorObject::writeJSON(StringBuilder* output) const
     737void InspectorObjectBase::writeJSON(StringBuilder* output) const
    731738{
    732739    output->append('{');
     
    743750}
    744751
    745 InspectorObject::InspectorObject()
     752InspectorObjectBase::InspectorObjectBase()
    746753    : InspectorValue(TypeObject)
    747754    , m_data()
     
    750757}
    751758
    752 InspectorArray::~InspectorArray()
    753 {
    754 }
    755 
    756 bool InspectorArray::asArray(RefPtr<InspectorArray>* output)
    757 {
    758     *output = this;
    759     return true;
    760 }
    761 
    762 PassRefPtr<InspectorArray> InspectorArray::asArray()
    763 {
    764     return this;
    765 }
    766 
    767 void InspectorArray::writeJSON(StringBuilder* output) const
     759InspectorArrayBase::~InspectorArrayBase()
     760{
     761}
     762
     763bool InspectorArrayBase::asArray(RefPtr<InspectorArray>* output)
     764{
     765    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
     766    *output = static_cast<InspectorArray*>(this);
     767    return true;
     768}
     769
     770PassRefPtr<InspectorArray> InspectorArrayBase::asArray()
     771{
     772    COMPILE_ASSERT(sizeof(InspectorArrayBase) == sizeof(InspectorArray), cannot_cast);
     773    return static_cast<InspectorArray*>(this);
     774}
     775
     776void InspectorArrayBase::writeJSON(StringBuilder* output) const
    768777{
    769778    output->append('[');
     
    776785}
    777786
    778 InspectorArray::InspectorArray()
     787InspectorArrayBase::InspectorArrayBase()
    779788    : InspectorValue(TypeArray)
    780789    , m_data()
     
    782791}
    783792
    784 PassRefPtr<InspectorValue> InspectorArray::get(size_t index)
     793PassRefPtr<InspectorValue> InspectorArrayBase::get(size_t index)
    785794{
    786795    ASSERT(index < m_data.size());
  • trunk/Source/WebCore/inspector/InspectorValues.h

    r112555 r113783  
    158158};
    159159
    160 class InspectorObject : public InspectorValue {
     160class InspectorObjectBase : public InspectorValue {
    161161private:
    162162    typedef HashMap<String, RefPtr<InspectorValue> > Dictionary;
     
    166166    typedef Dictionary::const_iterator const_iterator;
    167167
    168     static PassRefPtr<InspectorObject> create()
    169     {
    170         return adoptRef(new InspectorObject());
    171     }
    172     ~InspectorObject();
     168    virtual PassRefPtr<InspectorObject> asObject();
     169    InspectorObject* openAccessors();
     170
     171protected:
     172    ~InspectorObjectBase();
    173173
    174174    virtual bool asObject(RefPtr<InspectorObject>* output);
    175     virtual PassRefPtr<InspectorObject> asObject();
    176175
    177176    void setBoolean(const String& name, bool);
     
    209208
    210209protected:
    211     InspectorObject();
     210    InspectorObjectBase();
    212211
    213212private:
     
    216215};
    217216
    218 class InspectorArray : public InspectorValue {
     217class InspectorObject : public InspectorObjectBase {
     218public:
     219    static PassRefPtr<InspectorObject> create()
     220    {
     221        return adoptRef(new InspectorObject());
     222    }
     223
     224    using InspectorObjectBase::asObject;
     225
     226    using InspectorObjectBase::setBoolean;
     227    using InspectorObjectBase::setNumber;
     228    using InspectorObjectBase::setString;
     229    using InspectorObjectBase::setValue;
     230    using InspectorObjectBase::setObject;
     231    using InspectorObjectBase::setArray;
     232
     233    using InspectorObjectBase::find;
     234    using InspectorObjectBase::getBoolean;
     235    using InspectorObjectBase::getNumber;
     236    using InspectorObjectBase::getString;
     237    using InspectorObjectBase::getObject;
     238    using InspectorObjectBase::getArray;
     239    using InspectorObjectBase::get;
     240
     241    using InspectorObjectBase::remove;
     242
     243    using InspectorObjectBase::begin;
     244    using InspectorObjectBase::end;
     245
     246    using InspectorObjectBase::size;
     247};
     248
     249
     250class InspectorArrayBase : public InspectorValue {
    219251public:
    220252    typedef Vector<RefPtr<InspectorValue> >::iterator iterator;
    221253    typedef Vector<RefPtr<InspectorValue> >::const_iterator const_iterator;
    222254
    223     static PassRefPtr<InspectorArray> create()
    224     {
    225         return adoptRef(new InspectorArray());
    226     }
    227     ~InspectorArray();
     255    virtual PassRefPtr<InspectorArray> asArray();
     256
     257    unsigned length() const { return m_data.size(); }
     258
     259protected:
     260    ~InspectorArrayBase();
    228261
    229262    virtual bool asArray(RefPtr<InspectorArray>* output);
    230     virtual PassRefPtr<InspectorArray> asArray();
    231263
    232264    void pushBoolean(bool);
     
    237269    void pushObject(PassRefPtr<InspectorObject>);
    238270    void pushArray(PassRefPtr<InspectorArray>);
    239     unsigned length() const { return m_data.size(); }
    240271
    241272    PassRefPtr<InspectorValue> get(size_t index);
     
    249280
    250281protected:
    251     InspectorArray();
     282    InspectorArrayBase();
    252283
    253284private:
     
    255286};
    256287
    257 inline InspectorObject::iterator InspectorObject::find(const String& name)
     288class InspectorArray : public InspectorArrayBase {
     289public:
     290    static PassRefPtr<InspectorArray> create()
     291    {
     292        return adoptRef(new InspectorArray());
     293    }
     294
     295    using InspectorArrayBase::asArray;
     296
     297    using InspectorArrayBase::pushBoolean;
     298    using InspectorArrayBase::pushInt;
     299    using InspectorArrayBase::pushNumber;
     300    using InspectorArrayBase::pushString;
     301    using InspectorArrayBase::pushValue;
     302    using InspectorArrayBase::pushObject;
     303    using InspectorArrayBase::pushArray;
     304
     305    using InspectorArrayBase::get;
     306
     307    using InspectorArrayBase::begin;
     308    using InspectorArrayBase::end;
     309};
     310
     311
     312inline InspectorObjectBase::iterator InspectorObjectBase::find(const String& name)
    258313{
    259314    return m_data.find(name);
    260315}
    261316
    262 inline InspectorObject::const_iterator InspectorObject::find(const String& name) const
     317inline InspectorObjectBase::const_iterator InspectorObjectBase::find(const String& name) const
    263318{
    264319    return m_data.find(name);
    265320}
    266321
    267 inline void InspectorObject::setBoolean(const String& name, bool value)
     322inline void InspectorObjectBase::setBoolean(const String& name, bool value)
    268323{
    269324    setValue(name, InspectorBasicValue::create(value));
    270325}
    271326
    272 inline void InspectorObject::setNumber(const String& name, double value)
     327inline void InspectorObjectBase::setNumber(const String& name, double value)
    273328{
    274329    setValue(name, InspectorBasicValue::create(value));
    275330}
    276331
    277 inline void InspectorObject::setString(const String& name, const String& value)
     332inline void InspectorObjectBase::setString(const String& name, const String& value)
    278333{
    279334    setValue(name, InspectorString::create(value));
    280335}
    281336
    282 inline void InspectorObject::setValue(const String& name, PassRefPtr<InspectorValue> value)
     337inline void InspectorObjectBase::setValue(const String& name, PassRefPtr<InspectorValue> value)
    283338{
    284339    ASSERT(value);
     
    287342}
    288343
    289 inline void InspectorObject::setObject(const String& name, PassRefPtr<InspectorObject> value)
     344inline void InspectorObjectBase::setObject(const String& name, PassRefPtr<InspectorObject> value)
    290345{
    291346    ASSERT(value);
     
    294349}
    295350
    296 inline void InspectorObject::setArray(const String& name, PassRefPtr<InspectorArray> value)
     351inline void InspectorObjectBase::setArray(const String& name, PassRefPtr<InspectorArray> value)
    297352{
    298353    ASSERT(value);
     
    301356}
    302357
    303 inline void InspectorArray::pushBoolean(bool value)
     358inline void InspectorArrayBase::pushBoolean(bool value)
    304359{
    305360    m_data.append(InspectorBasicValue::create(value));
    306361}
    307362
    308 inline void InspectorArray::pushInt(int value)
     363inline void InspectorArrayBase::pushInt(int value)
    309364{
    310365    m_data.append(InspectorBasicValue::create(value));
    311366}
    312367
    313 inline void InspectorArray::pushNumber(double value)
     368inline void InspectorArrayBase::pushNumber(double value)
    314369{
    315370    m_data.append(InspectorBasicValue::create(value));
    316371}
    317372
    318 inline void InspectorArray::pushString(const String& value)
     373inline void InspectorArrayBase::pushString(const String& value)
    319374{
    320375    m_data.append(InspectorString::create(value));
    321376}
    322377
    323 inline void InspectorArray::pushValue(PassRefPtr<InspectorValue> value)
     378inline void InspectorArrayBase::pushValue(PassRefPtr<InspectorValue> value)
    324379{
    325380    ASSERT(value);
     
    327382}
    328383
    329 inline void InspectorArray::pushObject(PassRefPtr<InspectorObject> value)
     384inline void InspectorArrayBase::pushObject(PassRefPtr<InspectorObject> value)
    330385{
    331386    ASSERT(value);
     
    333388}
    334389
    335 inline void InspectorArray::pushArray(PassRefPtr<InspectorArray> value)
     390inline void InspectorArrayBase::pushArray(PassRefPtr<InspectorArray> value)
    336391{
    337392    ASSERT(value);
  • trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp

    r110854 r113783  
    5454        RefPtr<ScriptCallStack> stackTrace = createScriptCallStack(maxCallStackDepth, true);
    5555        if (stackTrace && stackTrace->size())
    56             record->setArray("stackTrace", stackTrace->buildInspectorArray());
     56            record->setValue("stackTrace", stackTrace->buildInspectorArray());
    5757    }
    5858    return record.release();
Note: See TracChangeset for help on using the changeset viewer.