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

Side by Side Diff: sky/engine/core/dom/Document.cpp

Issue 943013002: Implement Custom Elements (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: attributeChanged***d***Callback Created 5 years, 10 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
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, 2011, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 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) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 #include "sky/engine/core/dom/NodeRenderingTraversal.h" 60 #include "sky/engine/core/dom/NodeRenderingTraversal.h"
61 #include "sky/engine/core/dom/NodeTraversal.h" 61 #include "sky/engine/core/dom/NodeTraversal.h"
62 #include "sky/engine/core/dom/NodeWithIndex.h" 62 #include "sky/engine/core/dom/NodeWithIndex.h"
63 #include "sky/engine/core/dom/RequestAnimationFrameCallback.h" 63 #include "sky/engine/core/dom/RequestAnimationFrameCallback.h"
64 #include "sky/engine/core/dom/ScriptedAnimationController.h" 64 #include "sky/engine/core/dom/ScriptedAnimationController.h"
65 #include "sky/engine/core/dom/SelectorQuery.h" 65 #include "sky/engine/core/dom/SelectorQuery.h"
66 #include "sky/engine/core/dom/StaticNodeList.h" 66 #include "sky/engine/core/dom/StaticNodeList.h"
67 #include "sky/engine/core/dom/StyleEngine.h" 67 #include "sky/engine/core/dom/StyleEngine.h"
68 #include "sky/engine/core/dom/Text.h" 68 #include "sky/engine/core/dom/Text.h"
69 #include "sky/engine/core/dom/custom/CustomElementMicrotaskRunQueue.h" 69 #include "sky/engine/core/dom/custom/CustomElementMicrotaskRunQueue.h"
70 #include "sky/engine/core/dom/custom/CustomElementRegistrationContext.h" 70 #include "sky/engine/core/dom/custom2/new_custom_element_registry.h"
71 #include "sky/engine/core/dom/shadow/ElementShadow.h" 71 #include "sky/engine/core/dom/shadow/ElementShadow.h"
72 #include "sky/engine/core/dom/shadow/ShadowRoot.h" 72 #include "sky/engine/core/dom/shadow/ShadowRoot.h"
73 #include "sky/engine/core/editing/FrameSelection.h" 73 #include "sky/engine/core/editing/FrameSelection.h"
74 #include "sky/engine/core/editing/SpellChecker.h" 74 #include "sky/engine/core/editing/SpellChecker.h"
75 #include "sky/engine/core/events/Event.h" 75 #include "sky/engine/core/events/Event.h"
76 #include "sky/engine/core/events/EventListener.h" 76 #include "sky/engine/core/events/EventListener.h"
77 #include "sky/engine/core/events/HashChangeEvent.h" 77 #include "sky/engine/core/events/HashChangeEvent.h"
78 #include "sky/engine/core/events/PageTransitionEvent.h" 78 #include "sky/engine/core/events/PageTransitionEvent.h"
79 #include "sky/engine/core/events/ScopedEventQueue.h" 79 #include "sky/engine/core/events/ScopedEventQueue.h"
80 #include "sky/engine/core/fetch/ResourceFetcher.h" 80 #include "sky/engine/core/fetch/ResourceFetcher.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 , m_startTime(currentTime()) 243 , m_startTime(currentTime())
244 , m_renderView(0) 244 , m_renderView(0)
245 #if !ENABLE(OILPAN) 245 #if !ENABLE(OILPAN)
246 , m_weakFactory(this) 246 , m_weakFactory(this)
247 #endif 247 #endif
248 , m_contextDocument(initializer.contextDocument()) 248 , m_contextDocument(initializer.contextDocument())
249 , m_loadEventDelayCount(0) 249 , m_loadEventDelayCount(0)
250 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) 250 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired)
251 , m_didSetReferrerPolicy(false) 251 , m_didSetReferrerPolicy(false)
252 , m_referrerPolicy(ReferrerPolicyDefault) 252 , m_referrerPolicy(ReferrerPolicyDefault)
253 , m_registrationContext(initializer.registrationContext()) 253 , m_elementRegistry(initializer.elementRegistry())
254 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi red) 254 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi red)
255 , m_timeline(AnimationTimeline::create(this)) 255 , m_timeline(AnimationTimeline::create(this))
256 , m_templateDocumentHost(nullptr) 256 , m_templateDocumentHost(nullptr)
257 , m_hasViewportUnits(false) 257 , m_hasViewportUnits(false)
258 , m_styleRecalcElementCounter(0) 258 , m_styleRecalcElementCounter(0)
259 { 259 {
260 setClient(this); 260 setClient(this);
261 261
262 if (!m_registrationContext) 262 if (!m_elementRegistry)
263 m_registrationContext = CustomElementRegistrationContext::create(); 263 m_elementRegistry = NewCustomElementRegistry::Create();
264 264
265 m_fetcher = ResourceFetcher::create(this); 265 m_fetcher = ResourceFetcher::create(this);
266 266
267 // We depend on the url getting immediately set in subframes, but we 267 // We depend on the url getting immediately set in subframes, but we
268 // also depend on the url NOT getting immediately set in opened windows. 268 // also depend on the url NOT getting immediately set in opened windows.
269 // See fast/dom/early-frame-url.html 269 // See fast/dom/early-frame-url.html
270 // and fast/dom/location-new-window-no-crash.html, respectively. 270 // and fast/dom/location-new-window-no-crash.html, respectively.
271 // FIXME: Can/should we unify this behavior? 271 // FIXME: Can/should we unify this behavior?
272 if (initializer.shouldSetURL()) 272 if (initializer.shouldSetURL())
273 setURL(initializer.url()); 273 setURL(initializer.url());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 #endif 331 #endif
332 332
333 setClient(0); 333 setClient(0);
334 334
335 InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter); 335 InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter);
336 } 336 }
337 337
338 PassRefPtr<Document> Document::create(Document& document) 338 PassRefPtr<Document> Document::create(Document& document)
339 { 339 {
340 DocumentInit init = DocumentInit::fromContext(document.contextDocument()) 340 DocumentInit init = DocumentInit::fromContext(document.contextDocument())
341 .withRegistrationContext(document.registrationContext()); 341 .withElementRegistry(document.elementRegistry());
342 return adoptRef(new Document(init)); 342 return adoptRef(new Document(init));
343 } 343 }
344 344
345 #if !ENABLE(OILPAN) 345 #if !ENABLE(OILPAN)
346 void Document::dispose() 346 void Document::dispose()
347 { 347 {
348 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun); 348 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun);
349 349
350 // We must make sure not to be retaining any of our children through 350 // We must make sure not to be retaining any of our children through
351 // these extra pointers or we will create a reference cycle. 351 // these extra pointers or we will create a reference cycle.
352 m_focusedElement = nullptr; 352 m_focusedElement = nullptr;
353 m_hoverNode = nullptr; 353 m_hoverNode = nullptr;
354 m_activeHoverElement = nullptr; 354 m_activeHoverElement = nullptr;
355 m_titleElement = nullptr; 355 m_titleElement = nullptr;
356 m_userActionElements.documentDidRemoveLastRef(); 356 m_userActionElements.documentDidRemoveLastRef();
357 357
358 detachParser(); 358 detachParser();
359 359
360 m_registrationContext.clear(); 360 m_elementRegistry.clear();
361 361
362 if (m_importsController) 362 if (m_importsController)
363 HTMLImportsController::removeFrom(*this); 363 HTMLImportsController::removeFrom(*this);
364 364
365 // removeDetachedChildren() doesn't always unregister IDs, 365 // removeDetachedChildren() doesn't always unregister IDs,
366 // so tear down scope information upfront to avoid having stale references i n the map. 366 // so tear down scope information upfront to avoid having stale references i n the map.
367 destroyTreeScopeData(); 367 destroyTreeScopeData();
368 368
369 removeDetachedChildren(); 369 removeDetachedChildren();
370 370
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionS tate& exceptionState) 411 PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionS tate& exceptionState)
412 { 412 {
413 if (!isValidName(name)) { 413 if (!isValidName(name)) {
414 exceptionState.ThrowDOMException(InvalidCharacterError, "The tag name pr ovided ('" + name + "') is not a valid name."); 414 exceptionState.ThrowDOMException(InvalidCharacterError, "The tag name pr ovided ('" + name + "') is not a valid name.");
415 return nullptr; 415 return nullptr;
416 } 416 }
417 417
418 return HTMLElementFactory::createElement(name, *this, false); 418 return HTMLElementFactory::createElement(name, *this, false);
419 } 419 }
420 420
421 PassRefPtr<DartValue> Document::registerElement(DartState*, const AtomicString& name, ExceptionState& exceptionState) 421 void Document::registerElement(const AtomicString& name, PassRefPtr<DartValue> t ype, ExceptionState& es)
422 { 422 {
423 // TODO(abarth): Add back custom elment registration. 423 m_elementRegistry->RegisterElement(name, type);
424 return DartValue::Create();
425 } 424 }
426 425
427 CustomElementMicrotaskRunQueue* Document::customElementMicrotaskRunQueue() 426 CustomElementMicrotaskRunQueue* Document::customElementMicrotaskRunQueue()
428 { 427 {
429 if (!m_customElementMicrotaskRunQueue) 428 if (!m_customElementMicrotaskRunQueue)
430 m_customElementMicrotaskRunQueue = CustomElementMicrotaskRunQueue::creat e(); 429 m_customElementMicrotaskRunQueue = CustomElementMicrotaskRunQueue::creat e();
431 return m_customElementMicrotaskRunQueue.get(); 430 return m_customElementMicrotaskRunQueue.get();
432 } 431 }
433 432
434 void Document::setImportsController(HTMLImportsController* controller) 433 void Document::setImportsController(HTMLImportsController* controller)
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 PassRefPtr<Node> Document::cloneNode(bool deep) 1455 PassRefPtr<Node> Document::cloneNode(bool deep)
1457 { 1456 {
1458 RefPtr<Document> clone = cloneDocumentWithoutChildren(); 1457 RefPtr<Document> clone = cloneDocumentWithoutChildren();
1459 if (deep) 1458 if (deep)
1460 cloneChildNodes(clone.get()); 1459 cloneChildNodes(clone.get());
1461 return clone.release(); 1460 return clone.release();
1462 } 1461 }
1463 1462
1464 PassRefPtr<Document> Document::cloneDocumentWithoutChildren() 1463 PassRefPtr<Document> Document::cloneDocumentWithoutChildren()
1465 { 1464 {
1466 return create(DocumentInit(url()).withRegistrationContext(registrationContex t())); 1465 return create(DocumentInit(url()).withElementRegistry(elementRegistry()));
1467 } 1466 }
1468 1467
1469 void Document::evaluateMediaQueryListIfNeeded() 1468 void Document::evaluateMediaQueryListIfNeeded()
1470 { 1469 {
1471 if (!m_evaluateMediaQueriesOnStyleRecalc) 1470 if (!m_evaluateMediaQueriesOnStyleRecalc)
1472 return; 1471 return;
1473 evaluateMediaQueryList(); 1472 evaluateMediaQueryList();
1474 m_evaluateMediaQueriesOnStyleRecalc = false; 1473 m_evaluateMediaQueriesOnStyleRecalc = false;
1475 } 1474 }
1476 1475
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after
2224 using namespace blink; 2223 using namespace blink;
2225 void showLiveDocumentInstances() 2224 void showLiveDocumentInstances()
2226 { 2225 {
2227 WeakDocumentSet& set = liveDocumentSet(); 2226 WeakDocumentSet& set = liveDocumentSet();
2228 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 2227 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
2229 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it ) { 2228 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it ) {
2230 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut f8().data()); 2229 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut f8().data());
2231 } 2230 }
2232 } 2231 }
2233 #endif 2232 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698