Index: core/inspector/CodeGeneratorInspectorStrings.py |
diff --git a/core/inspector/CodeGeneratorInspectorStrings.py b/core/inspector/CodeGeneratorInspectorStrings.py |
index 94416e7a444f3321b05eb3d3537c71acd9804b14..f9b812769c4df54e417243cc1a22363352b26947 100644 |
--- a/core/inspector/CodeGeneratorInspectorStrings.py |
+++ b/core/inspector/CodeGeneratorInspectorStrings.py |
@@ -33,8 +33,8 @@ frontend_domain_class = ( |
""" class $domainClassName { |
public: |
$domainClassName(InspectorFrontendChannel* inspectorFrontendChannel) : m_inspectorFrontendChannel(inspectorFrontendChannel) { } |
-${frontendDomainMethodDeclarations} void setInspectorFrontendChannel(InspectorFrontendChannel* inspectorFrontendChannel) { m_inspectorFrontendChannel = inspectorFrontendChannel; } |
- InspectorFrontendChannel* getInspectorFrontendChannel() { return m_inspectorFrontendChannel; } |
+${frontendDomainMethodDeclarations} |
+ void flush() { m_inspectorFrontendChannel->flush(); } |
private: |
InspectorFrontendChannel* m_inspectorFrontendChannel; |
}; |
@@ -44,23 +44,19 @@ ${frontendDomainMethodDeclarations} void setInspectorFrontendChannel(Insp |
""") |
backend_method = ( |
-"""void InspectorBackendDispatcherImpl::${domainName}_$methodName(long callId, JSONObject*$requestMessageObject) |
+"""void InspectorBackendDispatcherImpl::${domainName}_$methodName(long callId, JSONObject*$requestMessageObject, JSONArray* protocolErrors) |
{ |
- RefPtr<JSONArray> protocolErrors = JSONArray::create(); |
- |
if (!$agentField) |
protocolErrors->pushString("${domainName} handler is not available."); |
-$methodOutCode |
-$methodInCode |
- RefPtr<JSONObject> result = JSONObject::create(); |
- RefPtr<JSONValue> resultErrorData; |
- ErrorString error; |
- if (!protocolErrors->length()) { |
- $agentField->$methodName(&error$agentCallParams); |
- |
-$errorCook${responseCook} |
+$methodCode |
+ if (protocolErrors->length()) { |
+ reportProtocolError(&callId, InvalidParams, String::format(InvalidParamsFormatString, commandName($commandNameIndex)), protocolErrors); |
+ return; |
} |
- sendResponse(callId, result, commandName($commandNameIndex), protocolErrors, error, resultErrorData); |
+$agentCallParamsDeclaration |
+ $agentField->$methodName($agentCallParams); |
+$responseCook |
+ sendResponse(callId, $sendResponseCallParams); |
} |
""") |
@@ -69,7 +65,7 @@ frontend_method = ("""void InspectorFrontend::$domainName::$eventName($parameter |
RefPtr<JSONObject> jsonMessage = JSONObject::create(); |
jsonMessage->setString("method", "$domainName.$eventName"); |
$code if (m_inspectorFrontendChannel) |
- m_inspectorFrontendChannel->sendMessageToFrontend(jsonMessage->toJSONString()); |
+ m_inspectorFrontendChannel->sendMessageToFrontend(jsonMessage.release()); |
} |
""") |
@@ -91,7 +87,7 @@ callback_failure_method = ( |
if (error) { |
errorDataValue = $argument; |
} |
- sendIfActive(0, error, errorDataValue.release()); |
+ sendIfActive(nullptr, error, errorDataValue.release()); |
} |
""") |
@@ -101,23 +97,23 @@ frontend_h = ( |
#define InspectorFrontend_h |
#include "InspectorTypeBuilder.h" |
+#include "core/inspector/InspectorFrontendChannel.h" |
#include "platform/JSONValues.h" |
#include "wtf/PassRefPtr.h" |
#include "wtf/text/WTFString.h" |
namespace WebCore { |
-class InspectorFrontendChannel; |
- |
typedef String ErrorString; |
class InspectorFrontend { |
public: |
InspectorFrontend(InspectorFrontendChannel*); |
- |
+ InspectorFrontendChannel* channel() { return m_inspectorFrontendChannel; } |
$domainClassList |
private: |
+ InspectorFrontendChannel* m_inspectorFrontendChannel; |
${fieldDeclarations}}; |
} // namespace WebCore |
@@ -247,7 +243,7 @@ $constructorInit |
virtual void reportProtocolError(const long* const callId, CommonErrorCode, const String& errorMessage, PassRefPtr<JSONValue> data) const; |
using InspectorBackendDispatcher::reportProtocolError; |
- void sendResponse(long callId, PassRefPtr<JSONObject> result, const ErrorString&invocationError, PassRefPtr<JSONValue> errorData); |
+ void sendResponse(long callId, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData, PassRefPtr<JSONObject> result); |
bool isActive() { return m_inspectorFrontendChannel; } |
$setters |
@@ -258,19 +254,28 @@ $methodDeclarations |
$fieldDeclarations |
template<typename R, typename V, typename V0> |
- static R getPropertyValueImpl(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name); |
- |
- static int getInt(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
- static double getDouble(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
- static String getString(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
- static bool getBoolean(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
- static PassRefPtr<JSONObject> getObject(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
- static PassRefPtr<JSONArray> getArray(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors); |
+ static R getPropertyValueImpl(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name); |
- void sendResponse(long callId, PassRefPtr<JSONObject> result, const char* commandName, PassRefPtr<JSONArray> protocolErrors, ErrorString invocationError, PassRefPtr<JSONValue> errorData); |
+ static int getInt(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ static double getDouble(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ static String getString(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ static bool getBoolean(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ static PassRefPtr<JSONObject> getObject(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ static PassRefPtr<JSONArray> getArray(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors); |
+ void sendResponse(long callId, ErrorString invocationError, PassRefPtr<JSONObject> result) |
+ { |
+ sendResponse(callId, invocationError, RefPtr<JSONValue>(), result); |
+ } |
+ void sendResponse(long callId, ErrorString invocationError) |
+ { |
+ sendResponse(callId, invocationError, RefPtr<JSONValue>(), JSONObject::create()); |
+ } |
+ static const char InvalidParamsFormatString[]; |
}; |
+const char InspectorBackendDispatcherImpl::InvalidParamsFormatString[] = "Some arguments of method '%s' can't be processed"; |
+ |
$methods |
PassRefPtr<InspectorBackendDispatcher> InspectorBackendDispatcher::create(InspectorFrontendChannel* inspectorFrontendChannel) |
@@ -282,7 +287,7 @@ PassRefPtr<InspectorBackendDispatcher> InspectorBackendDispatcher::create(Inspec |
void InspectorBackendDispatcherImpl::dispatch(const String& message) |
{ |
RefPtr<InspectorBackendDispatcher> protect = this; |
- typedef void (InspectorBackendDispatcherImpl::*CallHandler)(long callId, JSONObject* messageObject); |
+ typedef void (InspectorBackendDispatcherImpl::*CallHandler)(long callId, JSONObject* messageObject, JSONArray* protocolErrors); |
typedef HashMap<String, CallHandler> DispatchMap; |
DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, ); |
long callId = 0; |
@@ -336,20 +341,11 @@ $messageHandlers |
return; |
} |
- ((*this).*it->value)(callId, messageObject.get()); |
-} |
- |
-void InspectorBackendDispatcherImpl::sendResponse(long callId, PassRefPtr<JSONObject> result, const char* commandName, PassRefPtr<JSONArray> protocolErrors, ErrorString invocationError, PassRefPtr<JSONValue> errorData) |
-{ |
- if (protocolErrors->length()) { |
- String errorMessage = String::format("Some arguments of method '%s' can't be processed", commandName); |
- reportProtocolError(&callId, InvalidParams, errorMessage, protocolErrors); |
- return; |
- } |
- sendResponse(callId, result, invocationError, errorData); |
+ RefPtr<JSONArray> protocolErrors = JSONArray::create(); |
+ ((*this).*it->value)(callId, messageObject.get(), protocolErrors.get()); |
} |
-void InspectorBackendDispatcherImpl::sendResponse(long callId, PassRefPtr<JSONObject> result, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData) |
+void InspectorBackendDispatcherImpl::sendResponse(long callId, const ErrorString& invocationError, PassRefPtr<JSONValue> errorData, PassRefPtr<JSONObject> result) |
{ |
if (invocationError.length()) { |
reportProtocolError(&callId, ServerError, invocationError, errorData); |
@@ -357,10 +353,10 @@ void InspectorBackendDispatcherImpl::sendResponse(long callId, PassRefPtr<JSONOb |
} |
RefPtr<JSONObject> responseMessage = JSONObject::create(); |
- responseMessage->setObject("result", result); |
responseMessage->setNumber("id", callId); |
+ responseMessage->setObject("result", result); |
if (m_inspectorFrontendChannel) |
- m_inspectorFrontendChannel->sendMessageToFrontend(responseMessage->toJSONString()); |
+ m_inspectorFrontendChannel->sendMessageToFrontend(responseMessage.release()); |
} |
void InspectorBackendDispatcher::reportProtocolError(const long* const callId, CommonErrorCode code, const String& errorMessage) const |
@@ -395,11 +391,11 @@ void InspectorBackendDispatcherImpl::reportProtocolError(const long* const callI |
else |
message->setValue("id", JSONValue::null()); |
if (m_inspectorFrontendChannel) |
- m_inspectorFrontendChannel->sendMessageToFrontend(message->toJSONString()); |
+ m_inspectorFrontendChannel->sendMessageToFrontend(message.release()); |
} |
template<typename R, typename V, typename V0> |
-R InspectorBackendDispatcherImpl::getPropertyValueImpl(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name) |
+R InspectorBackendDispatcherImpl::getPropertyValueImpl(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors, V0 initial_value, bool (*as_method)(JSONValue*, V*), const char* type_name) |
{ |
ASSERT(protocolErrors); |
@@ -411,7 +407,7 @@ R InspectorBackendDispatcherImpl::getPropertyValueImpl(JSONObject* object, const |
if (!object) { |
if (!valueFound) { |
// Required parameter in missing params container. |
- protocolErrors->pushString(String::format("'params' object must contain required parameter '%s' with type '%s'.", name.utf8().data(), type_name)); |
+ protocolErrors->pushString(String::format("'params' object must contain required parameter '%s' with type '%s'.", name, type_name)); |
} |
return value; |
} |
@@ -421,12 +417,12 @@ R InspectorBackendDispatcherImpl::getPropertyValueImpl(JSONObject* object, const |
if (valueIterator == end) { |
if (!valueFound) |
- protocolErrors->pushString(String::format("Parameter '%s' with type '%s' was not found.", name.utf8().data(), type_name)); |
+ protocolErrors->pushString(String::format("Parameter '%s' with type '%s' was not found.", name, type_name)); |
return value; |
} |
if (!as_method(valueIterator->value.get(), &value)) |
- protocolErrors->pushString(String::format("Parameter '%s' has wrong type. It must be '%s'.", name.utf8().data(), type_name)); |
+ protocolErrors->pushString(String::format("Parameter '%s' has wrong type. It must be '%s'.", name, type_name)); |
else |
if (valueFound) |
*valueFound = true; |
@@ -442,32 +438,32 @@ struct AsMethodBridges { |
static bool asArray(JSONValue* value, RefPtr<JSONArray>* output) { return value->asArray(output); } |
}; |
-int InspectorBackendDispatcherImpl::getInt(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+int InspectorBackendDispatcherImpl::getInt(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<int, int, int>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asInt, "Number"); |
} |
-double InspectorBackendDispatcherImpl::getDouble(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+double InspectorBackendDispatcherImpl::getDouble(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<double, double, double>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asDouble, "Number"); |
} |
-String InspectorBackendDispatcherImpl::getString(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+String InspectorBackendDispatcherImpl::getString(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<String, String, String>(object, name, valueFound, protocolErrors, "", AsMethodBridges::asString, "String"); |
} |
-bool InspectorBackendDispatcherImpl::getBoolean(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+bool InspectorBackendDispatcherImpl::getBoolean(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<bool, bool, bool>(object, name, valueFound, protocolErrors, false, AsMethodBridges::asBoolean, "Boolean"); |
} |
-PassRefPtr<JSONObject> InspectorBackendDispatcherImpl::getObject(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+PassRefPtr<JSONObject> InspectorBackendDispatcherImpl::getObject(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<PassRefPtr<JSONObject>, RefPtr<JSONObject>, JSONObject*>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asObject, "Object"); |
} |
-PassRefPtr<JSONArray> InspectorBackendDispatcherImpl::getArray(JSONObject* object, const String& name, bool* valueFound, JSONArray* protocolErrors) |
+PassRefPtr<JSONArray> InspectorBackendDispatcherImpl::getArray(JSONObject* object, const char* name, bool* valueFound, JSONArray* protocolErrors) |
{ |
return getPropertyValueImpl<PassRefPtr<JSONArray>, RefPtr<JSONArray>, JSONArray*>(object, name, valueFound, protocolErrors, 0, AsMethodBridges::asArray, "Array"); |
} |
@@ -496,7 +492,7 @@ InspectorBackendDispatcher::CallbackBase::~CallbackBase() {} |
void InspectorBackendDispatcher::CallbackBase::sendFailure(const ErrorString& error) |
{ |
ASSERT(error.length()); |
- sendIfActive(0, error, PassRefPtr<JSONValue>()); |
+ sendIfActive(nullptr, error, PassRefPtr<JSONValue>()); |
} |
bool InspectorBackendDispatcher::CallbackBase::isActive() |
@@ -508,7 +504,7 @@ void InspectorBackendDispatcher::CallbackBase::sendIfActive(PassRefPtr<JSONObjec |
{ |
if (m_alreadySent) |
return; |
- m_backendImpl->sendResponse(m_id, partialMessage, invocationError, errorData); |
+ m_backendImpl->sendResponse(m_id, invocationError, errorData, partialMessage); |
m_alreadySent = true; |
} |
@@ -530,7 +526,9 @@ frontend_cpp = ( |
namespace WebCore { |
InspectorFrontend::InspectorFrontend(InspectorFrontendChannel* inspectorFrontendChannel) |
- : $constructorInit{ |
+ : m_inspectorFrontendChannel(inspectorFrontendChannel) |
+ , $constructorInit |
+{ |
} |
$methods |
@@ -661,6 +659,11 @@ public: |
return static_cast<Array<T>*>(static_cast<JSONArrayBase*>(array.get())); |
} |
+ void concat(PassRefPtr<Array<T> > array) |
+ { |
+ return ArrayItemHelper<T>::Traits::concat(this->openAccessors(), array->openAccessors()); |
+ } |
+ |
#if $validatorIfdefName |
static void assertCorrectValue(JSONValue* value) |
{ |
@@ -680,6 +683,12 @@ struct StructItemTraits { |
array->pushValue(value); |
} |
+ static void concat(JSONArray* array, JSONArray* anotherArray) |
+ { |
+ for (JSONArray::iterator it = anotherArray->begin(); it != anotherArray->end(); ++it) |
+ array->pushValue(*it); |
+ } |
+ |
#if $validatorIfdefName |
template<typename T> |
static void assertCorrectValue(JSONValue* value) { |
@@ -888,7 +897,6 @@ $validatorCode |
param_container_access_code = """ |
RefPtr<JSONObject> paramsContainer = requestMessageObject->getObject("params"); |
JSONObject* paramsContainerPtr = paramsContainer.get(); |
- JSONArray* protocolErrorsPtr = protocolErrors.get(); |
""" |
class_binding_builder_part_1 = ( |