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 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef nsRDFXMLSerializer_h__
8 #define nsRDFXMLSerializer_h__
10 #include "nsIRDFLiteral.h"
11 #include "nsIRDFXMLSerializer.h"
12 #include "nsIRDFXMLSource.h"
13 #include "nsNameSpaceMap.h"
14 #include "nsXPIDLString.h"
16 #include "nsDataHashtable.h"
17 #include "rdfITripleVisitor.h"
19 class nsString;
20 class nsIOutputStream;
21 class nsIRDFContainerUtils;
23 /**
24 * A helper class that can serialize RDF/XML from a
25 * datasource. Implements both nsIRDFXMLSerializer and
26 * nsIRDFXMLSource.
27 */
28 class nsRDFXMLSerializer : public nsIRDFXMLSerializer,
29 public nsIRDFXMLSource
30 {
31 public:
32 static nsresult
33 Create(nsISupports* aOuter, REFNSIID aIID, void** aResult);
35 NS_DECL_ISUPPORTS
36 NS_DECL_NSIRDFXMLSERIALIZER
37 NS_DECL_NSIRDFXMLSOURCE
39 protected:
40 nsRDFXMLSerializer();
41 virtual ~nsRDFXMLSerializer();
43 // Implementation methods
44 nsresult
45 RegisterQName(nsIRDFResource* aResource);
46 nsresult
47 GetQName(nsIRDFResource* aResource, nsCString& aQName);
48 already_AddRefed<nsIAtom>
49 EnsureNewPrefix();
51 nsresult
52 SerializeInlineAssertion(nsIOutputStream* aStream,
53 nsIRDFResource* aResource,
54 nsIRDFResource* aProperty,
55 nsIRDFLiteral* aValue);
57 nsresult
58 SerializeChildAssertion(nsIOutputStream* aStream,
59 nsIRDFResource* aResource,
60 nsIRDFResource* aProperty,
61 nsIRDFNode* aValue);
63 nsresult
64 SerializeProperty(nsIOutputStream* aStream,
65 nsIRDFResource* aResource,
66 nsIRDFResource* aProperty,
67 bool aInline,
68 int32_t* aSkipped);
70 bool
71 IsContainerProperty(nsIRDFResource* aProperty);
73 nsresult
74 SerializeDescription(nsIOutputStream* aStream,
75 nsIRDFResource* aResource);
77 nsresult
78 SerializeMember(nsIOutputStream* aStream,
79 nsIRDFResource* aContainer,
80 nsIRDFNode* aMember);
82 nsresult
83 SerializeContainer(nsIOutputStream* aStream,
84 nsIRDFResource* aContainer);
86 nsresult
87 SerializePrologue(nsIOutputStream* aStream);
89 nsresult
90 SerializeEpilogue(nsIOutputStream* aStream);
92 nsresult
93 CollectNamespaces();
95 bool
96 IsA(nsIRDFDataSource* aDataSource, nsIRDFResource* aResource, nsIRDFResource* aType);
98 nsCOMPtr<nsIRDFDataSource> mDataSource;
99 nsNameSpaceMap mNameSpaces;
100 nsXPIDLCString mBaseURLSpec;
102 // hash mapping resources to utf8-encoded QNames
103 nsDataHashtable<nsISupportsHashKey, nsCString> mQNames;
104 friend class QNameCollector;
106 uint32_t mPrefixID;
108 static int32_t gRefCnt;
109 static nsIRDFResource* kRDF_instanceOf;
110 static nsIRDFResource* kRDF_type;
111 static nsIRDFResource* kRDF_nextVal;
112 static nsIRDFResource* kRDF_Bag;
113 static nsIRDFResource* kRDF_Seq;
114 static nsIRDFResource* kRDF_Alt;
115 static nsIRDFContainerUtils* gRDFC;
116 };
118 #endif // nsRDFXMLSerializer_h__