Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: Source/core/dom/Document.h

Issue 14839007: Devirtualize Document class type checking (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Try again Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/dom/Document.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
9 * Copyright (C) 2011 Google Inc. All rights reserved. 9 * Copyright (C) 2011 Google Inc. All rights reserved.
10 * 10 *
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 InvalidateOnForAttrChange, 184 InvalidateOnForAttrChange,
185 InvalidateForFormControls, 185 InvalidateForFormControls,
186 InvalidateOnHRefAttrChange, 186 InvalidateOnHRefAttrChange,
187 InvalidateOnItemAttrChange, 187 InvalidateOnItemAttrChange,
188 InvalidateOnAnyAttrChange, 188 InvalidateOnAnyAttrChange,
189 }; 189 };
190 const int numNodeListInvalidationTypes = InvalidateOnAnyAttrChange + 1; 190 const int numNodeListInvalidationTypes = InvalidateOnAnyAttrChange + 1;
191 191
192 typedef HashCountedSet<Node*> TouchEventTargetSet; 192 typedef HashCountedSet<Node*> TouchEventTargetSet;
193 193
194 enum DocumentClass {
195 DefaultDocumentClass = 0,
196 HTMLDocumentClass = 1,
197 XHTMLDocumentClass = 1 << 1,
198 ImageDocumentClass = 1 << 2,
199 PluginDocumentClass = 1 << 3,
200 MediaDocumentClass = 1 << 4,
201 SVGDocumentClass = 1 << 5,
202 };
203
194 class Document : public ContainerNode, public TreeScope, public ScriptExecutionC ontext { 204 class Document : public ContainerNode, public TreeScope, public ScriptExecutionC ontext {
195 public: 205 public:
196 static PassRefPtr<Document> create(Frame* frame, const KURL& url) 206 static PassRefPtr<Document> create(Frame* frame, const KURL& url)
197 { 207 {
198 return adoptRef(new Document(frame, url, false, false)); 208 return adoptRef(new Document(frame, url));
199 } 209 }
200 static PassRefPtr<Document> createXHTML(Frame* frame, const KURL& url) 210 static PassRefPtr<Document> createXHTML(Frame* frame, const KURL& url)
201 { 211 {
202 return adoptRef(new Document(frame, url, true, false)); 212 return adoptRef(new Document(frame, url, XHTMLDocumentClass));
203 } 213 }
204 virtual ~Document(); 214 virtual ~Document();
205 215
206 MediaQueryMatcher* mediaQueryMatcher(); 216 MediaQueryMatcher* mediaQueryMatcher();
207 217
208 using ContainerNode::ref; 218 using ContainerNode::ref;
209 using ContainerNode::deref; 219 using ContainerNode::deref;
210 220
211 Element* getElementById(const AtomicString& id) const; 221 Element* getElementById(const AtomicString& id) const;
212 222
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 PassRefPtr<HTMLCollection> applets(); 394 PassRefPtr<HTMLCollection> applets();
385 PassRefPtr<HTMLCollection> links(); 395 PassRefPtr<HTMLCollection> links();
386 PassRefPtr<HTMLCollection> forms(); 396 PassRefPtr<HTMLCollection> forms();
387 PassRefPtr<HTMLCollection> anchors(); 397 PassRefPtr<HTMLCollection> anchors();
388 PassRefPtr<HTMLCollection> scripts(); 398 PassRefPtr<HTMLCollection> scripts();
389 PassRefPtr<HTMLCollection> all(); 399 PassRefPtr<HTMLCollection> all();
390 400
391 PassRefPtr<HTMLCollection> windowNamedItems(const AtomicString& name); 401 PassRefPtr<HTMLCollection> windowNamedItems(const AtomicString& name);
392 PassRefPtr<HTMLCollection> documentNamedItems(const AtomicString& name); 402 PassRefPtr<HTMLCollection> documentNamedItems(const AtomicString& name);
393 403
394 // Other methods (not part of DOM) 404 bool isHTMLDocument() const { return m_documentClass & HTMLDocumentClass; }
395 bool isHTMLDocument() const { return m_isHTML; } 405 bool isXHTMLDocument() const { return m_documentClass & XHTMLDocumentClass; }
396 bool isXHTMLDocument() const { return m_isXHTML; } 406 bool isImageDocument() const { return m_documentClass & ImageDocumentClass; }
397 virtual bool isImageDocument() const { return false; } 407 bool isSVGDocument() const { return m_documentClass & SVGDocumentClass; }
408 bool isPluginDocument() const { return m_documentClass & PluginDocumentClass ; }
409 bool isMediaDocument() const { return m_documentClass & MediaDocumentClass; }
410
398 #if ENABLE(SVG) 411 #if ENABLE(SVG)
399 virtual bool isSVGDocument() const { return false; }
400 bool hasSVGRootNode() const; 412 bool hasSVGRootNode() const;
401 #else 413 #else
402 static bool isSVGDocument() { return false; }
403 static bool hasSVGRootNode() { return false; } 414 static bool hasSVGRootNode() { return false; }
404 #endif 415 #endif
405 virtual bool isPluginDocument() const { return false; } 416
406 virtual bool isMediaDocument() const { return false; }
407 virtual bool isFrameSet() const { return false; } 417 virtual bool isFrameSet() const { return false; }
408 418
409 bool isSrcdocDocument() const { return m_isSrcdocDocument; } 419 bool isSrcdocDocument() const { return m_isSrcdocDocument; }
410 420
411 StyleResolver* styleResolverIfExists() const { return m_styleResolver.get(); } 421 StyleResolver* styleResolverIfExists() const { return m_styleResolver.get(); }
412 422
413 bool isViewSource() const { return m_isViewSource; } 423 bool isViewSource() const { return m_isViewSource; }
414 void setIsViewSource(bool); 424 void setIsViewSource(bool);
415 425
416 bool sawElementsInKnownNamespaces() const { return m_sawElementsInKnownNames paces; } 426 bool sawElementsInKnownNamespaces() const { return m_sawElementsInKnownNames paces; }
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 1111
1102 void didAssociateFormControl(Element*); 1112 void didAssociateFormControl(Element*);
1103 1113
1104 virtual void addConsoleMessage(MessageSource, MessageLevel, const String& me ssage, unsigned long requestIdentifier = 0); 1114 virtual void addConsoleMessage(MessageSource, MessageLevel, const String& me ssage, unsigned long requestIdentifier = 0);
1105 1115
1106 virtual const SecurityOrigin* topOrigin() const OVERRIDE; 1116 virtual const SecurityOrigin* topOrigin() const OVERRIDE;
1107 1117
1108 PassRefPtr<FontLoader> fontloader(); 1118 PassRefPtr<FontLoader> fontloader();
1109 1119
1110 protected: 1120 protected:
1111 Document(Frame*, const KURL&, bool isXHTML, bool isHTML); 1121 Document(Frame*, const KURL&, unsigned documentClass = DefaultDocumentClass) ;
1112 1122
1113 virtual void didUpdateSecurityOrigin() OVERRIDE; 1123 virtual void didUpdateSecurityOrigin() OVERRIDE;
1114 1124
1115 void clearXMLVersion() { m_xmlVersion = String(); } 1125 void clearXMLVersion() { m_xmlVersion = String(); }
1116 1126
1117 private: 1127 private:
1118 friend class Node; 1128 friend class Node;
1119 friend class IgnoreDestructiveWriteCountIncrementer; 1129 friend class IgnoreDestructiveWriteCountIncrementer;
1120 1130
1121 virtual void dispose() OVERRIDE; 1131 virtual void dispose() OVERRIDE;
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 1358
1349 HashSet<Element*> m_captionPreferencesChangedElements; 1359 HashSet<Element*> m_captionPreferencesChangedElements;
1350 1360
1351 HashMap<StringImpl*, Element*, CaseFoldingHash> m_elementsByAccessKey; 1361 HashMap<StringImpl*, Element*, CaseFoldingHash> m_elementsByAccessKey;
1352 bool m_accessKeyMapValid; 1362 bool m_accessKeyMapValid;
1353 1363
1354 OwnPtr<SelectorQueryCache> m_selectorQueryCache; 1364 OwnPtr<SelectorQueryCache> m_selectorQueryCache;
1355 1365
1356 bool m_useSecureKeyboardEntryWhenActive; 1366 bool m_useSecureKeyboardEntryWhenActive;
1357 1367
1358 bool m_isXHTML; 1368 unsigned m_documentClass;
1359 bool m_isHTML;
1360 1369
1361 bool m_isViewSource; 1370 bool m_isViewSource;
1362 bool m_sawElementsInKnownNamespaces; 1371 bool m_sawElementsInKnownNamespaces;
1363 bool m_isSrcdocDocument; 1372 bool m_isSrcdocDocument;
1364 1373
1365 RenderObject* m_renderer; 1374 RenderObject* m_renderer;
1366 RefPtr<DocumentEventQueue> m_eventQueue; 1375 RefPtr<DocumentEventQueue> m_eventQueue;
1367 1376
1368 WeakPtrFactory<Document> m_weakFactory; 1377 WeakPtrFactory<Document> m_weakFactory;
1369 1378
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 trackForDebugging(); 1515 trackForDebugging();
1507 #endif 1516 #endif
1508 InspectorCounters::incrementCounter(InspectorCounters::NodeCounter); 1517 InspectorCounters::incrementCounter(InspectorCounters::NodeCounter);
1509 } 1518 }
1510 1519
1511 Node* eventTargetNodeForDocument(Document*); 1520 Node* eventTargetNodeForDocument(Document*);
1512 1521
1513 } // namespace WebCore 1522 } // namespace WebCore
1514 1523
1515 #endif // Document_h 1524 #endif // Document_h
OLDNEW
« no previous file with comments | « no previous file | Source/core/dom/Document.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698