wire up new json code in skiaserve
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1691773002 Review URL: https://codereview.chromium.org/1691773002
This commit is contained in:
parent
860fc696d7
commit
db6a254bdc
@ -318,11 +318,11 @@ SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() {
|
||||
return fCommandVector;
|
||||
}
|
||||
|
||||
Json::Value SkDebugCanvas::toJSON(UrlDataManager& urlDataManager) {
|
||||
Json::Value SkDebugCanvas::toJSON(UrlDataManager& urlDataManager, int n) {
|
||||
Json::Value result = Json::Value(Json::objectValue);
|
||||
result[SKDEBUGCANVAS_ATTRIBUTE_VERSION] = Json::Value(SKDEBUGCANVAS_VERSION);
|
||||
Json::Value commands = Json::Value(Json::arrayValue);
|
||||
for (int i = 0; i < this->getSize(); i++) {
|
||||
for (int i = 0; i < this->getSize() && i < n; i++) {
|
||||
commands[i] = this->getDrawCommandAt(i)->toJSON();
|
||||
}
|
||||
result[SKDEBUGCANVAS_ATTRIBUTE_COMMANDS] = commands;
|
||||
|
@ -141,10 +141,11 @@ public:
|
||||
SkString clipStackData() const { return fClipStackData; }
|
||||
|
||||
/**
|
||||
Returns a JSON object representing all of the draws. The encoder may use the UrlDataManager
|
||||
to store binary data such as images, referring to them via URLs embedded in the JSON.
|
||||
Returns a JSON object representing up to N draws, where N is < SkDebugCanvas::getSize().
|
||||
The encoder may use the UrlDataManager to store binary data such as images, referring to
|
||||
them via URLs embedded in the JSON.
|
||||
*/
|
||||
Json::Value toJSON(UrlDataManager& urlDataManager);
|
||||
Json::Value toJSON(UrlDataManager& urlDataManager, int n);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Inherited from SkCanvas
|
||||
|
@ -171,11 +171,11 @@ static int SendData(MHD_Connection* connection, const SkData* data, const char*
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int SendJSON(MHD_Connection* connection, SkDebugCanvas* debugCanvas, int n) {
|
||||
static int SendJSON(MHD_Connection* connection, SkDebugCanvas* debugCanvas,
|
||||
UrlDataManager* urlDataManager, int n) {
|
||||
Json::Value root = debugCanvas->toJSON(*urlDataManager, n);
|
||||
SkDynamicMemoryWStream stream;
|
||||
SkAutoTUnref<SkJSONCanvas> jsonCanvas(new SkJSONCanvas(kImageWidth, kImageHeight, stream));
|
||||
debugCanvas->drawTo(jsonCanvas, n);
|
||||
jsonCanvas->finish();
|
||||
stream.writeText(Json::FastWriter().write(root).c_str());
|
||||
|
||||
SkAutoTUnref<SkData> data(stream.copyToData());
|
||||
return SendData(connection, data, "application/json");
|
||||
@ -229,10 +229,15 @@ public:
|
||||
return MHD_NO;
|
||||
}
|
||||
|
||||
// /cmd or /cmd/N or /cmd/N/[0|1]
|
||||
if (commands.count() == 1 && 0 == strcmp(method, MHD_HTTP_METHOD_GET)) {
|
||||
int n = request->fDebugCanvas->getSize() - 1;
|
||||
return SendJSON(connection, request->fDebugCanvas, n);
|
||||
// /cmd or /cmd/N
|
||||
if (0 == strcmp(method, MHD_HTTP_METHOD_GET)) {
|
||||
int n;
|
||||
if (commands.count() == 1) {
|
||||
n = request->fDebugCanvas->getSize() - 1;
|
||||
} else {
|
||||
sscanf(commands[1].c_str(), "%d", &n);
|
||||
}
|
||||
return SendJSON(connection, request->fDebugCanvas, &request->fUrlDataManager, n);
|
||||
}
|
||||
|
||||
// /cmd/N, for now only delete supported
|
||||
|
Loading…
Reference in New Issue
Block a user