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