⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 185722 in webkit


Ignore:
Timestamp:
Jun 18, 2015, 3:07:15 PM (11 years ago)
Author:
Joseph Pecoraro
Message:

Web Inspector: improve generated types for objects passed to backend commands
https://bugs.webkit.org/show_bug.cgi?id=146091

Patch by Brian J. Burg <Brian Burg> on 2015-06-18
Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

The main change is that objects passed in will have a type like const T& or const T*,
rather than const RefPtr<T>&&. These protocol objects are owned by the generated dispatcher
methods and only exist to pass data to backend command implementations. So, there is no
reason for callees to add a reference or take ownership of these inputs.

Some small improvements were made in the code generator to standardize how these
expressions are generated for parameters. Optional in parameters are now prefixed with
'opt_in_' to make the generated method signatures and implementations clearer.

  • inspector/InspectorValues.cpp:

(Inspector::InspectorArrayBase::get): Add const qualifier.

  • inspector/InspectorValues.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
(Inspector::parseLocation):
(Inspector::InspectorDebuggerAgent::setBreakpoint):
(Inspector::InspectorDebuggerAgent::continueToLocation):

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::saveResult):
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):

  • inspector/agents/InspectorRuntimeAgent.h:
  • inspector/scripts/codegen/cpp_generator.py: Always generate PrimitiveType('array').

(CppGenerator.cpp_type_for_unchecked_formal_in_parameter): Alter the type signature
for an unchecked input to use pointers or references.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:

(CppBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
(CppBackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
Local variables for optional parameters now have the 'opt_' prefix.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
Local variables for optional parameters now have the 'opt_' prefix.
Split parameterName and parameterKey into two separate template variables to avoid mixups.

  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:

Source/WebCore:

Update type signatures for backend command implementations. In a few cases, clean
up relevant helper function signatures and copy data out of parameter objects where
the code previously held onto a reference.

No new tests, no behavior changed.

  • inspector/InspectorCSSAgent.cpp:

(WebCore::computePseudoClassMask):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::forcePseudoState):

  • inspector/InspectorCSSAgent.h:
  • inspector/InspectorDOMAgent.cpp:

(WebCore::parseColor):
(WebCore::parseConfigColor):
(WebCore::parseQuad):
(WebCore::InspectorDOMAgent::performSearch):
(WebCore::InspectorDOMAgent::setSearchingForNode):
(WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
(WebCore::InspectorDOMAgent::setInspectModeEnabled):
(WebCore::InspectorDOMAgent::highlightRect):
(WebCore::InspectorDOMAgent::highlightQuad):
(WebCore::InspectorDOMAgent::innerHighlightQuad):
(WebCore::InspectorDOMAgent::highlightNode):
(WebCore::InspectorDOMAgent::highlightFrame):

  • inspector/InspectorDOMAgent.h:
  • inspector/InspectorDOMStorageAgent.cpp:

(WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
(WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::findStorageArea):

  • inspector/InspectorDOMStorageAgent.h:
  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::InspectorIndexedDBAgent::requestData):

  • inspector/InspectorIndexedDBAgent.h:
  • inspector/InspectorReplayAgent.cpp:

(WebCore::InspectorReplayAgent::replayToPosition):

  • inspector/InspectorReplayAgent.h:
  • inspector/InspectorResourceAgent.cpp:

(WebCore::InspectorResourceAgent::willSendRequest):
(WebCore::InspectorResourceAgent::setExtraHTTPHeaders):
Clean up extraHTTPHeaders to copy header key/values out of the InspectorObject, rather
than retaining the protocol object indefinitely. This matches the ownership scheme used
everywhere else.

  • inspector/InspectorResourceAgent.h:
  • inspector/InspectorStyleSheet.h:

(WebCore::InspectorCSSId::InspectorCSSId):

  • inspector/InspectorWorkerAgent.cpp:

(WebCore::InspectorWorkerAgent::sendMessageToWorker):

  • inspector/InspectorWorkerAgent.h:
Location:
trunk/Source
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r185715 r185722  
     12015-06-18  Brian J. Burg  <burg@cs.washington.edu>
     2
     3        Web Inspector: improve generated types for objects passed to backend commands
     4        https://bugs.webkit.org/show_bug.cgi?id=146091
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        The main change is that objects passed in will have a type like const T& or const T*,
     9        rather than const RefPtr<T>&&. These protocol objects are owned by the generated dispatcher
     10        methods and only exist to pass data to backend command implementations. So, there is no
     11        reason for callees to add a reference or take ownership of these inputs.
     12
     13        Some small improvements were made in the code generator to standardize how these
     14        expressions are generated for parameters. Optional in parameters are now prefixed with
     15        'opt_in_' to make the generated method signatures and implementations clearer.
     16
     17        * inspector/InspectorValues.cpp:
     18        (Inspector::InspectorArrayBase::get): Add const qualifier.
     19        * inspector/InspectorValues.h:
     20        * inspector/agents/InspectorDebuggerAgent.cpp:
     21        (Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
     22        (Inspector::parseLocation):
     23        (Inspector::InspectorDebuggerAgent::setBreakpoint):
     24        (Inspector::InspectorDebuggerAgent::continueToLocation):
     25        * inspector/agents/InspectorDebuggerAgent.h:
     26        * inspector/agents/InspectorRuntimeAgent.cpp:
     27        (Inspector::InspectorRuntimeAgent::callFunctionOn):
     28        (Inspector::InspectorRuntimeAgent::saveResult):
     29        (Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
     30        * inspector/agents/InspectorRuntimeAgent.h:
     31
     32        * inspector/scripts/codegen/cpp_generator.py: Always generate PrimitiveType('array').
     33        (CppGenerator.cpp_type_for_unchecked_formal_in_parameter): Alter the type signature
     34        for an unchecked input to use pointers or references.
     35
     36        * inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
     37        (CppBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
     38        (CppBackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
     39        Local variables for optional parameters now have the 'opt_' prefix.
     40
     41        * inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
     42        (CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain):
     43        (CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
     44        Local variables for optional parameters now have the 'opt_' prefix.
     45        Split parameterName and parameterKey into two separate template variables to avoid mixups.
     46
     47        * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
     48
    1492015-06-18  Joseph Pecoraro  <pecoraro@apple.com>
    250
  • trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp

    r179599 r185722  
    840840}
    841841
    842 RefPtr<InspectorValue> InspectorArrayBase::get(size_t index)
     842RefPtr<InspectorValue> InspectorArrayBase::get(size_t index) const
    843843{
    844844    ASSERT_WITH_SECURITY_IMPLICATION(index < m_data.size());
  • trunk/Source/JavaScriptCore/inspector/InspectorValues.h

    r178060 r185722  
    280280    void pushArray(RefPtr<InspectorArrayBase>&&);
    281281
    282     RefPtr<InspectorValue> get(size_t index);
     282    RefPtr<InspectorValue> get(size_t index) const;
    283283
    284284    virtual void writeJSON(StringBuilder& output) const override;
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp

    r181722 r185722  
    276276}
    277277
    278 void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString& errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const RefPtr<InspectorObject>&& options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Debugger::Location>>& locations)
     278void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString& errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Debugger::Location>>& locations)
    279279{
    280280    locations = Inspector::Protocol::Array<Inspector::Protocol::Debugger::Location>::create();
     
    322322}
    323323
    324 static bool parseLocation(ErrorString& errorString, InspectorObject& location, JSC::SourceID& sourceID, unsigned& lineNumber, unsigned& columnNumber)
     324static bool parseLocation(ErrorString& errorString, const InspectorObject& location, JSC::SourceID& sourceID, unsigned& lineNumber, unsigned& columnNumber)
    325325{
    326326    String scriptIDStr;
     
    337337}
    338338
    339 void InspectorDebuggerAgent::setBreakpoint(ErrorString& errorString, const RefPtr<InspectorObject>&& location, const RefPtr<InspectorObject>&& options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr<Inspector::Protocol::Debugger::Location>& actualLocation)
     339void InspectorDebuggerAgent::setBreakpoint(ErrorString& errorString, const InspectorObject& location, const InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr<Inspector::Protocol::Debugger::Location>& actualLocation)
    340340{
    341341    JSC::SourceID sourceID;
    342342    unsigned lineNumber;
    343343    unsigned columnNumber;
    344     if (!parseLocation(errorString, *location, sourceID, lineNumber, columnNumber))
     344    if (!parseLocation(errorString, location, sourceID, lineNumber, columnNumber))
    345345        return;
    346346
     
    389389}
    390390
    391 void InspectorDebuggerAgent::continueToLocation(ErrorString& errorString, const RefPtr<InspectorObject>&& location)
     391void InspectorDebuggerAgent::continueToLocation(ErrorString& errorString, const InspectorObject& location)
    392392{
    393393    if (m_continueToLocationBreakpointID != JSC::noBreakpointID) {
     
    399399    unsigned lineNumber;
    400400    unsigned columnNumber;
    401     if (!parseLocation(errorString, *location, sourceID, lineNumber, columnNumber))
     401    if (!parseLocation(errorString, location, sourceID, lineNumber, columnNumber))
    402402        return;
    403403
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h

    r180715 r185722  
    7272    virtual void disable(ErrorString&) override;
    7373    virtual void setBreakpointsActive(ErrorString&, bool active) override;
    74     virtual void setBreakpointByUrl(ErrorString&, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const RefPtr<Inspector::InspectorObject>&& options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Debugger::Location>>& locations) override;
    75     virtual void setBreakpoint(ErrorString&, const RefPtr<Inspector::InspectorObject>&& location, const RefPtr<Inspector::InspectorObject>&& options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr<Inspector::Protocol::Debugger::Location>& actualLocation) override;
     74    virtual void setBreakpointByUrl(ErrorString&, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Debugger::Location>>& locations) override;
     75    virtual void setBreakpoint(ErrorString&, const Inspector::InspectorObject& location, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr<Inspector::Protocol::Debugger::Location>& actualLocation) override;
    7676    virtual void removeBreakpoint(ErrorString&, const String& breakpointIdentifier) override;
    77     virtual void continueToLocation(ErrorString&, const RefPtr<InspectorObject>&& location) override;
     77    virtual void continueToLocation(ErrorString&, const InspectorObject& location) override;
    7878    virtual void searchInContent(ErrorString&, const String& scriptID, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::GenericTypes::SearchMatch>>&) override;
    7979    virtual void getScriptSource(ErrorString&, const String& scriptID, String* scriptSource) override;
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp

    r185379 r185722  
    135135}
    136136
    137 void InspectorRuntimeAgent::callFunctionOn(ErrorString& errorString, const String& objectId, const String& expression, const RefPtr<InspectorArray>&& optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown)
     137void InspectorRuntimeAgent::callFunctionOn(ErrorString& errorString, const String& objectId, const String& expression, const InspectorArray* optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown)
    138138{
    139139    InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId);
     
    211211}
    212212
    213 void InspectorRuntimeAgent::saveResult(ErrorString& errorString, const RefPtr<Inspector::InspectorObject>&& callArgument, const int* executionContextId, Inspector::Protocol::OptOutput<int>* savedResultIndex)
     213void InspectorRuntimeAgent::saveResult(ErrorString& errorString, const Inspector::InspectorObject& callArgument, const int* executionContextId, Inspector::Protocol::OptOutput<int>* savedResultIndex)
    214214{
    215215    InjectedScript injectedScript;
    216216
    217217    String objectId;
    218     if (callArgument->getString(ASCIILiteral("objectId"), objectId)) {
     218    if (callArgument.getString(ASCIILiteral("objectId"), objectId)) {
    219219        injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId);
    220220        if (injectedScript.hasNoValue()) {
     
    228228    }
    229229
    230     injectedScript.saveResult(errorString, callArgument->toJSONString(), savedResultIndex);
     230    injectedScript.saveResult(errorString, callArgument.toJSONString(), savedResultIndex);
    231231}
    232232
     
    248248}
    249249
    250 void InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets(ErrorString& errorString, const RefPtr<Inspector::InspectorArray>&& locations, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::TypeDescription>>& typeDescriptions)
     250void InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets(ErrorString& errorString, const Inspector::InspectorArray& locations, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::TypeDescription>>& typeDescriptions)
    251251{
    252252    static const bool verbose = false;
     
    261261    vm.typeProfilerLog()->processLogEntries(ASCIILiteral("User Query"));
    262262
    263     for (size_t i = 0; i < locations->length(); i++) {
    264         RefPtr<Inspector::InspectorValue> value = locations->get(i);
     263    for (size_t i = 0; i < locations.length(); i++) {
     264        RefPtr<Inspector::InspectorValue> value = locations.get(i);
    265265        RefPtr<InspectorObject> location;
    266266        if (!value->asObject(location)) {
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h

    r180913 r185722  
    6262    virtual void parse(ErrorString&, const String& expression, Inspector::Protocol::Runtime::SyntaxErrorType* result, Inspector::Protocol::OptOutput<String>* message, RefPtr<Inspector::Protocol::Runtime::ErrorRange>&) override final;
    6363    virtual void evaluate(ErrorString&, const String& expression, const String* objectGroup, const bool* includeCommandLineAPI, const bool* doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* returnByValue, const bool* generatePreview, const bool* saveResult, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown, Inspector::Protocol::OptOutput<int>* savedResultIndex) override final;
    64     virtual void callFunctionOn(ErrorString&, const String& objectId, const String& expression, const RefPtr<Inspector::InspectorArray>&& optionalArguments, const bool* doNotPauseOnExceptionsAndMuteConsole, const bool* returnByValue, const bool* generatePreview, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown) override final;
     64    virtual void callFunctionOn(ErrorString&, const String& objectId, const String& expression, const Inspector::InspectorArray* optionalArguments, const bool* doNotPauseOnExceptionsAndMuteConsole, const bool* returnByValue, const bool* generatePreview, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result, Inspector::Protocol::OptOutput<bool>* wasThrown) override final;
    6565    virtual void releaseObject(ErrorString&, const ErrorString& objectId) override final;
    6666    virtual void getProperties(ErrorString&, const String& objectId, const bool* ownProperties, const bool* generatePreview, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::PropertyDescriptor>>& result, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::InternalPropertyDescriptor>>& internalProperties) override final;
    6767    virtual void getDisplayableProperties(ErrorString&, const String& objectId, const bool* generatePreview, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::PropertyDescriptor>>& result, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::InternalPropertyDescriptor>>& internalProperties) override final;
    6868    virtual void getCollectionEntries(ErrorString&, const String& objectId, const String* objectGroup, const int* startIndex, const int* numberToFetch, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::CollectionEntry>>& entries) override final;
    69     virtual void saveResult(ErrorString&, const RefPtr<Inspector::InspectorObject>&& callArgument, const int* executionContextId, Inspector::Protocol::OptOutput<int>* savedResultIndex) override final;
     69    virtual void saveResult(ErrorString&, const Inspector::InspectorObject& callArgument, const int* executionContextId, Inspector::Protocol::OptOutput<int>* savedResultIndex) override final;
    7070    virtual void releaseObjectGroup(ErrorString&, const String& objectGroup) override final;
    7171    virtual void run(ErrorString&) override;
    72     virtual void getRuntimeTypesForVariablesAtOffsets(ErrorString&, const RefPtr<Inspector::InspectorArray>&& locations, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::TypeDescription>>&) override;
     72    virtual void getRuntimeTypesForVariablesAtOffsets(ErrorString&, const Inspector::InspectorArray& locations, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Runtime::TypeDescription>>&) override;
    7373    virtual void enableTypeProfiler(ErrorString&) override;
    7474    virtual void disableTypeProfiler(ErrorString&) override;
  • trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py

    r180116 r185722  
    4040    'string': 'String',
    4141    'object': 'Inspector::InspectorObject',
     42    'array': 'Inspector::InspectorArray',
    4243    'any': 'Inspector::InspectorValue'
    4344}
     
    120121        # This handles the 'any' type and objects with defined properties.
    121122        if isinstance(_type, ObjectType) or _type.qualified_name() is 'object':
    122             return 'const RefPtr<Inspector::InspectorObject>&&'
    123         if isinstance(_type, ArrayType):
    124             return 'const RefPtr<Inspector::InspectorArray>&&'
     123            cpp_name = 'Inspector::InspectorObject'
     124            if parameter.is_optional:
     125                return 'const %s*' % cpp_name
     126            else:
     127                return 'const %s&' % cpp_name
     128        if isinstance(_type, ArrayType):
     129            cpp_name = 'Inspector::InspectorArray'
     130            if parameter.is_optional:
     131                return 'const %s*' % cpp_name
     132            else:
     133                return 'const %s&' % cpp_name
    125134        if isinstance(_type, PrimitiveType):
    126135            cpp_name = CppGenerator.cpp_name_for_primitive_type(_type)
  • trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py

    r180116 r185722  
    128128        parameters = ['ErrorString&']
    129129        for _parameter in command.call_parameters:
    130             parameters.append("%s in_%s" % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
     130            parameter_name = 'in_' + _parameter.parameter_name
     131            if _parameter.is_optional:
     132                parameter_name = 'opt_' + parameter_name
     133
     134            parameters.append("%s %s" % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), parameter_name))
    131135
    132136            if isinstance(_parameter.type, EnumType) and _parameter.parameter_name not in used_enum_names:
     
    156160        in_parameters = ['ErrorString&']
    157161        for _parameter in command.call_parameters:
    158             in_parameters.append("%s in_%s" % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
     162            parameter_name = 'in_' + _parameter.parameter_name
     163            if _parameter.is_optional:
     164                parameter_name = 'opt_' + parameter_name
     165
     166            in_parameters.append("%s %s" % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), parameter_name))
    159167        in_parameters.append("Ref<%s>&& callback" % callbackName)
    160168
  • trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py

    r180116 r185722  
    140140            param_args = {
    141141                'keyedSetMethod': CppGenerator.cpp_setter_method_for_type(parameter.type),
     142                'parameterKey': parameter.parameter_name,
    142143                'parameterName': parameter.parameter_name,
    143144                'parameterType': CppGenerator.cpp_type_for_stack_in_parameter(parameter),
     
    149150                if CppGenerator.should_use_wrapper_for_return_type(parameter.type):
    150151                    out_parameter_assignments.append('    if (%(parameterName)s.isAssigned())' % param_args)
    151                     out_parameter_assignments.append('        jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), %(parameterName)s.getValue());' % param_args)
     152                    out_parameter_assignments.append('        jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), %(parameterName)s.getValue());' % param_args)
    152153                else:
    153154                    out_parameter_assignments.append('    if (%(parameterName)s)' % param_args)
    154                     out_parameter_assignments.append('        jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), %(parameterName)s);' % param_args)
     155                    out_parameter_assignments.append('        jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), %(parameterName)s);' % param_args)
    155156            elif parameter.type.is_enum():
    156                 out_parameter_assignments.append('    jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), Inspector::Protocol::getEnumConstantValue(%(parameterName)s));' % param_args)
     157                out_parameter_assignments.append('    jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), Inspector::Protocol::getEnumConstantValue(%(parameterName)s));' % param_args)
    157158            else:
    158                 out_parameter_assignments.append('    jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), %(parameterName)s);' % param_args)
     159                out_parameter_assignments.append('    jsonMessage->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), %(parameterName)s);' % param_args)
    159160
    160161        async_args = {
     
    174175
    175176        for parameter in command.call_parameters:
     177            parameter_name = 'in_' + parameter.parameter_name
     178            if parameter.is_optional:
     179                parameter_name = 'opt_' + parameter_name
     180
    176181            out_success_argument = 'nullptr'
    177182            if parameter.is_optional:
    178                 out_success_argument = '&%s_valueFound' % parameter.parameter_name
    179                 in_parameter_declarations.append('    bool %s_valueFound = false;' % parameter.parameter_name)
    180 
    181             parameter_expression = 'in_' + parameter.parameter_name
     183                out_success_argument = '&%s_valueFound' % parameter_name
     184                in_parameter_declarations.append('    bool %s_valueFound = false;' % parameter_name)
     185
     186            # Now add appropriate operators.
     187            parameter_expression = parameter_name
     188
    182189            if CppGenerator.should_use_references_for_type(parameter.type):
    183                 parameter_expression = '%s.copyRef()' % parameter_expression
     190                if parameter.is_optional:
     191                    parameter_expression = '%s.get()' % parameter_expression
     192                else:
     193                    # This assumes that we have already proved the object is non-null.
     194                    # If a required property is missing, InspectorBackend::getObject will
     195                    # append a protocol error, and the method dispatcher will return without
     196                    # invoking the backend method (and dereferencing the object).
     197                    parameter_expression = '*%s' % parameter_expression
    184198            elif parameter.is_optional:
    185199                parameter_expression = '&%s' % parameter_expression
     
    187201            param_args = {
    188202                'parameterType': CppGenerator.cpp_type_for_stack_in_parameter(parameter),
    189                 'parameterName': parameter.parameter_name,
     203                'parameterKey': parameter.parameter_name,
     204                'parameterName': parameter_name,
    190205                'parameterExpression': parameter_expression,
    191206                'keyedGetMethod': CppGenerator.cpp_getter_method_for_type(parameter.type),
     
    193208            }
    194209
    195             in_parameter_declarations.append('    %(parameterType)s in_%(parameterName)s = BackendDispatcher::%(keyedGetMethod)s(paramsContainer.get(), ASCIILiteral("%(parameterName)s"), %(successOutParam)s, protocolErrors.get());' % param_args)
     210            in_parameter_declarations.append('    %(parameterType)s %(parameterName)s = BackendDispatcher::%(keyedGetMethod)s(paramsContainer.get(), ASCIILiteral("%(parameterKey)s"), %(successOutParam)s, protocolErrors.get());' % param_args)
    196211
    197212            if parameter.is_optional:
     
    218233                param_args = {
    219234                    'parameterType': CppGenerator.cpp_type_for_stack_out_parameter(parameter),
     235                    'parameterKey': parameter.parameter_name,
    220236                    'parameterName': parameter.parameter_name,
    221237                    'keyedSetMethod': CppGenerator.cpp_setter_method_for_type(parameter.type),
     
    227243                    if CppGenerator.should_use_wrapper_for_return_type(parameter.type):
    228244                        out_parameter_assignments.append('        if (out_%(parameterName)s.isAssigned())' % param_args)
    229                         out_parameter_assignments.append('            result->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), out_%(parameterName)s.getValue());' % param_args)
     245                        out_parameter_assignments.append('            result->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), out_%(parameterName)s.getValue());' % param_args)
    230246                    else:
    231247                        out_parameter_assignments.append('        if (out_%(parameterName)s)' % param_args)
    232                         out_parameter_assignments.append('            result->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), out_%(parameterName)s);' % param_args)
     248                        out_parameter_assignments.append('            result->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), out_%(parameterName)s);' % param_args)
    233249                elif parameter.type.is_enum():
    234                     out_parameter_assignments.append('        result->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), Inspector::Protocol::getEnumConstantValue(out_%(parameterName)s));' % param_args)
     250                    out_parameter_assignments.append('        result->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), Inspector::Protocol::getEnumConstantValue(out_%(parameterName)s));' % param_args)
    235251                else:
    236                     out_parameter_assignments.append('        result->%(keyedSetMethod)s(ASCIILiteral("%(parameterName)s"), out_%(parameterName)s);' % param_args)
     252                    out_parameter_assignments.append('        result->%(keyedSetMethod)s(ASCIILiteral("%(parameterKey)s"), out_%(parameterName)s);' % param_args)
    237253
    238254                if CppGenerator.should_pass_by_copy_for_return_type(parameter.type):
  • trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py

    r178127 r185722  
    159159                _type = _type.primitive_type  # Fall through to primitive.
    160160            if isinstance(_type, PrimitiveType):
     161                if _type.raw_name() in ['array', 'any', 'object']:
     162                    return '&%s' % param_name if not parameter.is_optional else param_name
    161163                return '*%s' % param_name if parameter.is_optional else param_name
    162             return '%s.copyRef()' % param_name
     164            return '&%s' % param_name if not parameter.is_optional else param_name
    163165
    164166        for parameter in command.call_parameters:
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result

    r184291 r185722  
    5252public:
    5353    virtual ~AlternateDatabaseBackendDispatcher() { }
    54     virtual void executeAllOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String* in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String* in_printColor) = 0;
    55     virtual void executeNoOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String& in_notes, double in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String& in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String& in_printColor) = 0;
     54    virtual void executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) = 0;
     55    virtual void executeNoOptionalParameters(long callId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor) = 0;
    5656};
    5757
     
    162162        Black = 6,
    163163    }; // enum class PrintColor
    164     virtual void executeAllOptionalParameters(ErrorString&, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String* in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String* in_printColor, RefPtr<Inspector::Protocol::Array<String>>& opt_out_columnNames, Inspector::Protocol::OptOutput<String>* opt_out_notes, Inspector::Protocol::OptOutput<double>* opt_out_timestamp, Inspector::Protocol::OptOutput<Inspector::InspectorObject>* opt_out_values, Inspector::Protocol::OptOutput<Inspector::InspectorValue>* opt_out_payload, Inspector::Protocol::OptOutput<int>* opt_out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& opt_out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
    165     virtual void executeNoOptionalParameters(ErrorString&, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String& in_notes, double in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String& in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String& in_printColor, RefPtr<Inspector::Protocol::Array<String>>& out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
     164    virtual void executeAllOptionalParameters(ErrorString&, const Inspector::InspectorArray* opt_in_columnNames, const String* opt_in_notes, const double* opt_in_timestamp, const Inspector::InspectorObject* opt_in_values, const Inspector::InspectorValue* opt_in_payload, const int* opt_in_databaseId, const Inspector::InspectorObject* opt_in_sqlError, const String* opt_in_screenColor, const Inspector::InspectorArray* opt_in_alternateColors, const String* opt_in_printColor, RefPtr<Inspector::Protocol::Array<String>>& opt_out_columnNames, Inspector::Protocol::OptOutput<String>* opt_out_notes, Inspector::Protocol::OptOutput<double>* opt_out_timestamp, Inspector::Protocol::OptOutput<Inspector::InspectorObject>* opt_out_values, Inspector::Protocol::OptOutput<Inspector::InspectorValue>* opt_out_payload, Inspector::Protocol::OptOutput<int>* opt_out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& opt_out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
     165    virtual void executeNoOptionalParameters(ErrorString&, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor, RefPtr<Inspector::Protocol::Array<String>>& out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr<Inspector::Protocol::Database::Error>& out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, RefPtr<Inspector::Protocol::Database::ColorList>& out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
    166166protected:
    167167    virtual ~DatabaseBackendDispatcherHandler();
     
    269269    RefPtr<InspectorObject> paramsContainer;
    270270    message.getObject(ASCIILiteral("params"), paramsContainer);
    271     bool columnNames_valueFound = false;
    272     RefPtr<Inspector::InspectorArray> in_columnNames = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral("columnNames"), &columnNames_valueFound, protocolErrors.get());
    273     bool notes_valueFound = false;
    274     String in_notes = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("notes"), &notes_valueFound, protocolErrors.get());
    275     bool timestamp_valueFound = false;
    276     Inspector::Protocol::OptOutput<double> in_timestamp = BackendDispatcher::getDouble(paramsContainer.get(), ASCIILiteral("timestamp"), &timestamp_valueFound, protocolErrors.get());
    277     bool values_valueFound = false;
    278     RefPtr<Inspector::InspectorObject> in_values = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral("values"), &values_valueFound, protocolErrors.get());
    279     bool payload_valueFound = false;
    280     RefPtr<Inspector::InspectorValue> in_payload = BackendDispatcher::getValue(paramsContainer.get(), ASCIILiteral("payload"), &payload_valueFound, protocolErrors.get());
    281     bool databaseId_valueFound = false;
    282     int in_databaseId = BackendDispatcher::getInteger(paramsContainer.get(), ASCIILiteral("databaseId"), &databaseId_valueFound, protocolErrors.get());
    283     bool sqlError_valueFound = false;
    284     RefPtr<Inspector::InspectorObject> in_sqlError = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral("sqlError"), &sqlError_valueFound, protocolErrors.get());
    285     bool screenColor_valueFound = false;
    286     String in_screenColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("screenColor"), &screenColor_valueFound, protocolErrors.get());
    287     bool alternateColors_valueFound = false;
    288     RefPtr<Inspector::InspectorArray> in_alternateColors = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral("alternateColors"), &alternateColors_valueFound, protocolErrors.get());
    289     bool printColor_valueFound = false;
    290     String in_printColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("printColor"), &printColor_valueFound, protocolErrors.get());
     271    bool opt_in_columnNames_valueFound = false;
     272    RefPtr<Inspector::InspectorArray> opt_in_columnNames = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral("columnNames"), &opt_in_columnNames_valueFound, protocolErrors.get());
     273    bool opt_in_notes_valueFound = false;
     274    String opt_in_notes = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("notes"), &opt_in_notes_valueFound, protocolErrors.get());
     275    bool opt_in_timestamp_valueFound = false;
     276    Inspector::Protocol::OptOutput<double> opt_in_timestamp = BackendDispatcher::getDouble(paramsContainer.get(), ASCIILiteral("timestamp"), &opt_in_timestamp_valueFound, protocolErrors.get());
     277    bool opt_in_values_valueFound = false;
     278    RefPtr<Inspector::InspectorObject> opt_in_values = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral("values"), &opt_in_values_valueFound, protocolErrors.get());
     279    bool opt_in_payload_valueFound = false;
     280    RefPtr<Inspector::InspectorValue> opt_in_payload = BackendDispatcher::getValue(paramsContainer.get(), ASCIILiteral("payload"), &opt_in_payload_valueFound, protocolErrors.get());
     281    bool opt_in_databaseId_valueFound = false;
     282    int opt_in_databaseId = BackendDispatcher::getInteger(paramsContainer.get(), ASCIILiteral("databaseId"), &opt_in_databaseId_valueFound, protocolErrors.get());
     283    bool opt_in_sqlError_valueFound = false;
     284    RefPtr<Inspector::InspectorObject> opt_in_sqlError = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral("sqlError"), &opt_in_sqlError_valueFound, protocolErrors.get());
     285    bool opt_in_screenColor_valueFound = false;
     286    String opt_in_screenColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("screenColor"), &opt_in_screenColor_valueFound, protocolErrors.get());
     287    bool opt_in_alternateColors_valueFound = false;
     288    RefPtr<Inspector::InspectorArray> opt_in_alternateColors = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral("alternateColors"), &opt_in_alternateColors_valueFound, protocolErrors.get());
     289    bool opt_in_printColor_valueFound = false;
     290    String opt_in_printColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral("printColor"), &opt_in_printColor_valueFound, protocolErrors.get());
    291291    if (protocolErrors->length()) {
    292292        String errorMessage = String::format("Some arguments of method '%s' can't be processed", "Database.executeAllOptionalParameters");
     
    297297#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
    298298    if (m_alternateDispatcher) {
    299         m_alternateDispatcher->executeAllOptionalParameters(callId, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &in_notes : nullptr, timestamp_valueFound ? &in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &in_screenColor : nullptr, alternateColors_valueFound ? in_alternateColors.copyRef() : nullptr, printColor_valueFound ? &in_printColor : nullptr);
     299        m_alternateDispatcher->executeAllOptionalParameters(callId, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &opt_in_printColor : nullptr);
    300300        return;
    301301    }
     
    314314    RefPtr<Inspector::Protocol::Database::ColorList> out_alternateColors;
    315315    DatabaseBackendDispatcherHandler::PrintColor out_printColor;
    316     m_agent->executeAllOptionalParameters(error, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &in_notes : nullptr, timestamp_valueFound ? &in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &in_screenColor : nullptr, alternateColors_valueFound ? in_alternateColors.copyRef() : nullptr, printColor_valueFound ? &in_printColor : nullptr, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
     316    m_agent->executeAllOptionalParameters(error, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &opt_in_printColor : nullptr, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
    317317
    318318    if (!error.length()) {
     
    364364#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
    365365    if (m_alternateDispatcher) {
    366         m_alternateDispatcher->executeNoOptionalParameters(callId, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_alternateColors.copyRef(), in_printColor);
     366        m_alternateDispatcher->executeNoOptionalParameters(callId, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, in_printColor);
    367367        return;
    368368    }
     
    381381    RefPtr<Inspector::Protocol::Database::ColorList> out_alternateColors;
    382382    DatabaseBackendDispatcherHandler::PrintColor out_printColor;
    383     m_agent->executeNoOptionalParameters(error, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_alternateColors.copyRef(), in_printColor, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
     383    m_agent->executeNoOptionalParameters(error, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, in_printColor, out_columnNames, &out_notes, &out_timestamp, out_values, &out_payload, &out_databaseId, out_sqlError, &out_screenColor, out_alternateColors, &out_printColor);
    384384
    385385    if (!error.length()) {
     
    745745public:
    746746    ObjCInspectorDatabaseBackendDispatcher(id<RWIProtocolDatabaseDomainHandler> handler) { m_delegate = handler; }
    747     virtual void executeAllOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String* in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String* in_printColor) override;
    748     virtual void executeNoOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String& in_notes, double in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String& in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String& in_printColor) override;
     747    virtual void executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) override;
     748    virtual void executeNoOptionalParameters(long callId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor) override;
    749749private:
    750750    RetainPtr<id<RWIProtocolDatabaseDomainHandler>> m_delegate;
     
    925925namespace Inspector {
    926926
    927 void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String* in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String* in_printColor)
     927void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor)
    928928{
    929929    id errorCallback = ^(NSString *error) {
     
    964964    NSArray/*<NSString>*/ *o_in_columnNames;
    965965    if (in_columnNames)
    966         o_in_columnNames = objcStringArray(in_columnNames.copyRef());
     966        o_in_columnNames = objcStringArray(in_columnNames);
    967967    NSString *o_in_notes;
    968968    if (in_notes)
     
    973973    RWIProtocolJSONObject *o_in_values;
    974974    if (in_values)
    975         o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:*in_values] autorelease];
     975        o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_values] autorelease];
    976976    RWIProtocolJSONObject *o_in_payload;
    977977    if (in_payload)
    978         o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:*in_payload] autorelease];
     978        o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_payload] autorelease];
    979979    int o_in_databaseId;
    980980    if (in_databaseId)
     
    982982    RWIProtocolDatabaseError *o_in_sqlError;
    983983    if (in_sqlError)
    984         o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError.copyRef()] autorelease];
     984        o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError] autorelease];
    985985    RWIProtocolDatabasePrimaryColors o_in_screenColor;
    986986    if (in_screenColor)
     
    988988    NSArray/*<NSString>*/ *o_in_alternateColors;
    989989    if (in_alternateColors)
    990         o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
     990        o_in_alternateColors = objcStringArray(in_alternateColors);
    991991    RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor o_in_printColor;
    992992    if (in_printColor)
     
    996996}
    997997
    998 void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long callId, const RefPtr<Inspector::InspectorArray>&& in_columnNames, const String& in_notes, double in_timestamp, const RefPtr<Inspector::InspectorObject>&& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr<Inspector::InspectorObject>&& in_sqlError, const String& in_screenColor, const RefPtr<Inspector::InspectorArray>&& in_alternateColors, const String& in_printColor)
     998void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long callId, const Inspector::InspectorArray& in_columnNames, const String& in_notes, double in_timestamp, const Inspector::InspectorObject& in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject& in_sqlError, const String& in_screenColor, const Inspector::InspectorArray& in_alternateColors, const String& in_printColor)
    999999{
    10001000    id errorCallback = ^(NSString *error) {
     
    10231023    };
    10241024
    1025     NSArray/*<NSString>*/ *o_in_columnNames = objcStringArray(in_columnNames.copyRef());
     1025    NSArray/*<NSString>*/ *o_in_columnNames = objcStringArray(&in_columnNames);
    10261026    NSString *o_in_notes = in_notes;
    10271027    double o_in_timestamp = in_timestamp;
    1028     RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_values] autorelease];
    1029     RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_payload] autorelease];
     1028    RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&in_values] autorelease];
     1029    RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&in_payload] autorelease];
    10301030    int o_in_databaseId = in_databaseId;
    1031     RWIProtocolDatabaseError *o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError.copyRef()] autorelease];
     1031    RWIProtocolDatabaseError *o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:&in_sqlError] autorelease];
    10321032    RWIProtocolDatabasePrimaryColors o_in_screenColor = fromProtocolString<RWIProtocolDatabasePrimaryColors>(in_screenColor);
    1033     NSArray/*<NSString>*/ *o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
     1033    NSArray/*<NSString>*/ *o_in_alternateColors = objcStringArray(&in_alternateColors);
    10341034    RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString<RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor>(in_printColor);
    10351035
  • trunk/Source/WebCore/ChangeLog

    r185721 r185722  
     12015-06-18  Brian J. Burg  <burg@cs.washington.edu>
     2
     3        Web Inspector: improve generated types for objects passed to backend commands
     4        https://bugs.webkit.org/show_bug.cgi?id=146091
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        Update type signatures for backend command implementations. In a few cases, clean
     9        up relevant helper function signatures and copy data out of parameter objects where
     10        the code previously held onto a reference.
     11
     12        No new tests, no behavior changed.
     13
     14        * inspector/InspectorCSSAgent.cpp:
     15        (WebCore::computePseudoClassMask):
     16        (WebCore::InspectorCSSAgent::setStyleText):
     17        (WebCore::InspectorCSSAgent::setRuleSelector):
     18        (WebCore::InspectorCSSAgent::forcePseudoState):
     19        * inspector/InspectorCSSAgent.h:
     20        * inspector/InspectorDOMAgent.cpp:
     21        (WebCore::parseColor):
     22        (WebCore::parseConfigColor):
     23        (WebCore::parseQuad):
     24        (WebCore::InspectorDOMAgent::performSearch):
     25        (WebCore::InspectorDOMAgent::setSearchingForNode):
     26        (WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
     27        (WebCore::InspectorDOMAgent::setInspectModeEnabled):
     28        (WebCore::InspectorDOMAgent::highlightRect):
     29        (WebCore::InspectorDOMAgent::highlightQuad):
     30        (WebCore::InspectorDOMAgent::innerHighlightQuad):
     31        (WebCore::InspectorDOMAgent::highlightNode):
     32        (WebCore::InspectorDOMAgent::highlightFrame):
     33        * inspector/InspectorDOMAgent.h:
     34        * inspector/InspectorDOMStorageAgent.cpp:
     35        (WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
     36        (WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
     37        (WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
     38        (WebCore::InspectorDOMStorageAgent::findStorageArea):
     39        * inspector/InspectorDOMStorageAgent.h:
     40        * inspector/InspectorIndexedDBAgent.cpp:
     41        (WebCore::InspectorIndexedDBAgent::requestData):
     42        * inspector/InspectorIndexedDBAgent.h:
     43        * inspector/InspectorReplayAgent.cpp:
     44        (WebCore::InspectorReplayAgent::replayToPosition):
     45        * inspector/InspectorReplayAgent.h:
     46        * inspector/InspectorResourceAgent.cpp:
     47        (WebCore::InspectorResourceAgent::willSendRequest):
     48        (WebCore::InspectorResourceAgent::setExtraHTTPHeaders):
     49        Clean up extraHTTPHeaders to copy header key/values out of the InspectorObject, rather
     50        than retaining the protocol object indefinitely. This matches the ownership scheme used
     51        everywhere else.
     52
     53        * inspector/InspectorResourceAgent.h:
     54        * inspector/InspectorStyleSheet.h:
     55        (WebCore::InspectorCSSId::InspectorCSSId):
     56        * inspector/InspectorWorkerAgent.cpp:
     57        (WebCore::InspectorWorkerAgent::sendMessageToWorker):
     58        * inspector/InspectorWorkerAgent.h:
     59
    1602015-06-18  Anders Carlsson  <andersca@apple.com>
    261
  • trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp

    r180116 r185722  
    7373};
    7474
    75 static unsigned computePseudoClassMask(InspectorArray* pseudoClassArray)
     75static unsigned computePseudoClassMask(const InspectorArray& pseudoClassArray)
    7676{
    7777    DEPRECATED_DEFINE_STATIC_LOCAL(String, active, (ASCIILiteral("active")));
     
    7979    DEPRECATED_DEFINE_STATIC_LOCAL(String, focus, (ASCIILiteral("focus")));
    8080    DEPRECATED_DEFINE_STATIC_LOCAL(String, visited, (ASCIILiteral("visited")));
    81     if (!pseudoClassArray || !pseudoClassArray->length())
     81    if (!pseudoClassArray.length())
    8282        return PseudoClassNone;
    8383
    8484    unsigned result = PseudoClassNone;
    85     for (size_t i = 0; i < pseudoClassArray->length(); ++i) {
    86         RefPtr<InspectorValue> pseudoClassValue = pseudoClassArray->get(i);
     85    for (size_t i = 0; i < pseudoClassArray.length(); ++i) {
     86        RefPtr<InspectorValue> pseudoClassValue = pseudoClassArray.get(i);
    8787        String pseudoClass;
    8888        bool success = pseudoClassValue->asString(pseudoClass);
     
    625625}
    626626
    627 void InspectorCSSAgent::setStyleText(ErrorString& errorString, const RefPtr<InspectorObject>&& fullStyleId, const String& text, RefPtr<Inspector::Protocol::CSS::CSSStyle>& result)
    628 {
    629     InspectorCSSId compoundId(fullStyleId.copyRef());
     627void InspectorCSSAgent::setStyleText(ErrorString& errorString, const InspectorObject& fullStyleId, const String& text, RefPtr<Inspector::Protocol::CSS::CSSStyle>& result)
     628{
     629    InspectorCSSId compoundId(fullStyleId);
    630630    ASSERT(!compoundId.isEmpty());
    631631
     
    641641}
    642642
    643 void InspectorCSSAgent::setRuleSelector(ErrorString& errorString, const RefPtr<InspectorObject>&& fullRuleId, const String& selector, RefPtr<Inspector::Protocol::CSS::CSSRule>& result)
    644 {
    645     InspectorCSSId compoundId(fullRuleId.copyRef());
     643void InspectorCSSAgent::setRuleSelector(ErrorString& errorString, const InspectorObject& fullRuleId, const String& selector, RefPtr<Inspector::Protocol::CSS::CSSRule>& result)
     644{
     645    InspectorCSSId compoundId(fullRuleId);
    646646    ASSERT(!compoundId.isEmpty());
    647647
     
    709709}
    710710
    711 void InspectorCSSAgent::forcePseudoState(ErrorString& errorString, int nodeId, const RefPtr<InspectorArray>&& forcedPseudoClasses)
     711void InspectorCSSAgent::forcePseudoState(ErrorString& errorString, int nodeId, const InspectorArray& forcedPseudoClasses)
    712712{
    713713    Element* element = m_domAgent->assertElement(errorString, nodeId);
     
    715715        return;
    716716
    717     unsigned forcedPseudoState = computePseudoClassMask(forcedPseudoClasses.get());
     717    unsigned forcedPseudoState = computePseudoClassMask(forcedPseudoClasses);
    718718    NodeIdToForcedPseudoState::iterator it = m_nodeIdToForcedPseudoState.find(nodeId);
    719719    unsigned currentForcedPseudoState = it == m_nodeIdToForcedPseudoState.end() ? 0 : it->value;
  • trunk/Source/WebCore/inspector/InspectorCSSAgent.h

    r180116 r185722  
    116116    virtual void getStyleSheetText(ErrorString&, const String& styleSheetId, String* result) override;
    117117    virtual void setStyleSheetText(ErrorString&, const String& styleSheetId, const String& text) override;
    118     virtual void setStyleText(ErrorString&, const RefPtr<Inspector::InspectorObject>&& styleId, const String& text, RefPtr<Inspector::Protocol::CSS::CSSStyle>& result) override;
    119     virtual void setRuleSelector(ErrorString&, const RefPtr<Inspector::InspectorObject>&& ruleId, const String& selector, RefPtr<Inspector::Protocol::CSS::CSSRule>& result) override;
     118    virtual void setStyleText(ErrorString&, const Inspector::InspectorObject& styleId, const String& text, RefPtr<Inspector::Protocol::CSS::CSSStyle>& result) override;
     119    virtual void setRuleSelector(ErrorString&, const Inspector::InspectorObject& ruleId, const String& selector, RefPtr<Inspector::Protocol::CSS::CSSRule>& result) override;
    120120    virtual void addRule(ErrorString&, int contextNodeId, const String& selector, RefPtr<Inspector::Protocol::CSS::CSSRule>& result) override;
    121121    virtual void getSupportedCSSProperties(ErrorString&, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::CSS::CSSPropertyInfo>>& result) override;
    122     virtual void forcePseudoState(ErrorString&, int nodeId, const RefPtr<Inspector::InspectorArray>&& forcedPseudoClasses) override;
     122    virtual void forcePseudoState(ErrorString&, int nodeId, const Inspector::InspectorArray& forcedPseudoClasses) override;
    123123    virtual void getNamedFlowCollection(ErrorString&, int documentNodeId, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::CSS::NamedFlow>>& result) override;
    124124
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp

    r185558 r185722  
    104104static const UChar ellipsisUChar[] = { 0x2026, 0 };
    105105
    106 static Color parseColor(const RefPtr<InspectorObject>&& colorObject)
     106static Color parseColor(const InspectorObject* colorObject)
    107107{
    108108    if (!colorObject)
     
    128128}
    129129
    130 static Color parseConfigColor(const String& fieldName, InspectorObject* configObject)
     130static Color parseConfigColor(const String& fieldName, const InspectorObject* configObject)
    131131{
    132132    RefPtr<InspectorObject> colorObject;
    133133    configObject->getObject(fieldName, colorObject);
    134     return parseColor(WTF::move(colorObject));
    135 }
    136 
    137 static bool parseQuad(const RefPtr<InspectorArray>& quadArray, FloatQuad* quad)
    138 {
    139     if (!quadArray)
    140         return false;
     134
     135    return parseColor(colorObject.get());
     136}
     137
     138static bool parseQuad(const InspectorArray& quadArray, FloatQuad* quad)
     139{
    141140    const size_t coordinatesInQuad = 8;
    142141    double coordinates[coordinatesInQuad];
    143     if (quadArray->length() != coordinatesInQuad)
     142    if (quadArray.length() != coordinatesInQuad)
    144143        return false;
    145144    for (size_t i = 0; i < coordinatesInQuad; ++i) {
    146         if (!quadArray->get(i)->asDouble(*(coordinates + i)))
     145        if (!quadArray.get(i)->asDouble(*(coordinates + i)))
    147146            return false;
    148147    }
     
    875874}
    876875
    877 void InspectorDOMAgent::performSearch(ErrorString& errorString, const String& whitespaceTrimmedQuery, const RefPtr<InspectorArray>&& nodeIds, String* searchId, int* resultCount)
     876void InspectorDOMAgent::performSearch(ErrorString& errorString, const String& whitespaceTrimmedQuery, const InspectorArray* nodeIds, String* searchId, int* resultCount)
    878877{
    879878    // FIXME: Search works with node granularity - number of matches within node is not calculated.
     
    10131012}
    10141013
    1015 void InspectorDOMAgent::setSearchingForNode(ErrorString& errorString, bool enabled, InspectorObject* highlightInspectorObject)
     1014void InspectorDOMAgent::setSearchingForNode(ErrorString& errorString, bool enabled, const InspectorObject* highlightInspectorObject)
    10161015{
    10171016    if (m_searchingForNode == enabled)
     
    10281027}
    10291028
    1030 std::unique_ptr<HighlightConfig> InspectorDOMAgent::highlightConfigFromInspectorObject(ErrorString& errorString, InspectorObject* highlightInspectorObject)
     1029std::unique_ptr<HighlightConfig> InspectorDOMAgent::highlightConfigFromInspectorObject(ErrorString& errorString, const InspectorObject* highlightInspectorObject)
    10311030{
    10321031    if (!highlightInspectorObject) {
     
    10471046}
    10481047
    1049 void InspectorDOMAgent::setInspectModeEnabled(ErrorString& errorString, bool enabled, const RefPtr<InspectorObject>&& highlightConfig)
    1050 {
    1051     setSearchingForNode(errorString, enabled, highlightConfig ? highlightConfig.get() : nullptr);
    1052 }
    1053 
    1054 void InspectorDOMAgent::highlightRect(ErrorString&, int x, int y, int width, int height, const RefPtr<InspectorObject>&& color, const RefPtr<InspectorObject>&& outlineColor, const bool* usePageCoordinates)
     1048void InspectorDOMAgent::setInspectModeEnabled(ErrorString& errorString, bool enabled, const InspectorObject* highlightConfig)
     1049{
     1050    setSearchingForNode(errorString, enabled, highlightConfig ? highlightConfig : nullptr);
     1051}
     1052
     1053void InspectorDOMAgent::highlightRect(ErrorString&, int x, int y, int width, int height, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
    10551054{
    10561055    auto quad = std::make_unique<FloatQuad>(FloatRect(x, y, width, height));
    1057     innerHighlightQuad(WTF::move(quad), color.copyRef(), outlineColor.copyRef(), usePageCoordinates);
    1058 }
    1059 
    1060 void InspectorDOMAgent::highlightQuad(ErrorString& errorString, const RefPtr<InspectorArray>&& quadArray, const RefPtr<InspectorObject>&& color, const RefPtr<InspectorObject>&& outlineColor, const bool* usePageCoordinates)
     1056    innerHighlightQuad(WTF::move(quad), color, outlineColor, usePageCoordinates);
     1057}
     1058
     1059void InspectorDOMAgent::highlightQuad(ErrorString& errorString, const InspectorArray& quadArray, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
    10611060{
    10621061    auto quad = std::make_unique<FloatQuad>();
     
    10651064        return;
    10661065    }
    1067     innerHighlightQuad(WTF::move(quad), color.copyRef(), outlineColor.copyRef(), usePageCoordinates);
    1068 }
    1069 
    1070 void InspectorDOMAgent::innerHighlightQuad(std::unique_ptr<FloatQuad> quad, const RefPtr<InspectorObject>&& color, const RefPtr<InspectorObject>&& outlineColor, const bool* usePageCoordinates)
     1066    innerHighlightQuad(WTF::move(quad), color, outlineColor, usePageCoordinates);
     1067}
     1068
     1069void InspectorDOMAgent::innerHighlightQuad(std::unique_ptr<FloatQuad> quad, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
    10711070{
    10721071    auto highlightConfig = std::make_unique<HighlightConfig>();
    1073     highlightConfig->content = parseColor(color.copyRef());
    1074     highlightConfig->contentOutline = parseColor(outlineColor.copyRef());
     1072    highlightConfig->content = parseColor(color);
     1073    highlightConfig->contentOutline = parseColor(outlineColor);
    10751074    highlightConfig->usePageCoordinates = usePageCoordinates ? *usePageCoordinates : false;
    10761075    m_overlay->highlightQuad(WTF::move(quad), *highlightConfig);
    10771076}
    10781077
    1079 void InspectorDOMAgent::highlightNode(ErrorString& errorString, const RefPtr<InspectorObject>&& highlightInspectorObject, const int* nodeId, const String* objectId)
     1078void InspectorDOMAgent::highlightNode(ErrorString& errorString, const InspectorObject& highlightInspectorObject, const int* nodeId, const String* objectId)
    10801079{
    10811080    Node* node = 0;
     
    10921091        return;
    10931092
    1094     std::unique_ptr<HighlightConfig> highlightConfig = highlightConfigFromInspectorObject(errorString, highlightInspectorObject.get());
     1093    std::unique_ptr<HighlightConfig> highlightConfig = highlightConfigFromInspectorObject(errorString, &highlightInspectorObject);
    10951094    if (!highlightConfig)
    10961095        return;
     
    10991098}
    11001099
    1101 void InspectorDOMAgent::highlightFrame(ErrorString&, const String& frameId, const RefPtr<InspectorObject>&& color, const RefPtr<InspectorObject>&& outlineColor)
     1100void InspectorDOMAgent::highlightFrame(ErrorString&, const String& frameId, const InspectorObject* color, const InspectorObject* outlineColor)
    11021101{
    11031102    Frame* frame = m_pageAgent->frameForId(frameId);
     
    11051104        auto highlightConfig = std::make_unique<HighlightConfig>();
    11061105        highlightConfig->showInfo = true; // Always show tooltips for frames.
    1107         highlightConfig->content = parseColor(color.copyRef());
    1108         highlightConfig->contentOutline = parseColor(outlineColor.copyRef());
     1106        highlightConfig->content = parseColor(color);
     1107        highlightConfig->contentOutline = parseColor(outlineColor);
    11091108        m_overlay->highlightNode(frame->ownerElement(), *highlightConfig);
    11101109    }
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.h

    r180116 r185722  
    131131    virtual void getEventListenersForNode(ErrorString&, int nodeId, const WTF::String* objectGroup, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::DOM::EventListener>>& listenersArray) override;
    132132    virtual void getAccessibilityPropertiesForNode(ErrorString&, int nodeId, RefPtr<Inspector::Protocol::DOM::AccessibilityProperties>& axProperties) override;
    133     virtual void performSearch(ErrorString&, const String& whitespaceTrimmedQuery, const RefPtr<Inspector::InspectorArray>&& nodeIds, String* searchId, int* resultCount) override;
     133    virtual void performSearch(ErrorString&, const String& whitespaceTrimmedQuery, const Inspector::InspectorArray* nodeIds, String* searchId, int* resultCount) override;
    134134    virtual void getSearchResults(ErrorString&, const String& searchId, int fromIndex, int toIndex, RefPtr<Inspector::Protocol::Array<int>>&) override;
    135135    virtual void discardSearchResults(ErrorString&, const String& searchId) override;
    136136    virtual void resolveNode(ErrorString&, int nodeId, const String* objectGroup, RefPtr<Inspector::Protocol::Runtime::RemoteObject>& result) override;
    137137    virtual void getAttributes(ErrorString&, int nodeId, RefPtr<Inspector::Protocol::Array<String>>& result) override;
    138     virtual void setInspectModeEnabled(ErrorString&, bool enabled, const RefPtr<Inspector::InspectorObject>&& highlightConfig) override;
     138    virtual void setInspectModeEnabled(ErrorString&, bool enabled, const Inspector::InspectorObject* highlightConfig) override;
    139139    virtual void requestNode(ErrorString&, const String& objectId, int* nodeId) override;
    140140    virtual void pushNodeByPathToFrontend(ErrorString&, const String& path, int* nodeId) override;
     
    142142    virtual void releaseBackendNodeIds(ErrorString&, const String& nodeGroup) override;
    143143    virtual void hideHighlight(ErrorString&) override;
    144     virtual void highlightRect(ErrorString&, int x, int y, int width, int height, const RefPtr<Inspector::InspectorObject>&& color, const RefPtr<Inspector::InspectorObject>&& outlineColor, const bool* usePageCoordinates) override;
    145     virtual void highlightQuad(ErrorString&, const RefPtr<Inspector::InspectorArray>&& quad, const RefPtr<Inspector::InspectorObject>&& color, const RefPtr<Inspector::InspectorObject>&& outlineColor, const bool* usePageCoordinates) override;
    146     virtual void highlightNode(ErrorString&, const RefPtr<Inspector::InspectorObject>&& highlightConfig, const int* nodeId, const String* objectId) override;
    147     virtual void highlightFrame(ErrorString&, const String& frameId, const RefPtr<Inspector::InspectorObject>&& color, const RefPtr<Inspector::InspectorObject>&& outlineColor) override;
     144    virtual void highlightRect(ErrorString&, int x, int y, int width, int height, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates) override;
     145    virtual void highlightQuad(ErrorString&, const Inspector::InspectorArray& quad, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates) override;
     146    virtual void highlightNode(ErrorString&, const Inspector::InspectorObject& highlightConfig, const int* nodeId, const String* objectId) override;
     147    virtual void highlightFrame(ErrorString&, const String& frameId, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor) override;
    148148
    149149    virtual void moveTo(ErrorString&, int nodeId, int targetNodeId, const int* anchorNodeId, int* newNodeId) override;
     
    213213
    214214private:
    215     void setSearchingForNode(ErrorString&, bool enabled, Inspector::InspectorObject* highlightConfig);
    216     std::unique_ptr<HighlightConfig> highlightConfigFromInspectorObject(ErrorString&, Inspector::InspectorObject* highlightInspectorObject);
     215    void setSearchingForNode(ErrorString&, bool enabled, const Inspector::InspectorObject* highlightConfig);
     216    std::unique_ptr<HighlightConfig> highlightConfigFromInspectorObject(ErrorString&, const Inspector::InspectorObject* highlightInspectorObject);
    217217
    218218    // Node-related methods.
     
    242242    void discardBindings();
    243243
    244     void innerHighlightQuad(std::unique_ptr<FloatQuad>, const RefPtr<Inspector::InspectorObject>&& color, const RefPtr<Inspector::InspectorObject>&& outlineColor, const bool* usePageCoordinates);
     244    void innerHighlightQuad(std::unique_ptr<FloatQuad>, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates);
    245245
    246246    InspectorPageAgent* m_pageAgent;
  • trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp

    r183867 r185722  
    9393}
    9494
    95 void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString& errorString, const RefPtr<InspectorObject>&& storageId, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Array<String>>>& items)
     95void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString& errorString, const InspectorObject& storageId, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Array<String>>>& items)
    9696{
    9797    Frame* frame;
    98     RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
     98    RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId, frame);
    9999    if (!storageArea) {
    100100        errorString = ASCIILiteral("No StorageArea for given storageId");
     
    117117}
    118118
    119 void InspectorDOMStorageAgent::setDOMStorageItem(ErrorString& errorString, const RefPtr<InspectorObject>&& storageId, const String& key, const String& value)
     119void InspectorDOMStorageAgent::setDOMStorageItem(ErrorString& errorString, const InspectorObject& storageId, const String& key, const String& value)
    120120{
    121121    Frame* frame;
    122     RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
     122    RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId, frame);
    123123    if (!storageArea) {
    124124        errorString = ASCIILiteral("Storage not found");
     
    132132}
    133133
    134 void InspectorDOMStorageAgent::removeDOMStorageItem(ErrorString& errorString, const RefPtr<InspectorObject>&& storageId, const String& key)
     134void InspectorDOMStorageAgent::removeDOMStorageItem(ErrorString& errorString, const InspectorObject& storageId, const String& key)
    135135{
    136136    Frame* frame;
    137     RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
     137    RefPtr<StorageArea> storageArea = findStorageArea(errorString, storageId, frame);
    138138    if (!storageArea) {
    139139        errorString = ASCIILiteral("Storage not found");
     
    181181}
    182182
    183 RefPtr<StorageArea> InspectorDOMStorageAgent::findStorageArea(ErrorString& errorString, const RefPtr<InspectorObject>&& storageId, Frame*& targetFrame)
     183RefPtr<StorageArea> InspectorDOMStorageAgent::findStorageArea(ErrorString& errorString, const InspectorObject& storageId, Frame*& targetFrame)
    184184{
    185185    String securityOrigin;
    186186    bool isLocalStorage = false;
    187     bool success = storageId->getString(ASCIILiteral("securityOrigin"), securityOrigin);
     187    bool success = storageId.getString(ASCIILiteral("securityOrigin"), securityOrigin);
    188188    if (success)
    189         success = storageId->getBoolean(ASCIILiteral("isLocalStorage"), isLocalStorage);
     189        success = storageId.getBoolean(ASCIILiteral("isLocalStorage"), isLocalStorage);
    190190    if (!success) {
    191191        errorString = ASCIILiteral("Invalid storageId format");
  • trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h

    r180116 r185722  
    6464    virtual void enable(ErrorString&) override;
    6565    virtual void disable(ErrorString&) override;
    66     virtual void getDOMStorageItems(ErrorString&, const RefPtr<Inspector::InspectorObject>&& storageId, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Array<String>>>& items) override;
    67     virtual void setDOMStorageItem(ErrorString&, const RefPtr<Inspector::InspectorObject>&& storageId, const String& key, const String& value) override;
    68     virtual void removeDOMStorageItem(ErrorString&, const RefPtr<Inspector::InspectorObject>&& storageId, const String& key) override;
     66    virtual void getDOMStorageItems(ErrorString&, const Inspector::InspectorObject& storageId, RefPtr<Inspector::Protocol::Array<Inspector::Protocol::Array<String>>>& items) override;
     67    virtual void setDOMStorageItem(ErrorString&, const Inspector::InspectorObject& storageId, const String& key, const String& value) override;
     68    virtual void removeDOMStorageItem(ErrorString&, const Inspector::InspectorObject& storageId, const String& key) override;
    6969
    7070    // Called from the injected script.
     
    7676
    7777private:
    78     RefPtr<StorageArea> findStorageArea(ErrorString&, const RefPtr<Inspector::InspectorObject>&&, Frame*&);
     78    RefPtr<StorageArea> findStorageArea(ErrorString&, const Inspector::InspectorObject&, Frame*&);
    7979
    8080    InspectorPageAgent* m_pageAgent;
  • trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp

    r181613 r185722  
    379379}
    380380
    381 static RefPtr<IDBKeyRange> idbKeyRangeFromKeyRange(InspectorObject* keyRange)
     381static RefPtr<IDBKeyRange> idbKeyRangeFromKeyRange(const InspectorObject* keyRange)
    382382{
    383383    RefPtr<InspectorObject> lower;
     
    656656}
    657657
    658 void InspectorIndexedDBAgent::requestData(ErrorString& errorString, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<InspectorObject>&& keyRange, Ref<RequestDataCallback>&& requestCallback)
     658void InspectorIndexedDBAgent::requestData(ErrorString& errorString, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const InspectorObject* keyRange, Ref<RequestDataCallback>&& requestCallback)
    659659{
    660660    Frame* frame = m_pageAgent->findFrameWithSecurityOrigin(securityOrigin);
     
    669669    InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(mainWorldExecState(frame));
    670670
    671     RefPtr<IDBKeyRange> idbKeyRange = keyRange ? idbKeyRangeFromKeyRange(keyRange.get()) : nullptr;
     671    RefPtr<IDBKeyRange> idbKeyRange = keyRange ? idbKeyRangeFromKeyRange(keyRange) : nullptr;
    672672    if (keyRange && !idbKeyRange) {
    673673        errorString = ASCIILiteral("Can not parse key range.");
  • trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h

    r182068 r185722  
    6262    virtual void requestDatabaseNames(ErrorString&, const String& securityOrigin, Ref<RequestDatabaseNamesCallback>&&) override;
    6363    virtual void requestDatabase(ErrorString&, const String& securityOrigin, const String& databaseName, Ref<RequestDatabaseCallback>&&) override;
    64     virtual void requestData(ErrorString&, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<Inspector::InspectorObject>&& keyRange, Ref<RequestDataCallback>&&) override;
     64    virtual void requestData(ErrorString&, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const Inspector::InspectorObject* keyRange, Ref<RequestDataCallback>&&) override;
    6565    virtual void clearObjectStore(ErrorString&, const String& in_securityOrigin, const String& in_databaseName, const String& in_objectStoreName, Ref<ClearObjectStoreCallback>&&) override;
    6666
  • trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp

    r181081 r185722  
    330330}
    331331
    332 void InspectorReplayAgent::replayToPosition(ErrorString& errorString, const RefPtr<InspectorObject>&& positionObject, bool fastReplay)
     332void InspectorReplayAgent::replayToPosition(ErrorString& errorString, const InspectorObject& positionObject, bool fastReplay)
    333333{
    334334    ReplayPosition position;
    335     if (!positionObject->getInteger(ASCIILiteral("segmentOffset"), position.segmentOffset)) {
     335    if (!positionObject.getInteger(ASCIILiteral("segmentOffset"), position.segmentOffset)) {
    336336        errorString = ASCIILiteral("Couldn't decode ReplayPosition segment offset provided to ReplayAgent.replayToPosition.");
    337337        return;
    338338    }
    339339
    340     if (!positionObject->getInteger(ASCIILiteral("inputOffset"), position.inputOffset)) {
     340    if (!positionObject.getInteger(ASCIILiteral("inputOffset"), position.inputOffset)) {
    341341        errorString = ASCIILiteral("Couldn't decode ReplayPosition input offset provided to ReplayAgent.replayToPosition.");
    342342        return;
  • trunk/Source/WebCore/inspector/InspectorReplayAgent.h

    r182068 r185722  
    9797    virtual void stopCapturing(ErrorString&) override;
    9898
    99     virtual void replayToPosition(ErrorString&, const RefPtr<Inspector::InspectorObject>&&, bool shouldFastForward) override;
     99    virtual void replayToPosition(ErrorString&, const Inspector::InspectorObject& position, bool shouldFastForward) override;
    100100    virtual void replayToCompletion(ErrorString&, bool shouldFastForward) override;
    101101    virtual void pausePlayback(ErrorString&) override;
  • trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp

    r180132 r185722  
    300300    m_resourcesData->setResourceType(requestId, type);
    301301
    302     if (m_extraRequestHeaders) {
    303         InspectorObject::const_iterator end = m_extraRequestHeaders->end();
    304         for (InspectorObject::const_iterator it = m_extraRequestHeaders->begin(); it != end; ++it) {
    305             String value;
    306             if (it->value->asString(value))
    307                 request.setHTTPHeaderField(it->key, value);
    308         }
    309     }
     302    for (auto& entry : m_extraRequestHeaders)
     303        request.setHTTPHeaderField(entry.key, entry.value);
    310304
    311305    request.setReportLoadTiming(true);
     
    625619}
    626620
    627 void InspectorResourceAgent::setExtraHTTPHeaders(ErrorString&, const RefPtr<InspectorObject>&& headers)
    628 {
    629     m_extraRequestHeaders = headers.copyRef();
     621void InspectorResourceAgent::setExtraHTTPHeaders(ErrorString&, const InspectorObject& headers)
     622{
     623    for (auto& entry : headers) {
     624        String stringValue;
     625        if (entry.value->asString(stringValue))
     626            m_extraRequestHeaders.set(entry.key, stringValue);
     627    }
    630628}
    631629
  • trunk/Source/WebCore/inspector/InspectorResourceAgent.h

    r180132 r185722  
    118118    virtual void enable(ErrorString&) override;
    119119    virtual void disable(ErrorString&) override;
    120     virtual void setExtraHTTPHeaders(ErrorString&, const RefPtr<Inspector::InspectorObject>&&) override;
     120    virtual void setExtraHTTPHeaders(ErrorString&, const Inspector::InspectorObject& headers) override;
    121121    virtual void getResponseBody(ErrorString&, const String& requestId, String* content, bool* base64Encoded) override;
    122122    virtual void canClearBrowserCache(ErrorString&, bool*) override;
     
    140140    bool m_cacheDisabled;
    141141    bool m_loadingXHRSynchronously;
    142     RefPtr<Inspector::InspectorObject> m_extraRequestHeaders;
     142    HashMap<String, String> m_extraRequestHeaders;
    143143
    144144    HashSet<unsigned long> m_hiddenRequestIdentifiers;
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.h

    r184437 r185722  
    5757    InspectorCSSId() { }
    5858
    59     explicit InspectorCSSId(const RefPtr<Inspector::InspectorObject>&& value)
    60     {
    61         if (!value->getString(ASCIILiteral("styleSheetId"), m_styleSheetId))
     59    explicit InspectorCSSId(const Inspector::InspectorObject& value)
     60    {
     61        if (!value.getString(ASCIILiteral("styleSheetId"), m_styleSheetId))
    6262            return;
    6363
    64         if (!value->getInteger(ASCIILiteral("ordinal"), m_ordinal))
     64        if (!value.getInteger(ASCIILiteral("ordinal"), m_ordinal))
    6565            m_styleSheetId = String();
    6666    }
  • trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp

    r180116 r185722  
    172172}
    173173
    174 void InspectorWorkerAgent::sendMessageToWorker(ErrorString& error, int workerId, const RefPtr<InspectorObject>&& message)
     174void InspectorWorkerAgent::sendMessageToWorker(ErrorString& error, int workerId, const InspectorObject& message)
    175175{
    176176    WorkerFrontendChannel* channel = m_idToChannel.get(workerId);
    177177    if (channel)
    178         channel->proxy()->sendMessageToInspector(message->toJSONString());
     178        channel->proxy()->sendMessageToInspector(message.toJSONString());
    179179    else
    180180        error = ASCIILiteral("Worker is gone");
  • trunk/Source/WebCore/inspector/InspectorWorkerAgent.h

    r180116 r185722  
    6969    virtual void connectToWorker(ErrorString&, int workerId) override;
    7070    virtual void disconnectFromWorker(ErrorString&, int workerId) override;
    71     virtual void sendMessageToWorker(ErrorString&, int workerId, const RefPtr<Inspector::InspectorObject>&& message) override;
     71    virtual void sendMessageToWorker(ErrorString&, int workerId, const Inspector::InspectorObject& message) override;
    7272    virtual void setAutoconnectToWorkers(ErrorString&, bool value) override;
    7373
Note: See TracChangeset for help on using the changeset viewer.