gfx/skia/trunk/src/animator/SkDump.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 "SkDump.h"
    12 #ifdef SK_DUMP_ENABLED
    14 #include "SkAnimateMaker.h"
    15 #include "SkAnimatorScript.h"
    16 #include "SkDisplayEvents.h"
    17 #include "SkDisplayList.h"
    18 #include "SkString.h"
    20 #if SK_USE_CONDENSED_INFO == 0
    22 const SkMemberInfo SkDump::fInfo[] = {
    23     SK_MEMBER(displayList, Boolean),
    24     SK_MEMBER(eventList, Boolean),
    25     SK_MEMBER(events, Boolean),
    26     SK_MEMBER(groups, Boolean),
    27     SK_MEMBER(name, String),
    28     SK_MEMBER(posts, Boolean),
    29     SK_MEMBER(script, String)
    30 };
    32 #endif
    34 DEFINE_GET_MEMBER(SkDump);
    36 SkDump::SkDump() : displayList(-1), eventList(-1), events(-1), groups(-1), posts(-1) {
    37 }
    39 bool SkDump::enable(SkAnimateMaker& maker ) {
    40     if (script.size() > 0)
    41         return evaluate(maker);
    42     bool hasAttr = false;
    43     if (events > 0)
    44         hasAttr |= maker.fDumpEvents = true;
    45     if (posts > 0)
    46         hasAttr |= maker.fDumpPosts = true;
    47     if (groups > 0)
    48         hasAttr |= maker.fDumpGConditions = true;
    49     if ((hasAttr |= (eventList > 0)) == true)
    50         maker.fEvents.dump(maker);
    51     if ((hasAttr |= (name.size() > 0)) == true)
    52         maker.dump(name.c_str());
    53     if (displayList > 0 || (displayList != 0 && hasAttr == false))
    54         maker.fDisplayList.dump(&maker);
    55     return true;
    56 }
    58 bool SkDump::evaluate(SkAnimateMaker &maker) {
    59     SkAnimatorScript scriptEngine(maker, NULL, SkType_Int);
    60     SkScriptValue value;
    61     const char* cScript = script.c_str();
    62     bool success = scriptEngine.evaluateScript(&cScript, &value);
    63     SkDebugf("%*s<dump script=\"%s\" answer=\" ", SkDisplayList::fIndent, "", script.c_str());
    64     if (success == false) {
    65         SkDebugf("INVALID\" />\n");
    66         return false;
    67     }
    68     switch (value.fType) {
    69         case SkType_Float:
    70             SkDebugf("%g\" />\n", SkScalarToFloat(value.fOperand.fScalar));
    71             break;
    72         case SkType_Int:
    73             SkDebugf("%d\" />\n", value.fOperand.fS32);
    74             break;
    75         case SkType_String:
    76             SkDebugf("%s\" />\n", value.fOperand.fString->c_str());
    77             break;
    78         default:
    79             return false;
    80     }
    81     return true;
    82 }
    84 bool SkDump::hasEnable() const {
    85     return true;
    86 }
    88 void SkDump::GetEnumString(SkDisplayTypes type, int index, SkString* result) {
    89     int badEnum = index;
    90     const SkDisplayEnumMap& map = SkAnimatorScript::GetEnumValues(type);
    91     const char* str  = map.fValues;
    92     while (--index >= 0) {
    93         str = strchr(str, '|');
    94         if (str == NULL) {
    95             result->reset();
    96             result->appendS32(badEnum);
    97             return;
    98         }
    99         str += 1;
   100     }
   101     const char* end = strchr(str, '|');
   102     if (end == NULL)
   103         end = str + strlen(str);
   104     result->set(str, end - str);
   105 }
   107 #else
   109 // in the release version, <dump> is allowed, and its attributes are defined, but
   110 // are not stored and have no effect
   112 #if SK_USE_CONDENSED_INFO == 0
   114 enum SkDump_Properties {
   115     SK_PROPERTY(displayList),
   116     SK_PROPERTY(eventList),
   117     SK_PROPERTY(events),
   118     SK_PROPERTY(groups),
   119     SK_PROPERTY(name),
   120     SK_PROPERTY(posts),
   121     SK_PROPERTY(script)
   122 };
   124 const SkMemberInfo SkDump::fInfo[] = {
   125     SK_MEMBER_PROPERTY(displayList, Boolean),
   126     SK_MEMBER_PROPERTY(eventList, Boolean),
   127     SK_MEMBER_PROPERTY(events, Boolean),
   128     SK_MEMBER_PROPERTY(groups, Boolean),
   129     SK_MEMBER_PROPERTY(name, String),
   130     SK_MEMBER_PROPERTY(posts, Boolean),
   131     SK_MEMBER_PROPERTY(script, String)
   132 };
   134 #endif
   136 DEFINE_GET_MEMBER(SkDump);
   138 bool SkDump::enable(SkAnimateMaker&) {
   139     return true;
   140 }
   142 bool SkDump::hasEnable() const {
   143     return true;
   144 }
   146 bool SkDump::setProperty(int index, SkScriptValue&) {
   147     return index <= SK_PROPERTY(posts);
   148 }
   150 #endif

mercurial