1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2016 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "tools/skiaserve/urlhandlers/UrlHandler.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "microhttpd.h" 11cb93a386Sopenharmony_ci#include "tools/skiaserve/Request.h" 12cb93a386Sopenharmony_ci#include "tools/skiaserve/Response.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ciusing namespace Response; 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_cibool OverdrawHandler::canHandle(const char* method, const char* url) { 17cb93a386Sopenharmony_ci static const char* kBasePath = "/overdraw/"; 18cb93a386Sopenharmony_ci return 0 == strcmp(method, MHD_HTTP_METHOD_POST) && 19cb93a386Sopenharmony_ci 0 == strncmp(url, kBasePath, strlen(kBasePath)); 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ciint OverdrawHandler::handle(Request* request, MHD_Connection* connection, 23cb93a386Sopenharmony_ci const char* url, const char* method, 24cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) { 25cb93a386Sopenharmony_ci SkTArray<SkString> commands; 26cb93a386Sopenharmony_ci SkStrSplit(url, "/", &commands); 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ci if (commands.count() != 2) { 29cb93a386Sopenharmony_ci return MHD_NO; 30cb93a386Sopenharmony_ci } 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci int enable; 33cb93a386Sopenharmony_ci sscanf(commands[1].c_str(), "%d", &enable); 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci bool success = request->setOverdraw(SkToBool(enable)); 36cb93a386Sopenharmony_ci if (!success) { 37cb93a386Sopenharmony_ci return SendError(connection, "Unable to set overdraw"); 38cb93a386Sopenharmony_ci } 39cb93a386Sopenharmony_ci return SendOK(connection); 40cb93a386Sopenharmony_ci} 41