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.
2 /*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
11 class SkSPRITE_CLASSNAME : public SkSpriteBlitter {
12 public:
13 SkSPRITE_CLASSNAME(const SkBitmap& source SkSPRITE_ARGS)
14 : SkSpriteBlitter(source) {
15 SkSPRITE_INIT
16 }
18 virtual void blitRect(int x, int y, int width, int height) {
19 SkASSERT(width > 0 && height > 0);
20 int srcX = x - fLeft;
21 int srcY = y - fTop;
22 SkSPRITE_DST_TYPE* SK_RESTRICT dst =fDevice->SkSPRITE_DST_GETADDR(x, y);
23 const SkSPRITE_SRC_TYPE* SK_RESTRICT src =
24 fSource->SkSPRITE_SRC_GETADDR(srcX, srcY);
25 size_t dstRB = fDevice->rowBytes();
26 size_t srcRB = fSource->rowBytes();
28 SkDEBUGCODE((void)fDevice->SkSPRITE_DST_GETADDR(x + width - 1, y + height - 1);)
29 SkDEBUGCODE((void)fSource->SkSPRITE_SRC_GETADDR(srcX + width - 1, srcY + height - 1);)
31 SkSPRITE_PREAMBLE((*fSource), srcX, srcY);
33 do {
34 SkSPRITE_DST_TYPE* d = dst;
35 const SkSPRITE_SRC_TYPE* s = src;
36 #ifdef SkSPRITE_BEGIN_ROW
37 SkSPRITE_BEGIN_ROW
38 #endif
40 #ifdef SkSPRITE_ROW_PROC
41 SkSPRITE_ROW_PROC(d, s, width, x, y);
42 #else
43 int w = width;
44 do {
45 SkSPRITE_SRC_TYPE sc = *s++;
46 SkSPRITE_BLIT_PIXEL(d, sc);
47 d += 1;
48 } while (--w != 0);
49 #endif
50 dst = (SkSPRITE_DST_TYPE* SK_RESTRICT)((char*)dst + dstRB);
51 src = (const SkSPRITE_SRC_TYPE* SK_RESTRICT)
52 ((const char*)src + srcRB);
53 SkSPRITE_NEXT_ROW
54 #ifdef SkSPRITE_ROW_PROC
55 y += 1;
56 #endif
57 } while (--height != 0);
59 SkSPRITE_POSTAMBLE((*fSource));
60 }
62 private:
63 SkSPRITE_FIELDS
64 };
66 #undef SkSPRITE_BLIT_PIXEL
67 #undef SkSPRITE_CLASSNAME
68 #undef SkSPRITE_DST_TYPE
69 #undef SkSPRITE_SRC_TYPE
70 #undef SkSPRITE_DST_GETADDR
71 #undef SkSPRITE_SRC_GETADDR
72 #undef SkSPRITE_PREAMBLE
73 #undef SkSPRITE_POSTAMBLE
74 #undef SkSPRITE_ARGS
75 #undef SkSPRITE_FIELDS
76 #undef SkSPRITE_INIT
77 #undef SkSPRITE_NEXT_ROW
78 #undef SkSPRITE_BEGIN_ROW
80 #ifdef SkSPRITE_ROW_PROC
81 #undef SkSPRITE_ROW_PROC
82 #endif