gfx/skia/trunk/src/utils/win/SkDWriteFontFileStream.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 2012 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 SkDWriteFontFileStream_DEFINED
     9 #define SkDWriteFontFileStream_DEFINED
    11 #include "SkTypes.h"
    13 #include "SkStream.h"
    14 #include "SkTScopedComPtr.h"
    16 #include <dwrite.h>
    18 /**
    19  *  An SkStream backed by an IDWriteFontFileStream.
    20  *  This allows Skia code to read an IDWriteFontFileStream.
    21  */
    22 class SkDWriteFontFileStream : public SkStreamMemory {
    23 public:
    24     explicit SkDWriteFontFileStream(IDWriteFontFileStream* fontFileStream);
    25     virtual ~SkDWriteFontFileStream();
    27     virtual size_t read(void* buffer, size_t size) SK_OVERRIDE;
    28     virtual bool isAtEnd() const SK_OVERRIDE;
    29     virtual bool rewind() SK_OVERRIDE;
    30     virtual SkDWriteFontFileStream* duplicate() const SK_OVERRIDE;
    31     virtual size_t getPosition() const SK_OVERRIDE;
    32     virtual bool seek(size_t position) SK_OVERRIDE;
    33     virtual bool move(long offset) SK_OVERRIDE;
    34     virtual SkDWriteFontFileStream* fork() const SK_OVERRIDE;
    35     virtual size_t getLength() const SK_OVERRIDE;
    36     virtual const void* getMemoryBase() SK_OVERRIDE;
    38 private:
    39     SkTScopedComPtr<IDWriteFontFileStream> fFontFileStream;
    40     size_t fPos;
    41     const void* fLockedMemory;
    42     void* fFragmentLock;
    43 };
    45 /**
    46  *  An IDWriteFontFileStream backed by an SkStream.
    47  *  This allows DirectWrite to read an SkStream.
    48  */
    49 class SkDWriteFontFileStreamWrapper : public IDWriteFontFileStream {
    50 public:
    51     // IUnknown methods
    52     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void** ppvObject);
    53     virtual ULONG STDMETHODCALLTYPE AddRef();
    54     virtual ULONG STDMETHODCALLTYPE Release();
    56     // IDWriteFontFileStream methods
    57     virtual HRESULT STDMETHODCALLTYPE ReadFileFragment(
    58         void const** fragmentStart,
    59         UINT64 fileOffset,
    60         UINT64 fragmentSize,
    61         void** fragmentContext);
    63     virtual void STDMETHODCALLTYPE ReleaseFileFragment(void* fragmentContext);
    64     virtual HRESULT STDMETHODCALLTYPE GetFileSize(UINT64* fileSize);
    65     virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(UINT64* lastWriteTime);
    67     static HRESULT Create(SkStream* stream, SkDWriteFontFileStreamWrapper** streamFontFileStream);
    69 private:
    70     explicit SkDWriteFontFileStreamWrapper(SkStream* stream);
    72     ULONG fRefCount;
    73     SkAutoTUnref<SkStream> fStream;
    74     SkMutex fStreamMutex;
    75 };
    76 #endif

mercurial