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#ifndef UrlHandler_DEFINED 8cb93a386Sopenharmony_ci#define UrlHandler_DEFINED 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "include/core/SkColor.h" 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_cistruct MHD_Connection; 13cb93a386Sopenharmony_cistruct Request; 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ciclass UrlHandler { 16cb93a386Sopenharmony_cipublic: 17cb93a386Sopenharmony_ci virtual ~UrlHandler() {} 18cb93a386Sopenharmony_ci virtual bool canHandle(const char* method, const char* url) = 0; 19cb93a386Sopenharmony_ci virtual int handle(Request* request, MHD_Connection* connection, 20cb93a386Sopenharmony_ci const char* url, const char* method, 21cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) = 0; 22cb93a386Sopenharmony_ci}; 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ciclass CmdHandler : public UrlHandler { 25cb93a386Sopenharmony_cipublic: 26cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 27cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 28cb93a386Sopenharmony_ci const char* url, const char* method, 29cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 30cb93a386Sopenharmony_ci}; 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ciclass ImgHandler : public UrlHandler { 33cb93a386Sopenharmony_cipublic: 34cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 35cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 36cb93a386Sopenharmony_ci const char* url, const char* method, 37cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 38cb93a386Sopenharmony_ci}; 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ciclass BreakHandler : public UrlHandler { 41cb93a386Sopenharmony_cipublic: 42cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 43cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 44cb93a386Sopenharmony_ci const char* url, const char* method, 45cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 46cb93a386Sopenharmony_ci}; 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci/** 49cb93a386Sopenharmony_ci Updates the clip visualization alpha. On all subsequent /img requests, the clip will be drawn in 50cb93a386Sopenharmony_ci black with the specified alpha. 0 = no visible clip, 255 = fully opaque clip. 51cb93a386Sopenharmony_ci */ 52cb93a386Sopenharmony_ciclass ClipAlphaHandler : public UrlHandler { 53cb93a386Sopenharmony_cipublic: 54cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 55cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 56cb93a386Sopenharmony_ci const char* url, const char* method, 57cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 58cb93a386Sopenharmony_ci}; 59cb93a386Sopenharmony_ci 60cb93a386Sopenharmony_ci/** 61cb93a386Sopenharmony_ci Controls whether GPU rendering is enabled. Posting to /enableGPU/1 turns GPU on, /enableGPU/0 62cb93a386Sopenharmony_ci disables it. 63cb93a386Sopenharmony_ci */ 64cb93a386Sopenharmony_ciclass EnableGPUHandler : public UrlHandler { 65cb93a386Sopenharmony_cipublic: 66cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 67cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 68cb93a386Sopenharmony_ci const char* url, const char* method, 69cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 70cb93a386Sopenharmony_ci}; 71cb93a386Sopenharmony_ci 72cb93a386Sopenharmony_ci/** 73cb93a386Sopenharmony_ci Controls whether overdraw rendering is enabled. Posting to /overdraw/1 turns overdraw on, 74cb93a386Sopenharmony_ci /overdraw/0 disables it. 75cb93a386Sopenharmony_ci */ 76cb93a386Sopenharmony_ciclass OverdrawHandler : public UrlHandler { 77cb93a386Sopenharmony_cipublic: 78cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 79cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 80cb93a386Sopenharmony_ci const char* url, const char* method, 81cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 82cb93a386Sopenharmony_ci}; 83cb93a386Sopenharmony_ci 84cb93a386Sopenharmony_ciclass PostHandler : public UrlHandler { 85cb93a386Sopenharmony_cipublic: 86cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 87cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 88cb93a386Sopenharmony_ci const char* url, const char* method, 89cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 90cb93a386Sopenharmony_ci}; 91cb93a386Sopenharmony_ci 92cb93a386Sopenharmony_ciclass DownloadHandler : public UrlHandler { 93cb93a386Sopenharmony_cipublic: 94cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 95cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 96cb93a386Sopenharmony_ci const char* url, const char* method, 97cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 98cb93a386Sopenharmony_ci}; 99cb93a386Sopenharmony_ci 100cb93a386Sopenharmony_ciclass InfoHandler : public UrlHandler { 101cb93a386Sopenharmony_cipublic: 102cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 103cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 104cb93a386Sopenharmony_ci const char* url, const char* method, 105cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 106cb93a386Sopenharmony_ci}; 107cb93a386Sopenharmony_ci 108cb93a386Sopenharmony_ciclass DataHandler : public UrlHandler { 109cb93a386Sopenharmony_cipublic: 110cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 111cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 112cb93a386Sopenharmony_ci const char* url, const char* method, 113cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 114cb93a386Sopenharmony_ci}; 115cb93a386Sopenharmony_ci 116cb93a386Sopenharmony_ci/* 117cb93a386Sopenharmony_ci * Returns a json descripton of all the GPU ops in the image 118cb93a386Sopenharmony_ci */ 119cb93a386Sopenharmony_ciclass OpsHandler : public UrlHandler { 120cb93a386Sopenharmony_cipublic: 121cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 122cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 123cb93a386Sopenharmony_ci const char* url, const char* method, 124cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 125cb93a386Sopenharmony_ci}; 126cb93a386Sopenharmony_ci 127cb93a386Sopenharmony_ci/* 128cb93a386Sopenharmony_ci * Enables drawing of gpu op bounds 129cb93a386Sopenharmony_ci */ 130cb93a386Sopenharmony_ciclass OpBoundsHandler : public UrlHandler { 131cb93a386Sopenharmony_cipublic: 132cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 133cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 134cb93a386Sopenharmony_ci const char* url, const char* method, 135cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 136cb93a386Sopenharmony_ci}; 137cb93a386Sopenharmony_ci 138cb93a386Sopenharmony_ciclass RootHandler : public UrlHandler { 139cb93a386Sopenharmony_cipublic: 140cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 141cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 142cb93a386Sopenharmony_ci const char* url, const char* method, 143cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 144cb93a386Sopenharmony_ci}; 145cb93a386Sopenharmony_ci 146cb93a386Sopenharmony_ci/** 147cb93a386Sopenharmony_ci * Controls how rendering is performed (L32, S32, F16). 148cb93a386Sopenharmony_ci * Posting to /colorMode/0 turns on L32, /colorMode/1 turns on sRGB, 149cb93a386Sopenharmony_ci * /colorMode/2 turns on FP16. 150cb93a386Sopenharmony_ci */ 151cb93a386Sopenharmony_ciclass ColorModeHandler : public UrlHandler { 152cb93a386Sopenharmony_cipublic: 153cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 154cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 155cb93a386Sopenharmony_ci const char* url, const char* method, 156cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 157cb93a386Sopenharmony_ci}; 158cb93a386Sopenharmony_ci 159cb93a386Sopenharmony_ciclass QuitHandler : public UrlHandler { 160cb93a386Sopenharmony_cipublic: 161cb93a386Sopenharmony_ci bool canHandle(const char* method, const char* url) override; 162cb93a386Sopenharmony_ci int handle(Request* request, MHD_Connection* connection, 163cb93a386Sopenharmony_ci const char* url, const char* method, 164cb93a386Sopenharmony_ci const char* upload_data, size_t* upload_data_size) override; 165cb93a386Sopenharmony_ci}; 166cb93a386Sopenharmony_ci 167cb93a386Sopenharmony_ci#endif // UrlHandler_DEFINED 168