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 #ifndef SkXfermode_proccoeff_DEFINED
2 #define SkXfermode_proccoeff_DEFINED
4 #include "SkXfermode.h"
5 #include "SkReadBuffer.h"
6 #include "SkWriteBuffer.h"
8 struct ProcCoeff {
9 SkXfermodeProc fProc;
10 SkXfermode::Coeff fSC;
11 SkXfermode::Coeff fDC;
12 };
14 #define CANNOT_USE_COEFF SkXfermode::Coeff(-1)
16 class SkProcCoeffXfermode : public SkProcXfermode {
17 public:
18 static SkProcCoeffXfermode* Create(const ProcCoeff& rec, Mode mode) {
19 return SkNEW_ARGS(SkProcCoeffXfermode, (rec, mode));
20 }
22 virtual bool asMode(Mode* mode) const SK_OVERRIDE;
24 virtual bool asCoeff(Coeff* sc, Coeff* dc) const SK_OVERRIDE;
26 #if SK_SUPPORT_GPU
27 virtual bool asNewEffect(GrEffectRef** effect,
28 GrTexture* background) const SK_OVERRIDE;
29 #endif
31 SK_TO_STRING_OVERRIDE()
32 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcCoeffXfermode)
34 protected:
35 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode)
36 : INHERITED(rec.fProc) {
37 fMode = mode;
38 // these may be valid, or may be CANNOT_USE_COEFF
39 fSrcCoeff = rec.fSC;
40 fDstCoeff = rec.fDC;
41 }
43 SkProcCoeffXfermode(SkReadBuffer& buffer);
45 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
47 Mode getMode() const {
48 return fMode;
49 }
51 private:
52 Mode fMode;
53 Coeff fSrcCoeff, fDstCoeff;
55 typedef SkProcXfermode INHERITED;
56 };
58 #endif // #ifndef SkXfermode_proccoeff_DEFINED