gfx/skia/trunk/include/ports/SkFontConfigInterface.h

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.

     1 /*
     2  * Copyright 2013 Google Inc.
     3  *
     4  * Use of this source code is governed by a BSD-style license that can be
     5  * found in the LICENSE file.
     6  */
     8 #ifndef SkFontConfigInterface_DEFINED
     9 #define SkFontConfigInterface_DEFINED
    11 #include "SkDataTable.h"
    12 #include "SkFontStyle.h"
    13 #include "SkRefCnt.h"
    14 #include "SkTArray.h"
    15 #include "SkTypeface.h"
    17 /**
    18  *  \class SkFontConfigInterface
    19  *
    20  *  Provides SkFontHost clients with access to fontconfig services. They will
    21  *  access the global instance found in RefGlobal().
    22  */
    23 class SK_API SkFontConfigInterface : public SkRefCnt {
    24 public:
    25     SK_DECLARE_INST_COUNT(SkFontConfigInterface)
    27     /**
    28      *  Returns the global SkFontConfigInterface instance, and if it is not
    29      *  NULL, calls ref() on it. The caller must balance this with a call to
    30      *  unref().
    31      */
    32     static SkFontConfigInterface* RefGlobal();
    34     /**
    35      *  Replace the current global instance with the specified one, safely
    36      *  ref'ing the new instance, and unref'ing the previous. Returns its
    37      *  parameter (the new global instance).
    38      */
    39     static SkFontConfigInterface* SetGlobal(SkFontConfigInterface*);
    41     /**
    42      *  This should be treated as private to the impl of SkFontConfigInterface.
    43      *  Callers should not change or expect any particular values. It is meant
    44      *  to be a union of possible storage types to aid the impl.
    45      */
    46     struct FontIdentity {
    47         FontIdentity() : fID(0), fTTCIndex(0) {}
    49         bool operator==(const FontIdentity& other) const {
    50             return fID == other.fID &&
    51                    fTTCIndex == other.fTTCIndex &&
    52                    fString == other.fString;
    53         }
    54         bool operator!=(const FontIdentity& other) const {
    55             return !(*this == other);
    56         }
    58         uint32_t    fID;
    59         int32_t     fTTCIndex;
    60         SkString    fString;
    61         SkFontStyle fStyle;
    63         // If buffer is NULL, just return the number of bytes that would have
    64         // been written. Will pad contents to a multiple of 4.
    65         size_t writeToMemory(void* buffer = NULL) const;
    67         // Recreate from a flattened buffer, returning the number of bytes read.
    68         size_t readFromMemory(const void* buffer, size_t length);
    69     };
    71     /**
    72      *  Given a familyName and style, find the best match.
    73      *
    74      *  If a match is found, return true and set its outFontIdentifier.
    75      *      If outFamilyName is not null, assign the found familyName to it
    76      *          (which may differ from the requested familyName).
    77      *      If outStyle is not null, assign the found style to it
    78      *          (which may differ from the requested style).
    79      *
    80      *  If a match is not found, return false, and ignore all out parameters.
    81      */
    82     virtual bool matchFamilyName(const char familyName[],
    83                                  SkTypeface::Style requested,
    84                                  FontIdentity* outFontIdentifier,
    85                                  SkString* outFamilyName,
    86                                  SkTypeface::Style* outStyle) = 0;
    88     /**
    89      *  Given a FontRef, open a stream to access its data, or return null
    90      *  if the FontRef's data is not available. The caller is responsible for
    91      *  calling stream->unref() when it is done accessing the data.
    92      */
    93     virtual SkStream* openStream(const FontIdentity&) = 0;
    95     /**
    96      *  Return a singleton instance of a direct subclass that calls into
    97      *  libfontconfig. This does not affect the refcnt of the returned instance.
    98      */
    99     static SkFontConfigInterface* GetSingletonDirectInterface();
   101     // New APIS, which have default impls for now (which do nothing)
   103     virtual SkDataTable* getFamilyNames() { return SkDataTable::NewEmpty(); }
   104     virtual bool matchFamilySet(const char inFamilyName[],
   105                                 SkString* outFamilyName,
   106                                 SkTArray<FontIdentity>*) {
   107         return false;
   108     }
   109     typedef SkRefCnt INHERITED;
   110 };
   112 #endif

mercurial