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

Changeset 173554 in webkit


Ignore:
Timestamp:
Sep 11, 2014, 9:53:35 PM (12 years ago)
Author:
Brian Burg
Message:

Source/JavaScriptCore:
Web Inspector: disambiguate double and integer primitive types in the protocol
​https://bugs.webkit.org/show_bug.cgi?id=136606

Reviewed by Timothy Hatcher.

Right now it's really easy to mix up doubles and integers when serializing or deserializing
values for the inspector protocol. This patch disambiguates setting/getting doubles and integers
so that it is clearer as to which type is intended.

A new InspectorValue::Type is added for Integer types, and the Number type is renamed to Double.
The existing callsites for asNumber/getNumber/setNumber have been fixed.

Address various integration points to make sure the right type tag is assigned to InspectorValues.

  • bindings/ScriptValue.cpp:

(Deprecated::jsToInspectorValue): Make an Integer if the JSValue is Int52 or smaller.

  • inspector/InjectedScriptManager.cpp:

(Inspector::InjectedScriptManager::injectedScriptForObjectId):

  • inspector/InspectorBackendDispatcher.cpp:

(Inspector::InspectorBackendDispatcher::dispatch):
(Inspector::InspectorBackendDispatcher::sendResponse):
(Inspector::InspectorBackendDispatcher::reportProtocolError):
(Inspector::AsMethodBridges::asInteger):
(Inspector::AsMethodBridges::asDouble):
(Inspector::InspectorBackendDispatcher::getInteger):
(Inspector::InspectorBackendDispatcher::getDouble):
(Inspector::AsMethodBridges::asInt): Deleted.
(Inspector::InspectorBackendDispatcher::getInt): Deleted.

  • inspector/InspectorBackendDispatcher.h:
  • inspector/InspectorProtocolTypes.h: Remove the special case for checking int type tags.

(Inspector::Protocol::ArrayItemHelper<int>::Traits::pushRaw):
(Inspector::Protocol::ArrayItemHelper<double>::Traits::pushRaw):
(Inspector::Protocol::BindingTraits<int>::assertValueHasExpectedType): Deleted.

  • inspector/InspectorValues.cpp: Allow integers and doubles to be convertible using asInteger/asDouble.

(Inspector::InspectorValue::asDouble):
(Inspector::InspectorValue::asInteger):
(Inspector::InspectorBasicValue::asDouble):
(Inspector::InspectorBasicValue::asInteger):
(Inspector::InspectorBasicValue::writeJSON):
(Inspector::InspectorValue::asNumber): Deleted.
(Inspector::InspectorBasicValue::asNumber): Deleted.

  • inspector/InspectorValues.h:

(Inspector::InspectorObjectBase::setInteger):
(Inspector::InspectorObjectBase::setDouble):
(Inspector::InspectorArrayBase::pushInteger):
(Inspector::InspectorArrayBase::pushDouble):
(Inspector::InspectorObjectBase::setNumber): Deleted.
(Inspector::InspectorArrayBase::pushInt): Deleted.
(Inspector::InspectorArrayBase::pushNumber): Deleted.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::buildObjectForBreakpointCookie):
(Inspector::InspectorDebuggerAgent::breakpointActionsFromProtocol):
(Inspector::parseLocation):
(Inspector::InspectorDebuggerAgent::didParseSource):

  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):

  • inspector/scripts/codegen/generator.py: Update emitted code and rebaseline test results.

(Generator.keyed_get_method_for_type):
(Generator.keyed_set_method_for_type):

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
  • replay/EncodedValue.cpp:

(JSC::EncodedValue::convertTo<double>):
(JSC::EncodedValue::convertTo<float>):
(JSC::EncodedValue::convertTo<int32_t>):
(JSC::EncodedValue::convertTo<int64_t>):
(JSC::EncodedValue::convertTo<uint32_t>):
(JSC::EncodedValue::convertTo<uint64_t>):

Source/WebCore:
Web Inspector: disambiguate integral and real number primitive types in the protocol
​https://bugs.webkit.org/show_bug.cgi?id=136606

Reviewed by Timothy Hatcher.

Update clients of InspectorValue to disambiguate integer and double primitive types.

No new tests, no behavior changed.

  • inspector/InspectorDOMAgent.cpp:

(WebCore::parseColor):
(WebCore::parseQuad):
(WebCore::InspectorDOMAgent::performSearch):

  • inspector/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

  • inspector/InspectorIndexedDBAgent.cpp:
  • inspector/InspectorOverlay.cpp:

(WebCore::buildObjectForPoint):
(WebCore::buildObjectForRect):
(WebCore::buildObjectForSize):
(WebCore::appendPathCommandAndPoints):
(WebCore::InspectorOverlay::reset):

  • inspector/InspectorReplayAgent.cpp:

(WebCore::InspectorReplayAgent::replayToPosition):

  • inspector/InspectorStyleSheet.h:

(WebCore::InspectorCSSId::InspectorCSSId):

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::didWriteHTML):
(WebCore::InspectorTimelineAgent::didCompleteRecordEntry):

  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):
(WebCore::TimelineRecordFactory::createBackgroundRecord):
(WebCore::TimelineRecordFactory::createGCEventData):
(WebCore::TimelineRecordFactory::createFunctionCallData):
(WebCore::TimelineRecordFactory::createProbeSampleData):
(WebCore::TimelineRecordFactory::createGenericTimerData):
(WebCore::TimelineRecordFactory::createTimerInstallData):
(WebCore::TimelineRecordFactory::createXHRReadyStateChangeData):
(WebCore::TimelineRecordFactory::createEvaluateScriptData):
(WebCore::TimelineRecordFactory::createResourceReceiveResponseData):
(WebCore::TimelineRecordFactory::createResourceFinishData):
(WebCore::TimelineRecordFactory::createReceiveResourceData):
(WebCore::TimelineRecordFactory::createLayoutData):
(WebCore::TimelineRecordFactory::createParseHTMLData):
(WebCore::TimelineRecordFactory::createAnimationFrameData):
(WebCore::createQuad):

  • inspector/TimelineRecordFactory.h:

(WebCore::TimelineRecordFactory::createWebSocketCreateData):
(WebCore::TimelineRecordFactory::createGenericWebSocketData):

  • page/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation):

