Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Unified Diff: experimental/webtry/main.cpp

Issue 688713002: delete webtry from main skia repo; it's been moved to buildbots (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « experimental/webtry/gyp_for_webtry ('k') | experimental/webtry/poly/.bowerrc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/webtry/main.cpp
diff --git a/experimental/webtry/main.cpp b/experimental/webtry/main.cpp
deleted file mode 100644
index a83a60842d5de26b151b7d69cef000a5d8cdc98f..0000000000000000000000000000000000000000
--- a/experimental/webtry/main.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-#include <sys/time.h>
-#include <sys/resource.h>
-
-#include "GrContextFactory.h"
-
-#include "SkCanvas.h"
-#include "SkCommandLineFlags.h"
-#include "SkData.h"
-#include "SkForceLinking.h"
-#include "SkGraphics.h"
-#include "SkImageDecoder.h"
-#include "SkImageEncoder.h"
-#include "SkImageInfo.h"
-#include "SkOSFile.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-
-#include "seccomp_bpf.h"
-
-__SK_FORCE_IMAGE_DECODER_LINKING;
-
-DEFINE_string(out, "", "Output basename; fiddle will append the config used and the appropriate extension");
-DEFINE_string(source, "", "Filename of the source image.");
-DEFINE_int32(width, 256, "Width of output image.");
-DEFINE_int32(height, 256, "Height of output image.");
-DEFINE_bool(gpu, false, "Use GPU (Mesa) rendering.");
-DEFINE_bool(raster, true, "Use Raster rendering.");
-DEFINE_bool(pdf, false, "Use PDF rendering.");
-
-// Defined in template.cpp.
-extern SkBitmap source;
-
-static bool install_syscall_filter() {
-
-#ifndef SK_UNSAFE_BUILD_DESKTOP_ONLY
- struct sock_filter filter[] = {
- /* Grab the system call number. */
- EXAMINE_SYSCALL,
- /* List allowed syscalls. */
- ALLOW_SYSCALL(exit_group),
- ALLOW_SYSCALL(exit),
- ALLOW_SYSCALL(fstat),
- ALLOW_SYSCALL(read),
- ALLOW_SYSCALL(write),
- ALLOW_SYSCALL(close),
- ALLOW_SYSCALL(mmap),
- ALLOW_SYSCALL(munmap),
- ALLOW_SYSCALL(brk),
- ALLOW_SYSCALL(futex),
- KILL_PROCESS,
- };
- struct sock_fprog prog = {
- SK_ARRAY_COUNT(filter),
- filter,
- };
-
- // Lock down the app so that it can't get new privs, such as setuid.
- // Calling this is a requirement for an unpriviledged process to use mode
- // 2 seccomp filters, ala SECCOMP_MODE_FILTER, otherwise we'd have to be
- // root.
- if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) {
- perror("prctl(NO_NEW_PRIVS)");
- goto failed;
- }
- // Now call seccomp and restrict the system calls that can be made to only
- // the ones in the provided filter list.
- if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog)) {
- perror("prctl(SECCOMP)");
- goto failed;
- }
- return true;
-
-failed:
- if (errno == EINVAL) {
- fprintf(stderr, "SECCOMP_FILTER is not available. :(\n");
- }
- return false;
-#else
- return true;
-#endif /* SK_UNSAFE_BUILD_DESKTOP_ONLY */
-}
-
-static void setLimits() {
- struct rlimit n;
-
- // Limit to 5 seconds of CPU.
- n.rlim_cur = 5;
- n.rlim_max = 5;
- if (setrlimit(RLIMIT_CPU, &n)) {
- perror("setrlimit(RLIMIT_CPU)");
- }
-
- // Limit to 150M of Address space.
- n.rlim_cur = 150000000;
- n.rlim_max = 150000000;
- if (setrlimit(RLIMIT_AS, &n)) {
- perror("setrlimit(RLIMIT_CPU)");
- }
-}
-
-extern void draw(SkCanvas* canvas);
-
-static void drawAndDump(SkSurface* surface, SkWStream* stream) {
- SkCanvas *canvas = surface->getCanvas();
- draw(canvas);
-
- // Write out the image as a PNG.
- SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
- SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100));
- if (NULL == data.get()) {
- printf("Failed to encode\n");
- exit(1);
- }
- stream->write(data->data(), data->size());
-}
-
-static void drawRaster(SkWStream* stream, SkImageInfo info) {
- SkAutoTUnref<SkSurface> surface;
- surface.reset(SkSurface::NewRaster(info));
- drawAndDump(surface, stream);
-}
-
-static void drawGPU(SkWStream* stream, GrContext* gr, SkImageInfo info) {
- SkAutoTUnref<SkSurface> surface;
- surface.reset(SkSurface::NewRenderTarget(gr,info));
-
- drawAndDump(surface, stream);
-}
-
-static void drawPDF(SkWStream* stream, SkImageInfo info) {
- printf( "Not implemented yet...\n");
-}
-
-int main(int argc, char** argv) {
- SkCommandLineFlags::Parse(argc, argv);
- SkAutoGraphics init;
-
- if (FLAGS_out.count() == 0) {
- perror("The --out flag must have an argument.");
- return 1;
- }
-
- if (FLAGS_source.count() == 1) {
- const char *sourceDir = getenv("WEBTRY_INOUT");
- if (NULL == sourceDir) {
- sourceDir = "/skia_build/inout";
- }
-
- SkString sourcePath = SkOSPath::Join(sourceDir, FLAGS_source[0]);
- if (!SkImageDecoder::DecodeFile(sourcePath.c_str(), &source)) {
- perror("Unable to read the source image.");
- }
- }
-
- // make sure to open any needed output files before we set up the security
- // jail
-
- SkWStream* streams[3] = {NULL, NULL, NULL};
-
- if (FLAGS_raster) {
- SkString outPath;
- outPath.printf("%s_raster.png", FLAGS_out[0]);
- streams[0] = SkNEW_ARGS(SkFILEWStream,(outPath.c_str()));
- }
- if (FLAGS_gpu) {
- SkString outPath;
- outPath.printf("%s_gpu.png", FLAGS_out[0]);
- streams[1] = SkNEW_ARGS(SkFILEWStream,(outPath.c_str()));
- }
- if (FLAGS_pdf) {
- SkString outPath;
- outPath.printf("%s.pdf", FLAGS_out[0]);
- streams[2] = SkNEW_ARGS(SkFILEWStream,(outPath.c_str()));
- }
-
- SkImageInfo info = SkImageInfo::MakeN32(FLAGS_width, FLAGS_height, kPremul_SkAlphaType);
-
- GrContext *gr = NULL;
- GrContextFactory* grFactory = NULL;
-
- // need to set up the GPU context before we install system call restrictions
- if (FLAGS_gpu) {
-
- GrContext::Options grContextOpts;
- grFactory = new GrContextFactory(grContextOpts);
- gr = grFactory->get(GrContextFactory::kMESA_GLContextType);
- }
-
- setLimits();
-
- if (!install_syscall_filter()) {
- return 1;
- }
-
- if (NULL != streams[0]) {
- drawRaster(streams[0], info);
- }
- if (NULL != streams[1]) {
- drawGPU(streams[1], gr, info);
- }
- if (NULL != streams[2]) {
- drawPDF(streams[2], info);
- }
-
- if (gr) {
- delete grFactory;
- }
-}
« no previous file with comments | « experimental/webtry/gyp_for_webtry ('k') | experimental/webtry/poly/.bowerrc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698