diff options
author | 2016-02-08 13:57:44 -0800 | |
---|---|---|
committer | 2016-02-08 13:57:44 -0800 | |
commit | 873d624b80b4f4bf08904e356932198dd7c7576c (patch) | |
tree | 3aed1b267faeb3effaf47d59cac2dd4c7cb8bfda /tools | |
parent | 7a5ada8c429b99b6ea061d7ea710d3c8349502ac (diff) |
Skia serve now supports favicon correctly
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1676403002
Review URL: https://codereview.chromium.org/1676403002
Diffstat (limited to 'tools')
-rw-r--r-- | tools/skiaserve/favicon.ico | bin | 0 -> 318 bytes | |||
-rw-r--r-- | tools/skiaserve/skiaserve.cpp | 26 |
2 files changed, 25 insertions, 1 deletions
diff --git a/tools/skiaserve/favicon.ico b/tools/skiaserve/favicon.ico Binary files differnew file mode 100644 index 0000000000..e7440c7512 --- /dev/null +++ b/tools/skiaserve/favicon.ico diff --git a/tools/skiaserve/skiaserve.cpp b/tools/skiaserve/skiaserve.cpp index a8ddcdf488..e2e5450fbd 100644 --- a/tools/skiaserve/skiaserve.cpp +++ b/tools/skiaserve/skiaserve.cpp @@ -29,6 +29,7 @@ __SK_FORCE_IMAGE_DECODER_LINKING; DEFINE_string(source, "https://debugger.skia.org", "Where to load the web UI from."); +DEFINE_string(faviconDir, "tools/skiaserve", "The directory of the favicon"); DEFINE_int32(port, 8888, "The port to listen on."); // TODO probably want to make this configurable @@ -443,6 +444,28 @@ public: } }; +class FaviconHandler : public UrlHandler { +public: + bool canHandle(const char* method, const char* url) override { + return 0 == strcmp(method, MHD_HTTP_METHOD_GET) && + 0 == strcmp(url, "/favicon.ico"); + } + + int handle(Request* request, MHD_Connection* connection, + const char* url, const char* method, + const char* upload_data, size_t* upload_data_size) override { + SkString dir(FLAGS_faviconDir[0]); + dir.append("/favicon.ico"); + FILE* ico = fopen(dir.c_str(), "r"); + + SkAutoTUnref<SkData> data(SkData::NewFromFILE(ico)); + int ret = SendData(connection, data, "image/vnd.microsoft.icon"); + fclose(ico); + return ret; + } +}; + + class RootHandler : public UrlHandler { public: bool canHandle(const char* method, const char* url) override { @@ -468,6 +491,7 @@ public: fHandlers.push_back(new InfoHandler); fHandlers.push_back(new DownloadHandler); fHandlers.push_back(new DataHandler); + fHandlers.push_back(new FaviconHandler); } ~UrlManager() { @@ -502,7 +526,7 @@ int answer_to_connection(void* cls, struct MHD_Connection* connection, int result = kUrlManager.invoke(request, connection, url, method, upload_data, upload_data_size); if (MHD_NO == result) { - fprintf(stderr, "Invalid method and / or url: %s %s)\n", method, url); + fprintf(stderr, "Invalid method and / or url: %s %s\n", method, url); } return result; } |