Location:
trunk/Source
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r173551 r173554  
     12014-09-11  Brian J. Burg  <burg@cs.washington.edu>
     2
     3        Web Inspector: disambiguate double and integer primitive types in the protocol
     4        https://bugs.webkit.org/show_bug.cgi?id=136606
     5
     6        Reviewed by Timothy Hatcher.
     7
     8        Right now it's really easy to mix up doubles and integers when serializing or deserializing
     9        values for the inspector protocol. This patch disambiguates setting/getting doubles and integers
     10        so that it is clearer as to which type is intended.
     11
     12        A new InspectorValue::Type is added for Integer types, and the Number type is renamed to Double.
     13        The existing callsites for asNumber/getNumber/setNumber have been fixed.
     14
     15        Address various integration points to make sure the right type tag is assigned to InspectorValues.
     16
     17        * bindings/ScriptValue.cpp:
     18        (Deprecated::jsToInspectorValue): Make an Integer if the JSValue is Int52 or smaller.
     19        * inspector/InjectedScriptManager.cpp:
     20        (Inspector::InjectedScriptManager::injectedScriptForObjectId):
     21        * inspector/InspectorBackendDispatcher.cpp:
     22        (Inspector::InspectorBackendDispatcher::dispatch):
     23        (Inspector::InspectorBackendDispatcher::sendResponse):
     24        (Inspector::InspectorBackendDispatcher::reportProtocolError):
     25        (Inspector::AsMethodBridges::asInteger):
     26        (Inspector::AsMethodBridges::asDouble):
     27        (Inspector::InspectorBackendDispatcher::getInteger):
     28        (Inspector::InspectorBackendDispatcher::getDouble):
     29        (Inspector::AsMethodBridges::asInt): Deleted.
     30        (Inspector::InspectorBackendDispatcher::getInt): Deleted.
     31        * inspector/InspectorBackendDispatcher.h:
     32        * inspector/InspectorProtocolTypes.h: Remove the special case for checking int type tags.
     33        (Inspector::Protocol::ArrayItemHelper<int>::Traits::pushRaw):
     34        (Inspector::Protocol::ArrayItemHelper<double>::Traits::pushRaw):
     35        (Inspector::Protocol::BindingTraits<int>::assertValueHasExpectedType): Deleted.
     36        * inspector/InspectorValues.cpp: Allow integers and doubles to be convertible using asInteger/asDouble.
     37        (Inspector::InspectorValue::asDouble):
     38        (Inspector::InspectorValue::asInteger):
     39        (Inspector::InspectorBasicValue::asDouble):
     40        (Inspector::InspectorBasicValue::asInteger):
     41        (Inspector::InspectorBasicValue::writeJSON):
     42        (Inspector::InspectorValue::asNumber): Deleted.
     43        (Inspector::InspectorBasicValue::asNumber): Deleted.
     44        * inspector/InspectorValues.h:
     45        (Inspector::InspectorObjectBase::setInteger):
     46        (Inspector::InspectorObjectBase::setDouble):
     47        (Inspector::InspectorArrayBase::pushInteger):
     48        (Inspector::InspectorArrayBase::pushDouble):
     49        (Inspector::InspectorObjectBase::setNumber): Deleted.
     50        (Inspector::InspectorArrayBase::pushInt): Deleted.
     51        (Inspector::InspectorArrayBase::pushNumber): Deleted.
     52        * inspector/agents/InspectorDebuggerAgent.cpp:
     53        (Inspector::buildObjectForBreakpointCookie):
     54        (Inspector::InspectorDebuggerAgent::breakpointActionsFromProtocol):
     55        (Inspector::parseLocation):
     56        (Inspector::InspectorDebuggerAgent::didParseSource):
     57        * inspector/agents/InspectorRuntimeAgent.cpp:
     58        (Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
     59        * inspector/scripts/codegen/generator.py: Update emitted code and rebaseline test results.
     60        (Generator.keyed_get_method_for_type):
     61        (Generator.keyed_set_method_for_type):
     62        * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
     63        * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
     64        * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
     65        * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
     66        * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
     67        * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
     68        * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
     69        * replay/EncodedValue.cpp:
     70        (JSC::EncodedValue::convertTo<double>):
     71        (JSC::EncodedValue::convertTo<float>):
     72        (JSC::EncodedValue::convertTo<int32_t>):
     73        (JSC::EncodedValue::convertTo<int64_t>):
     74        (JSC::EncodedValue::convertTo<uint32_t>):
     75        (JSC::EncodedValue::convertTo<uint64_t>):
     76
    1772014-09-11  Joseph Pecoraro  <pecoraro@apple.com>
    278
  • trunk/Source/JavaScriptCore/bindings/ScriptValue.cpp

    r173410 r173554  
    115115    if (value.isBoolean())
    116116        return InspectorBasicValue::create(value.asBoolean());
    117     if (value.isNumber())
     117    if (value.isNumber() && value.isDouble())
    118118        return InspectorBasicValue::create(value.asNumber());
     119    if (value.isNumber() && value.isMachineInt())
     120        return InspectorBasicValue::create(static_cast<int>(value.asMachineInt()));
    119121    if (value.isString())
    120122        return InspectorString::create(value.getString(scriptState));
  • trunk/Source/JavaScriptCore/inspector/InjectedScriptManager.cpp

    r173410 r173554  
    9898    if (parsedObjectId && parsedObjectId->type() == InspectorValue::Type::Object) {
    9999        long injectedScriptId = 0;
    100         bool success = parsedObjectId->asObject()->getNumber(ASCIILiteral("injectedScriptId"), &injectedScriptId);
     100        bool success = parsedObjectId->asObject()->getInteger(ASCIILiteral("injectedScriptId"), &injectedScriptId);
    101101        if (success)
    102102            return m_idToInjectedScript.get(injectedScriptId);
  • trunk/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.cpp

    r173120 r173554  
    9898
    9999    long callId = 0;
    100     if (!callIdValue->asNumber(&callId)) {
    101         reportProtocolError(nullptr, InvalidRequest, ASCIILiteral("The type of 'id' property must be number"));
     100    if (!callIdValue->asInteger(&callId)) {
     101        reportProtocolError(nullptr, InvalidRequest, ASCIILiteral("The type of 'id' property must be integer"));
    102102        return;
    103103    }
    … …  
    144144    RefPtr<InspectorObject> responseMessage = InspectorObject::create();
    145145    responseMessage->setObject(ASCIILiteral("result"), result);
    146     responseMessage->setNumber(ASCIILiteral("id"), callId);
     146    responseMessage->setInteger(ASCIILiteral("id"), callId);
    147147    m_inspectorFrontendChannel->sendMessageToFrontend(responseMessage->toJSONString());
    148148}
    … …  
    172172
    173173    RefPtr<InspectorObject> error = InspectorObject::create();
    174     error->setNumber(ASCIILiteral("code"), errorCodes[errorCode]);
     174    error->setInteger(ASCIILiteral("code"), errorCodes[errorCode]);
    175175    error->setString(ASCIILiteral("message"), errorMessage);
    176176    if (data)
    … …  
    180180    message->setObject(ASCIILiteral("error"), error.release());
    181181    if (callId)
    182         message->setNumber(ASCIILiteral("id"), *callId);
     182        message->setInteger(ASCIILiteral("id"), *callId);
    183183    else
    184184        message->setValue(ASCIILiteral("id"), InspectorValue::null());
    … …  
    222222
    223223struct AsMethodBridges {
    224     static bool asInt(InspectorValue* value, int* output) { return value->asNumber(output); }
    225     static bool asDouble(InspectorValue* value, double* output) { return value->asNumber(output); }
     224    static bool asInteger(InspectorValue* value, int* output) { return value->asInteger(output); }
     225    static bool asDouble(InspectorValue* value, double* output) { return value->asDouble(output); }
    226226    static bool asString(InspectorValue* value, String* output) { return value->asString(output); }
    227227    static bool asBoolean(InspectorValue* value, bool* output) { return value->asBoolean(output); }
    … …  
    230230};
    231231
    232 int InspectorBackendDispatcher::getInt(InspectorObject* object, const String& name, bool* valueFound, InspectorArray* protocolErrors)
    233 {
    234     return getPropertyValue<int, int, int>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, "Number");
     232int InspectorBackendDispatcher::getInteger(InspectorObject* object, const String& name, bool* valueFound, InspectorArray* protocolErrors)
     233{
     234    return getPropertyValue<int, int, int>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInteger, "Integer");
    235235}
    236236
  • trunk/Source/JavaScriptCore/inspector/InspectorBackendDispatcher.h

    r160457 r173554  
    8787    void reportProtocolError(const long* const callId, CommonErrorCode, const String& errorMessage, PassRefPtr<InspectorArray> data) const;
    8888
    89     static int getInt(InspectorObject*, const String& name, bool* valueFound, InspectorArray* protocolErrors);
     89    static int getInteger(InspectorObject*, const String& name, bool* valueFound, InspectorArray* protocolErrors);
    9090    static double getDouble(InspectorObject*, const String& name, bool* valueFound, InspectorArray* protocolErrors);
    9191    static String getString(InspectorObject*, const String& name, bool* valueFound, InspectorArray* protocolErrors);
  • trunk/Source/JavaScriptCore/inspector/InspectorProtocolTypes.h

    r172930 r173554  
    121121        static void pushRaw(InspectorArray* array, int value)
    122122        {
    123             array->pushInt(value);
     123            array->pushInteger(value);
    124124        }
    125125    };
    … …  
    131131        static void pushRaw(InspectorArray* array, double value)
    132132        {
    133             array->pushNumber(value);
     133            array->pushDouble(value);
    134134        }
    135135    };
    … …  
    249249template<> struct BindingTraits<String> : public PrimitiveBindingTraits<InspectorValue::Type::String> { };
    250250template<> struct BindingTraits<bool> : public PrimitiveBindingTraits<InspectorValue::Type::Boolean> { };
    251 template<> struct BindingTraits<double> : public PrimitiveBindingTraits<InspectorValue::Type::Number> { };
    252 
    253 // FIXME: Add an Inspector::Type tag for int so we can remove this special case.
    254 template<>
    255 struct BindingTraits<int> {
    256 #if !ASSERT_DISABLED
    257     static void assertValueHasExpectedType(InspectorValue* value)
    258     {
    259         double v;
    260         bool castRes = value->asNumber(&v);
    261         ASSERT_UNUSED(castRes, castRes);
    262         ASSERT(static_cast<double>(static_cast<int>(v)) == v);
    263     }
    264 #endif // !ASSERT_DISABLED
    265 };
     251template<> struct BindingTraits<double> : public PrimitiveBindingTraits<InspectorValue::Type::Double> { };
     252template<> struct BindingTraits<int> : public PrimitiveBindingTraits<InspectorValue::Type::Integer> { };
    266253
    267254} // namespace Protocol
  • trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp

    r172655 r173554  
    486486}
    487487
    488 bool InspectorValue::asNumber(double*) const
    489 {
    490     return false;
    491 }
    492 
    493 bool InspectorValue::asNumber(float*) const
    494 {
    495     return false;
    496 }
    497 
    498 bool InspectorValue::asNumber(int*) const
    499 {
    500     return false;
    501 }
    502 
    503 bool InspectorValue::asNumber(unsigned*) const
    504 {
    505     return false;
    506 }
    507 
    508 bool InspectorValue::asNumber(long*) const
    509 {
    510     return false;
    511 }
    512 
    513 bool InspectorValue::asNumber(long long*) const
    514 {
    515     return false;
    516 }
    517 
    518 bool InspectorValue::asNumber(unsigned long*) const
    519 {
    520     return false;
    521 }
    522 
    523 bool InspectorValue::asNumber(unsigned long long*) const
     488bool InspectorValue::asDouble(double*) const
     489{
     490    return false;
     491}
     492
     493bool InspectorValue::asDouble(float*) const
     494{
     495    return false;
     496}
     497
     498bool InspectorValue::asInteger(int*) const
     499{
     500    return false;
     501}
     502
     503bool InspectorValue::asInteger(unsigned*) const
     504{
     505    return false;
     506}
     507
     508bool InspectorValue::asInteger(long*) const
     509{
     510    return false;
     511}
     512
     513bool InspectorValue::asInteger(long long*) const
     514{
     515    return false;
     516}
     517
     518bool InspectorValue::asInteger(unsigned long*) const
     519{
     520    return false;
     521}
     522
     523bool InspectorValue::asInteger(unsigned long long*) const
    524524{
    525525    return false;
    … …  
    592592}
    593593
    594 bool InspectorBasicValue::asNumber(double* output) const
    595 {
    596     if (type() != Type::Number)
     594bool InspectorBasicValue::asDouble(double* output) const
     595{
     596    if (type() != Type::Double)
    597597        return false;
    598598    *output = m_doubleValue;
    … …  
    600600}
    601601
    602 bool InspectorBasicValue::asNumber(float* output) const
    603 {
    604     if (type() != Type::Number)
     602bool InspectorBasicValue::asDouble(float* output) const
     603{
     604    if (type() != Type::Double)
    605605        return false;
    606606    *output = static_cast<float>(m_doubleValue);
    … …  
    608608}
    609609
    610 bool InspectorBasicValue::asNumber(int* output) const
    611 {
    612     if (type() != Type::Number)
     610bool InspectorBasicValue::asInteger(int* output) const
     611{
     612    if (type() != Type::Integer && type() != Type::Double)
    613613        return false;
    614614    *output = static_cast<int>(m_doubleValue);
    … …  
    616616}
    617617
    618 bool InspectorBasicValue::asNumber(unsigned* output) const
    619 {
    620     if (type() != Type::Number)
     618bool InspectorBasicValue::asInteger(unsigned* output) const
     619{
     620    if (type() != Type::Integer && type() != Type::Double)
    621621        return false;
    622622    *output = static_cast<unsigned>(m_doubleValue);
    … …  
    624624}
    625625
    626 bool InspectorBasicValue::asNumber(long* output) const
    627 {
    628     if (type() != Type::Number)
     626bool InspectorBasicValue::asInteger(long* output) const
     627{
     628    if (type() != Type::Integer && type() != Type::Double)
    629629        return false;
    630630    *output = static_cast<long>(m_doubleValue);
    … …  
    632632}
    633633
    634 bool InspectorBasicValue::asNumber(long long* output) const
    635 {
    636     if (type() != Type::Number)
     634bool InspectorBasicValue::asInteger(long long* output) const
     635{
     636    if (type() != Type::Integer && type() != Type::Double)
    637637        return false;
    638638    *output = static_cast<long long>(m_doubleValue);
    … …  
    640640}
    641641
    642 bool InspectorBasicValue::asNumber(unsigned long* output) const
    643 {
    644     if (type() != Type::Number)
     642bool InspectorBasicValue::asInteger(unsigned long* output) const
     643{
     644    if (type() != Type::Integer && type() != Type::Double)
    645645        return false;
    646646    *output = static_cast<unsigned long>(m_doubleValue);
    … …  
    648648}
    649649
    650 bool InspectorBasicValue::asNumber(unsigned long long* output) const
    651 {
    652     if (type() != Type::Number)
     650bool InspectorBasicValue::asInteger(unsigned long long* output) const
     651{
     652    if (type() != Type::Integer && type() != Type::Double)
    653653        return false;
    654654    *output = static_cast<unsigned long long>(m_doubleValue);
    … …  
    658658void InspectorBasicValue::writeJSON(StringBuilder* output) const
    659659{
    660     ASSERT(type() == Type::Boolean || type() == Type::Number);
     660    ASSERT(type() == Type::Boolean || type() == Type::Double || type() == Type::Integer);
    661661    if (type() == Type::Boolean) {
    662662        if (m_boolValue)
    … …  
    664664        else
    665665            output->append(falseString, 5);
    666     } else if (type() == Type::Number) {
     666    } else if (type() == Type::Double || type() == Type::Integer) {
    667667        NumberToLStringBuffer buffer;
    668668        if (!std::isfinite(m_doubleValue)) {
  • trunk/Source/JavaScriptCore/inspector/InspectorValues.h

    r172655 r173554  
    5959        Null = 0,
    6060        Boolean,
    61         Number,
     61        Double,
     62        Integer,
    6263        String,
    6364        Object,
    … …  
    7071
    7172    virtual bool asBoolean(bool* output) const;
    72     virtual bool asNumber(double* output) const;
    73     virtual bool asNumber(float* output) const;
    74     virtual bool asNumber(int* output) const;
    75     virtual bool asNumber(unsigned* output) const;
    76     virtual bool asNumber(long* output) const;
    77     virtual bool asNumber(long long* output) const;
    78     virtual bool asNumber(unsigned long* output) const;
    79     virtual bool asNumber(unsigned long long* output) const;
     73    virtual bool asInteger(int* output) const;
     74    virtual bool asInteger(unsigned* output) const;
     75    virtual bool asInteger(long* output) const;
     76    virtual bool asInteger(long long* output) const;
     77    virtual bool asInteger(unsigned long* output) const;
     78    virtual bool asInteger(unsigned long long* output) const;
     79    virtual bool asDouble(double* output) const;
     80    virtual bool asDouble(float* output) const;
    8081    virtual bool asString(String* output) const;
    8182    virtual bool asValue(RefPtr<InspectorValue>* output);
    … …  
    105106
    106107    virtual bool asBoolean(bool* output) const override;
    107     virtual bool asNumber(double* output) const override;
    108     virtual bool asNumber(float* output) const override;
    109     virtual bool asNumber(int* output) const override;
    110     virtual bool asNumber(unsigned* output) const override;
    111     virtual bool asNumber(long* output) const override;
    112     virtual bool asNumber(long long* output) const override;
    113     virtual bool asNumber(unsigned long* output) const override;
    114     virtual bool asNumber(unsigned long long* output) const override;
     108    // Numbers from the frontend are always parsed as doubles, so we allow
     109    // clients to convert to integral values with this function.
     110    virtual bool asInteger(int* output) const override;
     111    virtual bool asInteger(unsigned* output) const override;
     112    virtual bool asInteger(long* output) const override;
     113    virtual bool asInteger(long long* output) const override;
     114    virtual bool asInteger(unsigned long* output) const override;
     115    virtual bool asInteger(unsigned long long* output) const override;
     116    virtual bool asDouble(double* output) const override;
     117    virtual bool asDouble(float* output) const override;
    115118
    116119    virtual void writeJSON(StringBuilder* output) const override;
    … …  
    122125
    123126    explicit InspectorBasicValue(int value)
    124         : InspectorValue(Type::Number)
     127        : InspectorValue(Type::Integer)
    125128        , m_doubleValue(static_cast<double>(value)) { }
    126129
    127130    explicit InspectorBasicValue(double value)
    128         : InspectorValue(Type::Number)
     131        : InspectorValue(Type::Double)
    129132        , m_doubleValue(value) { }
    130133
    … …  
    172175    virtual bool asObject(RefPtr<InspectorObject>* output) override;
    173176
     177    // FIXME: use templates to reduce the amount of duplicated set*() methods.
    174178    void setBoolean(const String& name, bool);
    175     void setNumber(const String& name, double);
     179    void setInteger(const String& name, int);
     180    void setDouble(const String& name, double);
    176181    void setString(const String& name, const String&);
    177182    void setValue(const String& name, PassRefPtr<InspectorValue>);
    … …  
    181186    iterator find(const String& name);
    182187    const_iterator find(const String& name) const;
     188
     189    // FIXME: use templates to reduce the amount of duplicated get*() methods.
    183190    bool getBoolean(const String& name, bool* output) const;
    184     template<class T> bool getNumber(const String& name, T* output) const
     191    template<class T> bool getDouble(const String& name, T* output) const
    185192    {
    186193        RefPtr<InspectorValue> value = get(name);
    187194        if (!value)
    188195            return false;
    189         return value->asNumber(output);
     196        return value->asDouble(output);
    190197    }
     198    template<class T> bool getInteger(const String& name, T* output) const
     199    {
     200        RefPtr<InspectorValue> value = get(name);
     201        if (!value)
     202            return false;
     203        return value->asInteger(output);
     204    }
     205
    191206    bool getString(const String& name, String* output) const;
    192207    PassRefPtr<InspectorObject> getObject(const String& name) const;
    … …  
    220235
    221236    using InspectorObjectBase::setBoolean;
    222     using InspectorObjectBase::setNumber;
     237    using InspectorObjectBase::setInteger;
     238    using InspectorObjectBase::setDouble;
    223239    using InspectorObjectBase::setString;
    224240    using InspectorObjectBase::setValue;
    … …  
    228244    using InspectorObjectBase::find;
    229245    using InspectorObjectBase::getBoolean;
    230     using InspectorObjectBase::getNumber;
     246    using InspectorObjectBase::getInteger;
     247    using InspectorObjectBase::getDouble;
    231248    using InspectorObjectBase::getString;
    232249    using InspectorObjectBase::getObject;
    … …  
    258275
    259276    void pushBoolean(bool);
    260     void pushInt(int);
    261     void pushNumber(double);
     277    void pushInteger(int);
     278    void pushDouble(double);
    262279    void pushString(const String&);
    263280    void pushValue(PassRefPtr<InspectorValue>);
    … …  
    288305
    289306    using InspectorArrayBase::pushBoolean;
    290     using InspectorArrayBase::pushInt;
    291     using InspectorArrayBase::pushNumber;
     307    using InspectorArrayBase::pushInteger;
     308    using InspectorArrayBase::pushDouble;
    292309    using InspectorArrayBase::pushString;
    293310    using InspectorArrayBase::pushValue;
    … …  
    317334}
    318335
    319 inline void InspectorObjectBase::setNumber(const String& name, double value)
     336inline void InspectorObjectBase::setInteger(const String& name, int value)
     337{
     338    setValue(name, InspectorBasicValue::create(value));
     339}
     340
     341inline void InspectorObjectBase::setDouble(const String& name, double value)
    320342{
    321343    setValue(name, InspectorBasicValue::create(value));
    … …  
    353375}
    354376
    355 inline void InspectorArrayBase::pushInt(int value)
     377inline void InspectorArrayBase::pushInteger(int value)
    356378{
    357379    m_data.append(InspectorBasicValue::create(value));
    358380}
    359381
    360 inline void InspectorArrayBase::pushNumber(double value)
     382inline void InspectorArrayBase::pushDouble(double value)
    361383{
    362384    m_data.append(InspectorBasicValue::create(value));
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp

    r172930 r173554  
    153153    RefPtr<InspectorObject> breakpointObject = InspectorObject::create();
    154154    breakpointObject->setString(ASCIILiteral("url"), url);
    155     breakpointObject->setNumber(ASCIILiteral("lineNumber"), lineNumber);
    156     breakpointObject->setNumber(ASCIILiteral("columnNumber"), columnNumber);
     155    breakpointObject->setInteger(ASCIILiteral("lineNumber"), lineNumber);
     156    breakpointObject->setInteger(ASCIILiteral("columnNumber"), columnNumber);
    157157    breakpointObject->setString(ASCIILiteral("condition"), condition);
    158158    breakpointObject->setBoolean(ASCIILiteral("isRegex"), isRegex);
    … …  
    229229        // in the frontend across multiple backend probe actions and segregate object groups.
    230230        int identifier = 0;
    231         object->getNumber(ASCIILiteral("id"), &identifier);
     231        object->getInteger(ASCIILiteral("id"), &identifier);
    232232
    233233        String data;
    … …  
    289289{
    290290    String scriptIDStr;
    291     if (!location->getString(ASCIILiteral("scriptId"), &scriptIDStr) || !location->getNumber(ASCIILiteral("lineNumber"), lineNumber)) {
     291    if (!location->getString(ASCIILiteral("scriptId"), &scriptIDStr) || !location->getInteger(ASCIILiteral("lineNumber"), lineNumber)) {
    292292        *sourceID = JSC::noSourceID;
    293293        *errorString = ASCIILiteral("scriptId and lineNumber are required.");
    … …  
    297297    *sourceID = scriptIDStr.toIntPtr();
    298298    *columnNumber = 0;
    299     location->getNumber(ASCIILiteral("columnNumber"), columnNumber);
     299    location->getInteger(ASCIILiteral("columnNumber"), columnNumber);
    300300    return true;
    301301}
    … …  
    602602            continue;
    603603        ScriptBreakpoint breakpoint;
    604         breakpointObject->getNumber(ASCIILiteral("lineNumber"), &breakpoint.lineNumber);
    605         breakpointObject->getNumber(ASCIILiteral("columnNumber"), &breakpoint.columnNumber);
     604        breakpointObject->getInteger(ASCIILiteral("lineNumber"), &breakpoint.lineNumber);
     605        breakpointObject->getInteger(ASCIILiteral("columnNumber"), &breakpoint.columnNumber);
    606606        breakpointObject->getString(ASCIILiteral("condition"), &breakpoint.condition);
    607607        breakpointObject->getBoolean(ASCIILiteral("autoContinue"), &breakpoint.autoContinue);
  • trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp

    r173505 r173554  
    222222        String sourceIDAsString;
    223223        int divot;
    224         location->getNumber(ASCIILiteral("typeInformationDescriptor"), &descriptor);
     224        location->getInteger(ASCIILiteral("typeInformationDescriptor"), &descriptor);
    225225        location->getString(ASCIILiteral("sourceID"), &sourceIDAsString);
    226         location->getNumber(ASCIILiteral("divot"), &divot);
     226        location->getInteger(ASCIILiteral("divot"), &divot);
    227227
    228228        bool okay;
  • trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator.py

    r172980 r173554  
    233233        if isinstance(_type, PrimitiveType):
    234234            if _type.raw_name() is 'integer':
    235                 return 'getInt'
     235                return 'getInteger'
     236            elif _type.raw_name() is 'number':
     237                return 'getDouble'
    236238            else:
    237239                return 'get' + ucfirst(_type.raw_name())
    … …  
    248250            return 'setArray'
    249251        if isinstance(_type, PrimitiveType):
    250             if _type.raw_name() in ['integer', 'number']:
    251                 return 'setNumber'
    252             elif _type.raw_name() in ['any']:
     252            if _type.raw_name() is 'integer':
     253                return 'setInteger'
     254            elif _type.raw_name() is 'number':
     255                return 'setDouble'
     256            elif _type.raw_name() is 'any':
    253257                return 'setValue'
    254258            else:
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result

    r173526 r173554  
    216216    InspectorObject* paramsContainerPtr = paramsContainer.get();
    217217    InspectorArray* protocolErrorsPtr = protocolErrors.get();
    218     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
     218    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
    219219    String in_query = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("query"), nullptr, protocolErrorsPtr);
    220220    if (protocolErrors->length()) {
    … …  
    243243            result->setString(ASCIILiteral("notes"), out_notes.getValue());
    244244        if (out_timestamp.isAssigned())
    245             result->setNumber(ASCIILiteral("timestamp"), out_timestamp.getValue());
     245            result->setDouble(ASCIILiteral("timestamp"), out_timestamp.getValue());
    246246        if (out_values.isAssigned())
    247247            result->setObject(ASCIILiteral("values"), out_values.getValue());
    … …  
    249249            result->setValue(ASCIILiteral("payload"), out_payload.getValue());
    250250        if (out_databaseId.isAssigned())
    251             result->setNumber(ASCIILiteral("databaseId"), out_databaseId.getValue());
     251            result->setInteger(ASCIILiteral("databaseId"), out_databaseId.getValue());
    252252        if (out_sqlError)
    253253            result->setObject(ASCIILiteral("sqlError"), out_sqlError);
    … …  
    270270        jsonMessage->setString(ASCIILiteral("notes"), notes.getValue());
    271271    if (timestamp.isAssigned())
    272         jsonMessage->setNumber(ASCIILiteral("timestamp"), timestamp.getValue());
     272        jsonMessage->setDouble(ASCIILiteral("timestamp"), timestamp.getValue());
    273273    if (values.isAssigned())
    274274        jsonMessage->setObject(ASCIILiteral("values"), values.getValue());
    … …  
    276276        jsonMessage->setValue(ASCIILiteral("payload"), payload.getValue());
    277277    if (databaseId.isAssigned())
    278         jsonMessage->setNumber(ASCIILiteral("databaseId"), databaseId.getValue());
     278        jsonMessage->setInteger(ASCIILiteral("databaseId"), databaseId.getValue());
    279279    if (sqlError)
    280280        jsonMessage->setObject(ASCIILiteral("sqlError"), sqlError);
    … …  
    292292    InspectorObject* paramsContainerPtr = paramsContainer.get();
    293293    InspectorArray* protocolErrorsPtr = protocolErrors.get();
    294     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
     294    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
    295295    String in_query = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("query"), nullptr, protocolErrorsPtr);
    296296    if (protocolErrors->length()) {
    … …  
    318318    InspectorObject* paramsContainerPtr = paramsContainer.get();
    319319    InspectorArray* protocolErrorsPtr = protocolErrors.get();
    320     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
     320    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
    321321    String in_query = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("query"), nullptr, protocolErrorsPtr);
    322322    if (protocolErrors->length()) {
    … …  
    342342        result->setArray(ASCIILiteral("columnNames"), out_columnNames);
    343343        result->setString(ASCIILiteral("notes"), out_notes);
    344         result->setNumber(ASCIILiteral("timestamp"), out_timestamp);
     344        result->setDouble(ASCIILiteral("timestamp"), out_timestamp);
    345345        result->setObject(ASCIILiteral("values"), out_values);
    346346        result->setValue(ASCIILiteral("payload"), out_payload);
    347         result->setNumber(ASCIILiteral("databaseId"), out_databaseId);
     347        result->setInteger(ASCIILiteral("databaseId"), out_databaseId);
    348348        result->setObject(ASCIILiteral("sqlError"), out_sqlError);
    349349        result->setString(ASCIILiteral("screenColor"), Inspector::Protocol::getTestEnumConstantValue(out_screenColor));
    … …  
    360360    jsonMessage->setArray(ASCIILiteral("columnNames"), columnNames);
    361361    jsonMessage->setString(ASCIILiteral("notes"), notes);
    362     jsonMessage->setNumber(ASCIILiteral("timestamp"), timestamp);
     362    jsonMessage->setDouble(ASCIILiteral("timestamp"), timestamp);
    363363    jsonMessage->setObject(ASCIILiteral("values"), values);
    364364    jsonMessage->setValue(ASCIILiteral("payload"), payload);
    365     jsonMessage->setNumber(ASCIILiteral("databaseId"), databaseId);
     365    jsonMessage->setInteger(ASCIILiteral("databaseId"), databaseId);
    366366    jsonMessage->setObject(ASCIILiteral("sqlError"), sqlError);
    367367    jsonMessage->setString(ASCIILiteral("screenColor"), Inspector::Protocol::getTestEnumConstantValue(screenColor));
    … …  
    376376    InspectorObject* paramsContainerPtr = paramsContainer.get();
    377377    InspectorArray* protocolErrorsPtr = protocolErrors.get();
    378     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
     378    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
    379379    String in_query = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("query"), nullptr, protocolErrorsPtr);
    380380    if (protocolErrors->length()) {
    … …  
    615615        {
    616616            COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
    617             m_result->setNumber(ASCIILiteral("code"), value);
     617            m_result->setInteger(ASCIILiteral("code"), value);
    618618            return castState<CodeSet>();
    619619        }
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result

    r173526 r173554  
    200200    String in_notes = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("notes"), &notes_valueFound, protocolErrorsPtr);
    201201    bool timestamp_valueFound = false;
    202     Inspector::Protocol::OptOutput<double> in_timestamp = InspectorBackendDispatcher::getNumber(paramsContainerPtr, ASCIILiteral("timestamp"), &timestamp_valueFound, protocolErrorsPtr);
     202    Inspector::Protocol::OptOutput<double> in_timestamp = InspectorBackendDispatcher::getDouble(paramsContainerPtr, ASCIILiteral("timestamp"), &timestamp_valueFound, protocolErrorsPtr);
    203203    bool values_valueFound = false;
    204204    RefPtr<Inspector::InspectorObject> in_values = InspectorBackendDispatcher::getObject(paramsContainerPtr, ASCIILiteral("values"), &values_valueFound, protocolErrorsPtr);
    … …  
    206206    RefPtr<Inspector::InspectorValue> in_payload = InspectorBackendDispatcher::getAny(paramsContainerPtr, ASCIILiteral("payload"), &payload_valueFound, protocolErrorsPtr);
    207207    bool databaseId_valueFound = false;
    208     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), &databaseId_valueFound, protocolErrorsPtr);
     208    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), &databaseId_valueFound, protocolErrorsPtr);
    209209    bool sqlError_valueFound = false;
    210210    RefPtr<Inspector::InspectorObject> in_sqlError = InspectorBackendDispatcher::getObject(paramsContainerPtr, ASCIILiteral("sqlError"), &sqlError_valueFound, protocolErrorsPtr);
    … …  
    238238            result->setString(ASCIILiteral("notes"), out_notes.getValue());
    239239        if (out_timestamp.isAssigned())
    240             result->setNumber(ASCIILiteral("timestamp"), out_timestamp.getValue());
     240            result->setDouble(ASCIILiteral("timestamp"), out_timestamp.getValue());
    241241        if (out_values.isAssigned())
    242242            result->setObject(ASCIILiteral("values"), out_values.getValue());
    … …  
    244244            result->setValue(ASCIILiteral("payload"), out_payload.getValue());
    245245        if (out_databaseId.isAssigned())
    246             result->setNumber(ASCIILiteral("databaseId"), out_databaseId.getValue());
     246            result->setInteger(ASCIILiteral("databaseId"), out_databaseId.getValue());
    247247        if (out_sqlError)
    248248            result->setObject(ASCIILiteral("sqlError"), out_sqlError);
    … …  
    263263    RefPtr<Inspector::InspectorArray> in_columnNames = InspectorBackendDispatcher::getArray(paramsContainerPtr, ASCIILiteral("columnNames"), nullptr, protocolErrorsPtr);
    264264    String in_notes = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("notes"), nullptr, protocolErrorsPtr);
    265     double in_timestamp = InspectorBackendDispatcher::getNumber(paramsContainerPtr, ASCIILiteral("timestamp"), nullptr, protocolErrorsPtr);
     265    double in_timestamp = InspectorBackendDispatcher::getDouble(paramsContainerPtr, ASCIILiteral("timestamp"), nullptr, protocolErrorsPtr);
    266266    RefPtr<Inspector::InspectorObject> in_values = InspectorBackendDispatcher::getObject(paramsContainerPtr, ASCIILiteral("values"), nullptr, protocolErrorsPtr);
    267267    RefPtr<Inspector::InspectorValue> in_payload = InspectorBackendDispatcher::getAny(paramsContainerPtr, ASCIILiteral("payload"), nullptr, protocolErrorsPtr);
    268     int in_databaseId = InspectorBackendDispatcher::getInt(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
     268    int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainerPtr, ASCIILiteral("databaseId"), nullptr, protocolErrorsPtr);
    269269    RefPtr<Inspector::InspectorObject> in_sqlError = InspectorBackendDispatcher::getObject(paramsContainerPtr, ASCIILiteral("sqlError"), nullptr, protocolErrorsPtr);
    270270    String in_screenColor = InspectorBackendDispatcher::getString(paramsContainerPtr, ASCIILiteral("screenColor"), nullptr, protocolErrorsPtr);
    … …  
    292292        result->setArray(ASCIILiteral("columnNames"), out_columnNames);
    293293        result->setString(ASCIILiteral("notes"), out_notes);
    294         result->setNumber(ASCIILiteral("timestamp"), out_timestamp);
     294        result->setDouble(ASCIILiteral("timestamp"), out_timestamp);
    295295        result->setObject(ASCIILiteral("values"), out_values);
    296296        result->setValue(ASCIILiteral("payload"), out_payload);
    297         result->setNumber(ASCIILiteral("databaseId"), out_databaseId);
     297        result->setInteger(ASCIILiteral("databaseId"), out_databaseId);
    298298        result->setObject(ASCIILiteral("sqlError"), out_sqlError);
    299299        result->setString(ASCIILiteral("screenColor"), Inspector::Protocol::getTestEnumConstantValue(out_screenColor));
    … …  
    522522        {
    523523            COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
    524             m_result->setNumber(ASCIILiteral("code"), value);
     524            m_result->setInteger(ASCIILiteral("code"), value);
    525525            return castState<CodeSet>();
    526526        }
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result

    r172980 r173554  
    250250        paramsObject->setString(ASCIILiteral("notes"), *notes);
    251251    if (timestamp)
    252         paramsObject->setNumber(ASCIILiteral("timestamp"), *timestamp);
     252        paramsObject->setDouble(ASCIILiteral("timestamp"), *timestamp);
    253253    if (values)
    254254        paramsObject->setObject(ASCIILiteral("values"), values);
    … …  
    273273    paramsObject->setArray(ASCIILiteral("columnNames"), columnNames);
    274274    paramsObject->setString(ASCIILiteral("notes"), notes);
    275     paramsObject->setNumber(ASCIILiteral("timestamp"), timestamp);
     275    paramsObject->setDouble(ASCIILiteral("timestamp"), timestamp);
    276276    paramsObject->setObject(ASCIILiteral("values"), values);
    277277    paramsObject->setValue(ASCIILiteral("payload"), payload);
    … …  
    399399        {
    400400            COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
    401             m_result->setNumber(ASCIILiteral("code"), value);
     401            m_result->setInteger(ASCIILiteral("code"), value);
    402402            return castState<CodeSet>();
    403403        }
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result

    r173526 r173554  
    420420        {
    421421            COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
    422             m_result->setNumber(ASCIILiteral("code"), value);
     422            m_result->setInteger(ASCIILiteral("code"), value);
    423423            return castState<CodeSet>();
    424424        }
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result

    r172980 r173554  
    342342        {
    343343            COMPILE_ASSERT(!(STATE & CodeSet), property_code_already_set);
    344             m_result->setNumber(ASCIILiteral("code"), value);
     344            m_result->setInteger(ASCIILiteral("code"), value);
    345345            return castState<CodeSet>();
    346346        }
    … …  
    432432    void setTimestamp(double value)
    433433    {
    434         InspectorObjectBase::setNumber(ASCIILiteral("timestamp"), value);
     434        InspectorObjectBase::setDouble(ASCIILiteral("timestamp"), value);
    435435    }
    436436
    … …  
    499499        {
    500500            COMPILE_ASSERT(!(STATE & TimestampSet), property_timestamp_already_set);
    501             m_result->setNumber(ASCIILiteral("timestamp"), value);
     501            m_result->setDouble(ASCIILiteral("timestamp"), value);
    502502            return castState<TimestampSet>();
    503503        }
    … …  
    700700        {
    701701            COMPILE_ASSERT(!(STATE & TimestampSet), property_timestamp_already_set);
    702             m_result->setNumber(ASCIILiteral("timestamp"), value);
     702            m_result->setDouble(ASCIILiteral("timestamp"), value);
    703703            return castState<TimestampSet>();
    704704        }
  • trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result

    r172930 r173554  
    351351        {
    352352            COMPILE_ASSERT(!(STATE & NumberSet), property_number_already_set);
    353             m_result->setNumber(ASCIILiteral("number"), value);
     353            m_result->setInteger(ASCIILiteral("number"), value);
    354354            return castState<NumberSet>();
    355355        }
    … …  
    365365        {
    366366            COMPILE_ASSERT(!(STATE & IdSet), property_id_already_set);
    367             m_result->setNumber(ASCIILiteral("id"), value);
     367            m_result->setInteger(ASCIILiteral("id"), value);
    368368            return castState<IdSet>();
    369369        }
  • trunk/Source/JavaScriptCore/replay/EncodedValue.cpp

    r171682 r173554  
    113113{
    114114    double result;
    115     bool castSucceeded = m_value->asNumber(&result);
     115    bool castSucceeded = m_value->asDouble(&result);
    116116    ASSERT_UNUSED(castSucceeded, castSucceeded);
    117117
    … …  
    122122{
    123123    float result;
    124     bool castSucceeded = m_value->asNumber(&result);
     124    bool castSucceeded = m_value->asDouble(&result);
    125125    ASSERT_UNUSED(castSucceeded, castSucceeded);
    126126
    … …  
    131131{
    132132    int32_t result;
    133     bool castSucceeded = m_value->asNumber(&result);
     133    bool castSucceeded = m_value->asInteger(&result);
    134134    ASSERT_UNUSED(castSucceeded, castSucceeded);
    135135
    … …  
    140140{
    141141    int64_t result;
    142     bool castSucceeded = m_value->asNumber(&result);
     142    bool castSucceeded = m_value->asInteger(&result);
    143143    ASSERT_UNUSED(castSucceeded, castSucceeded);
    144144
    … …  
    149149{
    150150    uint32_t result;
    151     bool castSucceeded = m_value->asNumber(&result);
     151    bool castSucceeded = m_value->asInteger(&result);
    152152    ASSERT_UNUSED(castSucceeded, castSucceeded);
    153153
    … …  
    158158{
    159159    uint64_t result;
    160     bool castSucceeded = m_value->asNumber(&result);
     160    bool castSucceeded = m_value->asInteger(&result);
    161161    ASSERT_UNUSED(castSucceeded, castSucceeded);
    162162
  • trunk/Source/WebCore/ChangeLog

    r173553 r173554  
     12014-09-11  Brian J. Burg  <burg@cs.washington.edu>
     2
     3        Web Inspector: disambiguate integral and real number primitive types in the protocol
     4        https://bugs.webkit.org/show_bug.cgi?id=136606
     5
     6        Reviewed by Timothy Hatcher.
     7
     8        Update clients of InspectorValue to disambiguate integer and double primitive types.
     9
     10        No new tests, no behavior changed.
     11
     12        * inspector/InspectorDOMAgent.cpp:
     13        (WebCore::parseColor):
     14        (WebCore::parseQuad):
     15        (WebCore::InspectorDOMAgent::performSearch):
     16        * inspector/InspectorDOMDebuggerAgent.cpp:
     17        (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
     18        * inspector/InspectorIndexedDBAgent.cpp:
     19        * inspector/InspectorOverlay.cpp:
     20        (WebCore::buildObjectForPoint):
     21        (WebCore::buildObjectForRect):
     22        (WebCore::buildObjectForSize):
     23        (WebCore::appendPathCommandAndPoints):
     24        (WebCore::InspectorOverlay::reset):
     25        * inspector/InspectorReplayAgent.cpp:
     26        (WebCore::InspectorReplayAgent::replayToPosition):
     27        * inspector/InspectorStyleSheet.h:
     28        (WebCore::InspectorCSSId::InspectorCSSId):
     29        * inspector/InspectorTimelineAgent.cpp:
     30        (WebCore::InspectorTimelineAgent::didWriteHTML):
     31        (WebCore::InspectorTimelineAgent::didCompleteRecordEntry):
     32        * inspector/TimelineRecordFactory.cpp:
     33        (WebCore::TimelineRecordFactory::createGenericRecord):
     34        (WebCore::TimelineRecordFactory::createBackgroundRecord):
     35        (WebCore::TimelineRecordFactory::createGCEventData):
     36        (WebCore::TimelineRecordFactory::createFunctionCallData):
     37        (WebCore::TimelineRecordFactory::createProbeSampleData):
     38        (WebCore::TimelineRecordFactory::createGenericTimerData):
     39        (WebCore::TimelineRecordFactory::createTimerInstallData):
     40        (WebCore::TimelineRecordFactory::createXHRReadyStateChangeData):
     41        (WebCore::TimelineRecordFactory::createEvaluateScriptData):
     42        (WebCore::TimelineRecordFactory::createResourceReceiveResponseData):
     43        (WebCore::TimelineRecordFactory::createResourceFinishData):
     44        (WebCore::TimelineRecordFactory::createReceiveResourceData):
     45        (WebCore::TimelineRecordFactory::createLayoutData):
     46        (WebCore::TimelineRecordFactory::createParseHTMLData):
     47        (WebCore::TimelineRecordFactory::createAnimationFrameData):
     48        (WebCore::createQuad):
     49        * inspector/TimelineRecordFactory.h:
     50        (WebCore::TimelineRecordFactory::createWebSocketCreateData):
     51        (WebCore::TimelineRecordFactory::createGenericWebSocketData):
     52        * page/ContentSecurityPolicy.cpp:
     53        (WebCore::ContentSecurityPolicy::reportViolation):
     54
    1552014-09-11  Ryuan Choi  <ryuan.choi@gmail.com>
    256
  • trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp

    r173350 r173554  
    120120    int g;
    121121    int b;
    122     bool success = (*colorObject)->getNumber("r", &r);
    123     success |= (*colorObject)->getNumber("g", &g);
    124     success |= (*colorObject)->getNumber("b", &b);
     122    bool success = (*colorObject)->getInteger("r", &r);
     123    success |= (*colorObject)->getInteger("g", &g);
     124    success |= (*colorObject)->getInteger("b", &b);
    125125    if (!success)
    126126        return Color::transparent;
    127127
    128128    double a;
    129     success = (*colorObject)->getNumber("a", &a);
     129    success = (*colorObject)->getDouble("a", &a);
    130130    if (!success)
    131131        return Color(r, g, b);
    … …  
    155155        return false;
    156156    for (size_t i = 0; i < coordinatesInQuad; ++i) {
    157         if (!quadArray->get(i)->asNumber(coordinates + i))
     157        if (!quadArray->get(i)->asDouble(coordinates + i))
    158158            return false;
    159159    }
    … …  
    900900            }
    901901            int nodeId = 0;
    902             if (!nodeValue->asNumber(&nodeId)) {
     902            if (!nodeValue->asInteger(&nodeId)) {
    903903                *errorString = "Invalid nodeIds item type. Expecting integer types.";
    904904                return;
  • trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp

    r172930 r173554  
    329329    int breakpointOwnerNodeId = m_domAgent->boundNodeId(breakpointOwner);
    330330    ASSERT(breakpointOwnerNodeId);
    331     description->setNumber("nodeId", breakpointOwnerNodeId);
     331    description->setInteger("nodeId", breakpointOwnerNodeId);
    332332    description->setString("type", domTypeName(breakpointType));
    333333}
  • trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp

    r173016 r173554  
    337337    if (type == number) {
    338338        double number;
    339         if (!key->getNumber("number", &number))
     339        if (!key->getDouble("number", &number))
    340340            return nullptr;
    341341        idbKey = IDBKey::createNumber(number);
    … …  
    347347    } else if (type == date) {
    348348        double date;
    349         if (!key->getNumber("date", &date))
     349        if (!key->getDouble("date", &date))
    350350            return nullptr;
    351351        idbKey = IDBKey::createDate(date);
  • trunk/Source/WebCore/inspector/InspectorOverlay.cpp

    r173142 r173554  
    334334{
    335335    RefPtr<InspectorObject> object = InspectorObject::create();
    336     object->setNumber(ASCIILiteral("x"), point.x());
    337     object->setNumber(ASCIILiteral("y"), point.y());
     336    object->setDouble(ASCIILiteral("x"), point.x());
     337    object->setDouble(ASCIILiteral("y"), point.y());
    338338    return object.release();
    339339}
    … …  
    342342{
    343343    RefPtr<InspectorObject> object = InspectorObject::create();
    344     object->setNumber(ASCIILiteral("x"), rect.x());
    345     object->setNumber(ASCIILiteral("y"), rect.y());
    346     object->setNumber(ASCIILiteral("width"), rect.width());
    347     object->setNumber(ASCIILiteral("height"), rect.height());
     344    object->setDouble(ASCIILiteral("x"), rect.x());
     345    object->setDouble(ASCIILiteral("y"), rect.y());
     346    object->setDouble(ASCIILiteral("width"), rect.width());
     347    object->setDouble(ASCIILiteral("height"), rect.height());
    348348    return object.release();
    349349}
    … …  
    441441{
    442442    RefPtr<InspectorObject> result = InspectorObject::create();
    443     result->setNumber("width", size.width());
    444     result->setNumber("height", size.height());
     443    result->setInteger("width", size.width());
     444    result->setInteger("height", size.height());
    445445    return result.release();
    446446}
    … …  
    600600        point = info->shapeOutsideInfo->shapeToRendererPoint(points[i]);
    601601        point = localPointToRoot(info->renderer, info->rootView, info->view, point);
    602         info->array->pushNumber(point.x());
    603         info->array->pushNumber(point.y());
     602        info->array->pushDouble(point.x());
     603        info->array->pushDouble(point.y());
    604604    }
    605605}
    … …  
    860860{
    861861    RefPtr<InspectorObject> resetData = InspectorObject::create();
    862     resetData->setNumber("deviceScaleFactor", m_page.deviceScaleFactor());
     862    resetData->setDouble("deviceScaleFactor", m_page.deviceScaleFactor());
    863863    resetData->setObject("viewportSize", buildObjectForSize(viewportSize));
    864864    resetData->setObject("frameViewFullSize", buildObjectForSize(frameViewFullSize));
  • trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp

    r172930 r173554  
    341341{
    342342    ReplayPosition position;
    343     if (!positionObject->getNumber(ASCIILiteral("segmentOffset"), &position.segmentOffset)) {
     343    if (!positionObject->getInteger(ASCIILiteral("segmentOffset"), &position.segmentOffset)) {
    344344        *errorString = ASCIILiteral("Couldn't decode ReplayPosition segment offset provided to ReplayAgent.replayToPosition.");
    345345        return;
    346346    }
    347347
    348     if (!positionObject->getNumber(ASCIILiteral("inputOffset"), &position.inputOffset)) {
     348    if (!positionObject->getInteger(ASCIILiteral("inputOffset"), &position.inputOffset)) {
    349349        *errorString = ASCIILiteral("Couldn't decode ReplayPosition input offset provided to ReplayAgent.replayToPosition.");
    350350        return;
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.h

    r172930 r173554  
    7070       
    7171        RefPtr<Inspector::InspectorValue> ordinalValue = value->get("ordinal");
    72         if (!ordinalValue || !ordinalValue->asNumber(&m_ordinal))
     72        if (!ordinalValue || !ordinalValue->asInteger(&m_ordinal))
    7373            m_styleSheetId = "";
    7474    }
  • trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp

    r172930 r173554  
    357357    if (!m_recordStack.isEmpty()) {
    358358        const TimelineRecordEntry& entry = m_recordStack.last();
    359         entry.data->setNumber("endLine", endLine);
     359        entry.data->setInteger("endLine", endLine);
    360360        didCompleteCurrentRecord(TimelineRecordType::ParseHTML);
    361361    }
    … …  
    671671    entry.record->setObject(ASCIILiteral("data"), entry.data);
    672672    entry.record->setArray(ASCIILiteral("children"), entry.children);
    673     entry.record->setNumber(ASCIILiteral("endTime"), timestamp());
     673    entry.record->setDouble(ASCIILiteral("endTime"), timestamp());
    674674    addRecordToTimeline(entry.record, entry.type);
    675675}
  • trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp

    r173199 r173554  
    5757{
    5858    RefPtr<InspectorObject> record = InspectorObject::create();
    59     record->setNumber("startTime", startTime);
     59    record->setDouble("startTime", startTime);
    6060
    6161    if (maxCallStackDepth) {
    … …  
    7070{
    7171    RefPtr<InspectorObject> record = InspectorObject::create();
    72     record->setNumber("startTime", startTime);
     72    record->setDouble("startTime", startTime);
    7373    record->setString("thread", threadName);
    7474    return record.release();
    … …  
    7878{
    7979    RefPtr<InspectorObject> data = InspectorObject::create();
    80     data->setNumber("usedHeapSizeDelta", usedHeapSizeDelta);
     80    data->setInteger("usedHeapSizeDelta", usedHeapSizeDelta);
    8181    return data.release();
    8282}
    … …  
    8686    RefPtr<InspectorObject> data = InspectorObject::create();
    8787    data->setString("scriptName", scriptName);
    88     data->setNumber("scriptLine", scriptLine);
     88    data->setInteger("scriptLine", scriptLine);
    8989    return data.release();
    9090}
    … …  
    100100{
    101101    RefPtr<InspectorObject> data = InspectorObject::create();
    102     data->setNumber(ASCIILiteral("probeId"), action.identifier);
    103     data->setNumber(ASCIILiteral("hitCount"), hitCount);
     102    data->setInteger(ASCIILiteral("probeId"), action.identifier);
     103    data->setInteger(ASCIILiteral("hitCount"), hitCount);
    104104    return data.release();
    105105}
    … …  
    115115{
    116116    RefPtr<InspectorObject> data = InspectorObject::create();
    117     data->setNumber("timerId", timerId);
     117    data->setInteger("timerId", timerId);
    118118    return data.release();
    119119}
    … …  
    122122{
    123123    RefPtr<InspectorObject> data = InspectorObject::create();
    124     data->setNumber("timerId", timerId);
    125     data->setNumber("timeout", timeout);
     124    data->setInteger("timerId", timerId);
     125    data->setInteger("timeout", timeout);
    126126    data->setBoolean("singleShot", singleShot);
    127127    return data.release();
    … …  
    132132    RefPtr<InspectorObject> data = InspectorObject::create();
    133133    data->setString("url", url);
    134     data->setNumber("readyState", readyState);
     134    data->setInteger("readyState", readyState);
    135135    return data.release();
    136136}
    … …  
    147147    RefPtr<InspectorObject> data = InspectorObject::create();
    148148    data->setString("url", url);
    149     data->setNumber("lineNumber", lineNumber);
     149    data->setInteger("lineNumber", lineNumber);
    150150    return data.release();
    151151}
    … …  
    178178    RefPtr<InspectorObject> data = InspectorObject::create();
    179179    data->setString("requestId", requestId);
    180     data->setNumber("statusCode", response.httpStatusCode());
     180    data->setInteger("statusCode", response.httpStatusCode());
    181181    data->setString("mimeType", response.mimeType());
    182182    return data.release();
    … …  
    189189    data->setBoolean("didFail", didFail);
    190190    if (finishTime)
    191         data->setNumber("networkTime", finishTime);
     191        data->setDouble("networkTime", finishTime);
    192192    return data.release();
    193193}
    … …  
    197197    RefPtr<InspectorObject> data = InspectorObject::create();
    198198    data->setString("requestId", requestId);
    199     data->setNumber("encodedDataLength", length);
     199    data->setInteger("encodedDataLength", length);
    200200    return data.release();
    201201}
    … …  
    204204{
    205205    RefPtr<InspectorObject> data = InspectorObject::create();
    206     data->setNumber("dirtyObjects", dirtyObjects);
    207     data->setNumber("totalObjects", totalObjects);
     206    data->setInteger("dirtyObjects", dirtyObjects);
     207    data->setInteger("totalObjects", totalObjects);
    208208    data->setBoolean("partialLayout", partialLayout);
    209209    return data.release();
    … …  
    234234{
    235235    RefPtr<InspectorObject> data = InspectorObject::create();
    236     data->setNumber("startLine", startLine);
     236    data->setInteger("startLine", startLine);
    237237    return data.release();
    238238}
    … …  
    241241{
    242242    RefPtr<InspectorObject> data = InspectorObject::create();
    243     data->setNumber("id", callbackId);
     243    data->setInteger("id", callbackId);
    244244    return data.release();
    245245}
    … …  
    248248{
    249249    RefPtr<InspectorArray> array = InspectorArray::create();
    250     array->pushNumber(quad.p1().x());
    251     array->pushNumber(quad.p1().y());
    252     array->pushNumber(quad.p2().x());
    253     array->pushNumber(quad.p2().y());
    254     array->pushNumber(quad.p3().x());
    255     array->pushNumber(quad.p3().y());
    256     array->pushNumber(quad.p4().x());
    257     array->pushNumber(quad.p4().y());
     250    array->pushDouble(quad.p1().x());
     251    array->pushDouble(quad.p1().y());
     252    array->pushDouble(quad.p2().x());
     253    array->pushDouble(quad.p2().y());
     254    array->pushDouble(quad.p3().x());
     255    array->pushDouble(quad.p3().y());
     256    array->pushDouble(quad.p4().x());
     257    array->pushDouble(quad.p4().y());
    258258    return array.release();
    259259}
  • trunk/Source/WebCore/inspector/TimelineRecordFactory.h

    r171195 r173554  
    112112        {
    113113            RefPtr<Inspector::InspectorObject> data = Inspector::InspectorObject::create();
    114             data->setNumber("identifier", identifier);
     114            data->setInteger("identifier", identifier);
    115115            data->setString("url", url.string());
    116116            if (!protocol.isNull())
    … …  
    122122        {
    123123            RefPtr<Inspector::InspectorObject> data = Inspector::InspectorObject::create();
    124             data->setNumber("identifier", identifier);
     124            data->setInteger("identifier", identifier);
    125125            return data.release();
    126126        }
  • trunk/Source/WebCore/page/ContentSecurityPolicy.cpp

    r173142 r173554  
    16621662        URL source = URL(URL(), callFrame->sourceURL());
    16631663        cspReport->setString(ASCIILiteral("source-file"), stripURLForUseInReport(document, source));
    1664         cspReport->setNumber(ASCIILiteral("line-number"), callFrame->lineNumber());
     1664        cspReport->setInteger(ASCIILiteral("line-number"), callFrame->lineNumber());
    16651665    }
    16661666
Note: See TracChangeset for help on using the changeset viewer.