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 */
10 #ifndef SkAnimateMaker_DEFINED
11 #define SkAnimateMaker_DEFINED
13 // #define SK_DEBUG_ANIMATION_TIMING
15 #include "SkAnimator.h"
16 #include "SkBitmap.h"
17 #include "SkIntArray.h"
18 #include "SkDisplayEvents.h"
19 #include "SkDisplayList.h"
20 #include "SkDisplayScreenplay.h"
21 #include "SkDisplayXMLParser.h"
22 #include "SkScript.h"
23 #include "SkString.h"
24 #include "SkTDict.h"
26 // not sure where this little helper macro should go
29 class SkActive;
30 class SkAnimate;
31 class SkCanvas;
32 class SkDisplayable;
33 class SkDrawable;
34 class SkDump;
35 class SkEvent;
36 class SkEventSink;
37 class SkExtras;
38 class SkGroup;
39 class SkPaint;
40 class SkStream;
42 class SkAnimateMaker {
43 public:
44 SkAnimateMaker(SkAnimator* animator, SkCanvas* canvas, SkPaint* paint);
45 ~SkAnimateMaker();
46 void appendActive(SkActive* );
47 void childrenAdd(SkDisplayable* child) { *fChildren.append() = child; }
48 void clearExtraPropertyCallBack(SkDisplayTypes type);
49 bool computeID(SkDisplayable* displayable, SkDisplayable* parent, SkString* newID);
50 SkDisplayable* createInstance(const char name[], size_t len);
51 bool decodeStream(SkStream* stream);
52 bool decodeURI(const char uri[]);
53 void delayEnable(SkApply* apply, SkMSec time);
54 void doDelayedEvent();
55 bool doEvent(const SkEvent& event);
56 #ifdef SK_DUMP_ENABLED
57 void dump(const char* match);
58 #endif
59 int dynamicProperty(SkString& nameStr, SkDisplayable** );
60 bool find(const char* str, SkDisplayable** displayablePtr) const {
61 return fIDs.find(str, displayablePtr);
62 }
63 bool find(const char* str, size_t len, SkDisplayable** displayablePtr) const {
64 return fIDs.find(str, len, displayablePtr);
65 }
66 bool findKey(SkDisplayable* displayable, const char** string) const {
67 return fIDs.findKey(displayable, string);
68 }
69 // bool find(SkString& string, SkDisplayable** displayablePtr) {
70 // return fIDs.find(string.c_str(), displayablePtr);
71 // }
72 SkAnimator* getAnimator() { return fAnimator; }
73 SkMSec getAppTime() const; // call caller to get current time
74 #ifdef SK_DEBUG
75 SkAnimator* getRoot();
76 #endif
77 SkXMLParserError::ErrorCode getErrorCode() const { return fError.getErrorCode(); }
78 SkMSec getInTime() { return fDisplayList.getTime(); }
79 int getNativeCode() const { return fError.getNativeCode(); }
80 bool hasError() { return fError.hasError(); }
81 void helperAdd(SkDisplayable* trackMe);
82 void helperRemove(SkDisplayable* alreadyTracked);
83 void idsSet(const char* attrValue, size_t len, SkDisplayable* displayable) {
84 fIDs.set(attrValue, len, displayable); }
85 // void loadMovies();
86 void notifyInval();
87 void notifyInvalTime(SkMSec time);
88 void postOnEnd(SkAnimateBase* animate, SkMSec end);
89 void removeActive(SkActive* );
90 void reset();
91 bool resolveID(SkDisplayable* displayable, SkDisplayable* original);
92 void setEnableTime(SkMSec appTime, SkMSec expectedTime);
93 void setErrorCode(SkXMLParserError::ErrorCode err) { if (fError.hasError() == false) fError.INHERITED::setCode(err); }
94 void setErrorCode(SkDisplayXMLParserError::ErrorCode err) { if (fError.hasError() == false) fError.setCode(err); }
95 void setErrorNoun(const SkString& str) { if (fError.hasError() == false) fError.setNoun(str); }
96 void setErrorString();
97 void setExtraPropertyCallBack(SkDisplayTypes type, SkScriptEngine::_propertyCallBack , void* userStorage);
98 void setID(SkDisplayable* displayable, const SkString& newID);
99 void setInnerError(SkAnimateMaker* maker, const SkString& str) { fError.setInnerError(maker, str); }
100 void setScriptError(const SkScriptEngine& );
101 #ifdef SK_DEBUG
102 void validate() { fDisplayList.validate(); }
103 #else
104 void validate() {}
105 #endif
106 SkDisplayEvent* fActiveEvent;
107 SkMSec fAdjustedStart;
108 SkCanvas* fCanvas;
109 SkMSec fEnableTime;
110 int fEndDepth; // passed parameter to onEndElement
111 SkEvents fEvents;
112 SkDisplayList fDisplayList;
113 SkEventSinkID fHostEventSinkID;
114 SkMSec fMinimumInterval;
115 SkPaint* fPaint;
116 SkAnimateMaker* fParentMaker;
117 SkString fPrefix;
118 SkDisplayScreenplay fScreenplay;
119 const SkAnimator::Timeline* fTimeline;
120 SkBool8 fInInclude;
121 SkBool8 fInMovie;
122 SkBool8 fFirstScriptError;
123 #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING
124 SkMSec fDebugTimeBase;
125 #endif
126 #ifdef SK_DUMP_ENABLED
127 SkString fDumpAnimated;
128 SkBool8 fDumpEvents;
129 SkBool8 fDumpGConditions;
130 SkBool8 fDumpPosts;
131 #endif
132 private:
133 void deleteMembers();
134 static bool GetStep(const char* token, size_t len, void* stepPtr, SkScriptValue* );
135 SkAnimateMaker& operator=(SkAnimateMaker& );
136 SkTDDisplayableArray fChildren;
137 SkTDDisplayableArray fDelayed; // SkApply that contain delayed enable events
138 SkDisplayXMLParserError fError;
139 SkString fErrorString;
140 SkTDArray<SkExtras*> fExtras;
141 SkString fFileName;
142 SkTDDisplayableArray fHelpers; // helper displayables
143 SkBool8 fLoaded;
144 SkTDDisplayableArray fMovies;
145 SkTDict<SkDisplayable*> fIDs;
146 SkAnimator* fAnimator;
147 friend class SkAdd;
148 friend class SkAnimateBase;
149 friend class SkDisplayXMLParser;
150 friend class SkAnimator;
151 friend class SkAnimatorScript;
152 friend class SkApply;
153 friend class SkDisplayMovie;
154 friend class SkDisplayType;
155 friend class SkEvents;
156 friend class SkGroup;
157 friend struct SkMemberInfo;
158 };
160 #endif // SkAnimateMaker_DEFINED