gfx/skia/trunk/src/core/SkGraphics.cpp

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     2 /*
     3  * Copyright 2006 The Android Open Source Project
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
    10 #include "SkGraphics.h"
    12 #include "SkBlitter.h"
    13 #include "SkCanvas.h"
    14 #include "SkFloat.h"
    15 #include "SkGeometry.h"
    16 #include "SkMath.h"
    17 #include "SkMatrix.h"
    18 #include "SkPath.h"
    19 #include "SkPathEffect.h"
    20 #include "SkPixelRef.h"
    21 #include "SkRefCnt.h"
    22 #include "SkRTConf.h"
    23 #include "SkScalerContext.h"
    24 #include "SkShader.h"
    25 #include "SkStream.h"
    26 #include "SkTSearch.h"
    27 #include "SkTime.h"
    28 #include "SkUtils.h"
    29 #include "SkXfermode.h"
    31 void SkGraphics::GetVersion(int32_t* major, int32_t* minor, int32_t* patch) {
    32     if (major) {
    33         *major = SKIA_VERSION_MAJOR;
    34     }
    35     if (minor) {
    36         *minor = SKIA_VERSION_MINOR;
    37     }
    38     if (patch) {
    39         *patch = SKIA_VERSION_PATCH;
    40     }
    41 }
    43 #define typesizeline(type)  { #type , sizeof(type) }
    45 #ifdef BUILD_EMBOSS_TABLE
    46     extern void SkEmbossMask_BuildTable();
    47 #endif
    49 #ifdef BUILD_RADIALGRADIENT_TABLE
    50     extern void SkRadialGradient_BuildTable();
    51 #endif
    53 void SkGraphics::Init() {
    54 #ifdef SK_DEVELOPER
    55     skRTConfRegistry().possiblyDumpFile();
    56     skRTConfRegistry().validate();
    57     if (skRTConfRegistry().hasNonDefault()) {
    58         SkDebugf("Non-default runtime configuration options:\n");
    59         skRTConfRegistry().printNonDefault();
    60     }
    61 #endif
    63 #ifdef BUILD_EMBOSS_TABLE
    64     SkEmbossMask_BuildTable();
    65 #endif
    66 #ifdef BUILD_RADIALGRADIENT_TABLE
    67     SkRadialGradient_BuildTable();
    68 #endif
    70 #ifdef SK_DEBUGx
    71     int i;
    73     static const struct {
    74         const char* fTypeName;
    75         size_t      fSizeOf;
    76     } gTypeSize[] = {
    77         typesizeline(char),
    78         typesizeline(short),
    79         typesizeline(int),
    80         typesizeline(long),
    81         typesizeline(size_t),
    82         typesizeline(void*),
    84         typesizeline(S8CPU),
    85         typesizeline(U8CPU),
    86         typesizeline(S16CPU),
    87         typesizeline(U16CPU),
    89         typesizeline(SkPoint),
    90         typesizeline(SkRect),
    91         typesizeline(SkMatrix),
    92         typesizeline(SkPath),
    93         typesizeline(SkGlyph),
    94         typesizeline(SkRefCnt),
    96         typesizeline(SkPaint),
    97         typesizeline(SkCanvas),
    98         typesizeline(SkBlitter),
    99         typesizeline(SkShader),
   100         typesizeline(SkXfermode),
   101         typesizeline(SkPathEffect)
   102     };
   104 #ifdef SK_CPU_BENDIAN
   105     SkDebugf("SkGraphics: big-endian\n");
   106 #else
   107     SkDebugf("SkGraphics: little-endian\n");
   108 #endif
   110     {
   111         char    test = 0xFF;
   112         int     itest = test;   // promote to int, see if it sign-extended
   113         if (itest < 0)
   114             SkDebugf("SkGraphics: char is signed\n");
   115         else
   116             SkDebugf("SkGraphics: char is unsigned\n");
   117     }
   118     for (i = 0; i < (int)SK_ARRAY_COUNT(gTypeSize); i++) {
   119         SkDebugf("SkGraphics: sizeof(%s) = %d\n",
   120                  gTypeSize[i].fTypeName, gTypeSize[i].fSizeOf);
   121     }
   122     SkDebugf("SkGraphics: font cache limit %dK\n",
   123              GetFontCacheLimit() >> 10);
   125 #endif
   127 }
   129 void SkGraphics::Term() {
   130     PurgeFontCache();
   131     SkPaint::Term();
   132     SkXfermode::Term();
   133 }
   135 ///////////////////////////////////////////////////////////////////////////////
   137 static const char kFontCacheLimitStr[] = "font-cache-limit";
   138 static const size_t kFontCacheLimitLen = sizeof(kFontCacheLimitStr) - 1;
   140 static const struct {
   141     const char* fStr;
   142     size_t fLen;
   143     size_t (*fFunc)(size_t);
   144 } gFlags[] = {
   145     { kFontCacheLimitStr, kFontCacheLimitLen, SkGraphics::SetFontCacheLimit }
   146 };
   148 /* flags are of the form param; or param=value; */
   149 void SkGraphics::SetFlags(const char* flags) {
   150     if (!flags) {
   151         return;
   152     }
   153     const char* nextSemi;
   154     do {
   155         size_t len = strlen(flags);
   156         const char* paramEnd = flags + len;
   157         const char* nextEqual = strchr(flags, '=');
   158         if (nextEqual && paramEnd > nextEqual) {
   159             paramEnd = nextEqual;
   160         }
   161         nextSemi = strchr(flags, ';');
   162         if (nextSemi && paramEnd > nextSemi) {
   163             paramEnd = nextSemi;
   164         }
   165         size_t paramLen = paramEnd - flags;
   166         for (int i = 0; i < (int)SK_ARRAY_COUNT(gFlags); ++i) {
   167             if (paramLen != gFlags[i].fLen) {
   168                 continue;
   169             }
   170             if (strncmp(flags, gFlags[i].fStr, paramLen) == 0) {
   171                 size_t val = 0;
   172                 if (nextEqual) {
   173                     val = (size_t) atoi(nextEqual + 1);
   174                 }
   175                 (gFlags[i].fFunc)(val);
   176                 break;
   177             }
   178         }
   179         flags = nextSemi + 1;
   180     } while (nextSemi);
   181 }

mercurial