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 2006 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 */
8 #ifndef SkCoreBlitters_DEFINED
9 #define SkCoreBlitters_DEFINED
11 #include "SkBitmapProcShader.h"
12 #include "SkBlitter.h"
13 #include "SkBlitRow.h"
14 #include "SkShader.h"
15 #include "SkSmallAllocator.h"
17 class SkRasterBlitter : public SkBlitter {
18 public:
19 SkRasterBlitter(const SkBitmap& device) : fDevice(device) {}
21 protected:
22 const SkBitmap& fDevice;
24 private:
25 typedef SkBlitter INHERITED;
26 };
28 class SkShaderBlitter : public SkRasterBlitter {
29 public:
30 SkShaderBlitter(const SkBitmap& device, const SkPaint& paint);
31 virtual ~SkShaderBlitter();
33 protected:
34 uint32_t fShaderFlags;
35 SkShader* fShader;
37 private:
38 // illegal
39 SkShaderBlitter& operator=(const SkShaderBlitter&);
41 typedef SkRasterBlitter INHERITED;
42 };
44 ///////////////////////////////////////////////////////////////////////////////
46 class SkA8_Coverage_Blitter : public SkRasterBlitter {
47 public:
48 SkA8_Coverage_Blitter(const SkBitmap& device, const SkPaint& paint);
49 virtual void blitH(int x, int y, int width) SK_OVERRIDE;
50 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) SK_OVERRIDE;
51 virtual void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE;
52 virtual void blitRect(int x, int y, int width, int height) SK_OVERRIDE;
53 virtual void blitMask(const SkMask&, const SkIRect&) SK_OVERRIDE;
54 virtual const SkBitmap* justAnOpaqueColor(uint32_t*) SK_OVERRIDE;
55 };
57 class SkA8_Blitter : public SkRasterBlitter {
58 public:
59 SkA8_Blitter(const SkBitmap& device, const SkPaint& paint);
60 virtual void blitH(int x, int y, int width);
61 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
62 virtual void blitV(int x, int y, int height, SkAlpha alpha);
63 virtual void blitRect(int x, int y, int width, int height);
64 virtual void blitMask(const SkMask&, const SkIRect&);
65 virtual const SkBitmap* justAnOpaqueColor(uint32_t*);
67 private:
68 unsigned fSrcA;
70 // illegal
71 SkA8_Blitter& operator=(const SkA8_Blitter&);
73 typedef SkRasterBlitter INHERITED;
74 };
76 class SkA8_Shader_Blitter : public SkShaderBlitter {
77 public:
78 SkA8_Shader_Blitter(const SkBitmap& device, const SkPaint& paint);
79 virtual ~SkA8_Shader_Blitter();
80 virtual void blitH(int x, int y, int width);
81 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
82 virtual void blitMask(const SkMask&, const SkIRect&);
84 private:
85 SkXfermode* fXfermode;
86 SkPMColor* fBuffer;
87 uint8_t* fAAExpand;
89 // illegal
90 SkA8_Shader_Blitter& operator=(const SkA8_Shader_Blitter&);
92 typedef SkShaderBlitter INHERITED;
93 };
95 ////////////////////////////////////////////////////////////////
97 class SkARGB32_Blitter : public SkRasterBlitter {
98 public:
99 SkARGB32_Blitter(const SkBitmap& device, const SkPaint& paint);
100 virtual void blitH(int x, int y, int width);
101 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
102 virtual void blitV(int x, int y, int height, SkAlpha alpha);
103 virtual void blitRect(int x, int y, int width, int height);
104 virtual void blitMask(const SkMask&, const SkIRect&);
105 virtual const SkBitmap* justAnOpaqueColor(uint32_t*);
107 protected:
108 SkColor fColor;
109 SkPMColor fPMColor;
110 SkBlitRow::ColorProc fColor32Proc;
111 SkBlitRow::ColorRectProc fColorRect32Proc;
113 private:
114 unsigned fSrcA, fSrcR, fSrcG, fSrcB;
116 // illegal
117 SkARGB32_Blitter& operator=(const SkARGB32_Blitter&);
119 typedef SkRasterBlitter INHERITED;
120 };
122 class SkARGB32_Opaque_Blitter : public SkARGB32_Blitter {
123 public:
124 SkARGB32_Opaque_Blitter(const SkBitmap& device, const SkPaint& paint)
125 : INHERITED(device, paint) { SkASSERT(paint.getAlpha() == 0xFF); }
126 virtual void blitMask(const SkMask&, const SkIRect&);
128 private:
129 typedef SkARGB32_Blitter INHERITED;
130 };
132 class SkARGB32_Black_Blitter : public SkARGB32_Opaque_Blitter {
133 public:
134 SkARGB32_Black_Blitter(const SkBitmap& device, const SkPaint& paint)
135 : INHERITED(device, paint) {}
136 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
138 private:
139 typedef SkARGB32_Opaque_Blitter INHERITED;
140 };
142 class SkARGB32_Shader_Blitter : public SkShaderBlitter {
143 public:
144 SkARGB32_Shader_Blitter(const SkBitmap& device, const SkPaint& paint);
145 virtual ~SkARGB32_Shader_Blitter();
146 virtual void blitH(int x, int y, int width) SK_OVERRIDE;
147 virtual void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE;
148 virtual void blitRect(int x, int y, int width, int height) SK_OVERRIDE;
149 virtual void blitAntiH(int x, int y, const SkAlpha[], const int16_t[]) SK_OVERRIDE;
150 virtual void blitMask(const SkMask&, const SkIRect&) SK_OVERRIDE;
152 private:
153 SkXfermode* fXfermode;
154 SkPMColor* fBuffer;
155 SkBlitRow::Proc32 fProc32;
156 SkBlitRow::Proc32 fProc32Blend;
157 bool fShadeDirectlyIntoDevice;
158 bool fConstInY;
160 // illegal
161 SkARGB32_Shader_Blitter& operator=(const SkARGB32_Shader_Blitter&);
163 typedef SkShaderBlitter INHERITED;
164 };
166 ///////////////////////////////////////////////////////////////////////////////
168 /* These return the correct subclass of blitter for their device config.
170 Currently, they make the following assumptions about the state of the
171 paint:
173 1. If there is an xfermode, there will also be a shader
174 2. If there is a colorfilter, there will be a shader that itself handles
175 calling the filter, so the blitter can always ignore the colorfilter obj
177 These pre-conditions must be handled by the caller, in our case
178 SkBlitter::Choose(...)
179 */
181 SkBlitter* SkBlitter_ChooseD565(const SkBitmap& device, const SkPaint& paint,
182 SkTBlitterAllocator* allocator);
184 #endif