gfx/skia/trunk/include/utils/win/SkIStream.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.

     2 /*
     3  * Copyright 2011 Google Inc.
     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 #ifndef SkIStream_DEFINED
    11 #define SkIStream_DEFINED
    13 #define WIN32_LEAN_AND_MEAN
    14 #include <windows.h>
    15 #include <ole2.h>
    17 class SkStream;
    18 class SkWStream;
    20 /**
    21  * A bare IStream implementation which properly reference counts
    22  * but returns E_NOTIMPL for all ISequentialStream and IStream methods.
    23  */
    24 class SkBaseIStream : public IStream {
    25 private:
    26     LONG _refcount;
    28 protected:
    29     explicit SkBaseIStream();
    30     virtual ~SkBaseIStream();
    32 public:
    33     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid
    34                                                    , void ** ppvObject);
    35     virtual ULONG STDMETHODCALLTYPE AddRef(void);
    36     virtual ULONG STDMETHODCALLTYPE Release(void);
    38     // ISequentialStream Interface
    39 public:
    40     virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead);
    42     virtual HRESULT STDMETHODCALLTYPE Write(void const* pv
    43                                           , ULONG cb
    44                                           , ULONG* pcbWritten);
    46     // IStream Interface
    47 public:
    48     virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER);
    50     virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream*
    51                                            , ULARGE_INTEGER
    52                                            , ULARGE_INTEGER*
    53                                            , ULARGE_INTEGER*);
    55     virtual HRESULT STDMETHODCALLTYPE Commit(DWORD);
    57     virtual HRESULT STDMETHODCALLTYPE Revert(void);
    59     virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER
    60                                                , ULARGE_INTEGER
    61                                                , DWORD);
    63     virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER
    64                                                  , ULARGE_INTEGER
    65                                                  , DWORD);
    67     virtual HRESULT STDMETHODCALLTYPE Clone(IStream **);
    69     virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove
    70                                          , DWORD dwOrigin
    71                                          , ULARGE_INTEGER* lpNewFilePointer);
    73     virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg
    74                                          , DWORD grfStatFlag);
    75 };
    77 /**
    78  * A minimal read-only IStream implementation which wraps an SkIStream.
    79  */
    80 class SkIStream : public SkBaseIStream {
    81 private:
    82     SkStream *fSkStream;
    83     bool fUnrefOnRelease;
    84     ULARGE_INTEGER fLocation;
    86     SkIStream(SkStream* stream, bool unrefOnRelease);
    87     virtual ~SkIStream();
    89 public:
    90     HRESULT static CreateFromSkStream(SkStream* stream
    91                                     , bool unrefOnRelease
    92                                     , IStream ** ppStream);
    94     virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead);
    96     virtual HRESULT STDMETHODCALLTYPE Write(void const* pv
    97                                           , ULONG cb
    98                                           , ULONG* pcbWritten);
   100     virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove
   101                                          , DWORD dwOrigin
   102                                          , ULARGE_INTEGER* lpNewFilePointer);
   104     virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg
   105                                          , DWORD grfStatFlag);
   106 };
   108 /**
   109  * A minimal write-only IStream implementation which wraps an SkWIStream.
   110  */
   111 class SkWIStream : public SkBaseIStream {
   112 private:
   113     SkWStream *fSkWStream;
   115     SkWIStream(SkWStream* stream);
   116     virtual ~SkWIStream();
   118 public:
   119     HRESULT static CreateFromSkWStream(SkWStream* stream, IStream ** ppStream);
   121     virtual HRESULT STDMETHODCALLTYPE Write(void const* pv
   122                                           , ULONG cb
   123                                           , ULONG* pcbWritten);
   125     virtual HRESULT STDMETHODCALLTYPE Commit(DWORD);
   127     virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg
   128                                          , DWORD grfStatFlag);
   129 };
   131 #endif

mercurial