Sat, 03 Jan 2015 20:18:00 +0100
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 2008 The Android Open Source Project
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
9 #ifndef SkMallocPixelRef_DEFINED
10 #define SkMallocPixelRef_DEFINED
12 #include "SkPixelRef.h"
14 /** We explicitly use the same allocator for our pixels that SkMask does,
15 so that we can freely assign memory allocated by one class to the other.
16 */
17 class SK_API SkMallocPixelRef : public SkPixelRef {
18 public:
19 SK_DECLARE_INST_COUNT(SkMallocPixelRef)
20 /**
21 * Return a new SkMallocPixelRef with the provided pixel storage, rowBytes,
22 * and optional colortable. The caller is responsible for managing the
23 * lifetime of the pixel storage buffer, as this pixelref will not try
24 * to delete it.
25 *
26 * The pixelref will ref() the colortable (if not NULL).
27 *
28 * Returns NULL on failure.
29 */
30 static SkMallocPixelRef* NewDirect(const SkImageInfo&, void* addr,
31 size_t rowBytes, SkColorTable*);
33 /**
34 * Return a new SkMallocPixelRef, automatically allocating storage for the
35 * pixels. If rowBytes are 0, an optimal value will be chosen automatically.
36 * If rowBytes is > 0, then it will be respected, or NULL will be returned
37 * if rowBytes is invalid for the specified info.
38 *
39 * This pixelref will ref() the specified colortable (if not NULL).
40 *
41 * Returns NULL on failure.
42 */
43 static SkMallocPixelRef* NewAllocate(const SkImageInfo& info,
44 size_t rowBytes, SkColorTable*);
46 /**
47 * Return a new SkMallocPixelRef with the provided pixel storage,
48 * rowBytes, and optional colortable. On destruction, ReleaseProc
49 * will be called.
50 *
51 * This pixelref will ref() the specified colortable (if not NULL).
52 *
53 * Returns NULL on failure.
54 */
55 typedef void (*ReleaseProc)(void* addr, void* context);
56 static SkMallocPixelRef* NewWithProc(const SkImageInfo& info,
57 size_t rowBytes, SkColorTable*,
58 void* addr, ReleaseProc proc,
59 void* context);
61 /**
62 * Return a new SkMallocPixelRef that will use the provided
63 * SkData, rowBytes, and optional colortable as pixel storage.
64 * The SkData will be ref()ed and on destruction of the PielRef,
65 * the SkData will be unref()ed.
66 *
67 * @param offset (in bytes) into the provided SkData that the
68 * first pixel is located at.
69 *
70 * This pixelref will ref() the specified colortable (if not NULL).
71 *
72 * Returns NULL on failure.
73 */
74 static SkMallocPixelRef* NewWithData(const SkImageInfo& info,
75 size_t rowBytes,
76 SkColorTable* ctable,
77 SkData* data,
78 size_t offset = 0);
80 void* getAddr() const { return fStorage; }
82 class PRFactory : public SkPixelRefFactory {
83 public:
84 virtual SkPixelRef* create(const SkImageInfo&,
85 SkColorTable*) SK_OVERRIDE;
86 };
88 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMallocPixelRef)
90 protected:
91 // The ownPixels version of this constructor is deprecated.
92 SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*,
93 bool ownPixels);
94 SkMallocPixelRef(SkReadBuffer& buffer);
95 virtual ~SkMallocPixelRef();
97 virtual bool onNewLockPixels(LockRec*) SK_OVERRIDE;
98 virtual void onUnlockPixels() SK_OVERRIDE;
99 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
100 virtual size_t getAllocatedSizeInBytes() const SK_OVERRIDE;
102 private:
103 void* fStorage;
104 SkColorTable* fCTable;
105 size_t fRB;
106 ReleaseProc fReleaseProc;
107 void* fReleaseProcContext;
109 SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*,
110 ReleaseProc proc, void* context);
112 typedef SkPixelRef INHERITED;
113 };
116 #endif