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