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

Side by Side Diff: third_party/WebKit/WebCore/dom/Document.cpp

Issue 21165: Revert the merge. Mac build is mysteriously broken. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 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 | Annotate | Revision Log
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 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2008 David Levin (levin@chromium.org) 8 * Copyright (C) 2008 David Levin (levin@chromium.org)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 if (renderer() && ch != NoChange) 1262 if (renderer() && ch != NoChange)
1263 renderer()->setStyle(documentStyle.release()); 1263 renderer()->setStyle(documentStyle.release());
1264 if (change != Force) 1264 if (change != Force)
1265 change = ch; 1265 change = ch;
1266 } 1266 }
1267 1267
1268 for (Node* n = firstChild(); n; n = n->nextSibling()) 1268 for (Node* n = firstChild(); n; n = n->nextSibling())
1269 if (change >= Inherit || n->hasChangedChild() || n->changed()) 1269 if (change >= Inherit || n->hasChangedChild() || n->changed())
1270 n->recalcStyle(change); 1270 n->recalcStyle(change);
1271 1271
1272 if (view()) { 1272 if (changed() && view())
1273 if (changed()) 1273 view()->layout();
1274 view()->layout();
1275 #if USE(ACCELERATED_COMPOSITING)
1276 else {
1277 // If we didn't update compositing layers because of layout(), we ne ed to do so here.
1278 view()->updateCompositingLayers();
1279 }
1280 #endif
1281 }
1282 1274
1283 bail_out: 1275 bail_out:
1284 setChanged(NoStyleChange); 1276 setChanged(NoStyleChange);
1285 setHasChangedChild(false); 1277 setHasChangedChild(false);
1286 setDocumentChanged(false); 1278 setDocumentChanged(false);
1287 1279
1288 resumePostAttachCallbacks(); 1280 resumePostAttachCallbacks();
1289 m_inStyleRecalc = false; 1281 m_inStyleRecalc = false;
1290 1282
1291 // If we wanted to call implicitClose() during recalcStyle, do so now that w e're finished. 1283 // If we wanted to call implicitClose() during recalcStyle, do so now that w e're finished.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 doc->m_docChanged = false; 1315 doc->m_docChanged = false;
1324 doc->updateRendering(); 1316 doc->updateRendering();
1325 } 1317 }
1326 } 1318 }
1327 1319
1328 void Document::updateLayout() 1320 void Document::updateLayout()
1329 { 1321 {
1330 if (Element* oe = ownerElement()) 1322 if (Element* oe = ownerElement())
1331 oe->document()->updateLayout(); 1323 oe->document()->updateLayout();
1332 1324
1325 // FIXME: Dave Hyatt's pretty sure we can remove this because layout calls r ecalcStyle as needed.
1333 updateRendering(); 1326 updateRendering();
1334 1327
1335 // Only do a layout if changes have occurred that make it necessary. 1328 // Only do a layout if changes have occurred that make it necessary.
1336 FrameView* v = view(); 1329 FrameView* v = view();
1337 if (v && renderer() && (v->layoutPending() || renderer()->needsLayout())) 1330 if (v && renderer() && (v->layoutPending() || renderer()->needsLayout()))
1338 v->layout(); 1331 v->layout();
1339 } 1332 }
1340 1333
1341 // FIXME: This is a bad idea and needs to be removed eventually. 1334 // FIXME: This is a bad idea and needs to be removed eventually.
1342 // Other browsers load stylesheets before they continue parsing the web page. 1335 // Other browsers load stylesheets before they continue parsing the web page.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 { 1368 {
1376 ASSERT(!attached()); 1369 ASSERT(!attached());
1377 ASSERT(!m_inPageCache); 1370 ASSERT(!m_inPageCache);
1378 ASSERT(!m_axObjectCache); 1371 ASSERT(!m_axObjectCache);
1379 1372
1380 if (!m_renderArena) 1373 if (!m_renderArena)
1381 m_renderArena = new RenderArena(); 1374 m_renderArena = new RenderArena();
1382 1375
1383 // Create the rendering tree 1376 // Create the rendering tree
1384 setRenderer(new (m_renderArena) RenderView(this, view())); 1377 setRenderer(new (m_renderArena) RenderView(this, view()));
1385 #if USE(ACCELERATED_COMPOSITING)
1386 renderView()->didMoveOnscreen();
1387 #endif
1388 1378
1389 if (!m_styleSelector) { 1379 if (!m_styleSelector) {
1390 bool matchAuthorAndUserStyles = true; 1380 bool matchAuthorAndUserStyles = true;
1391 if (Settings* docSettings = settings()) 1381 if (Settings* docSettings = settings())
1392 matchAuthorAndUserStyles = docSettings->authorAndUserStylesEnabled() ; 1382 matchAuthorAndUserStyles = docSettings->authorAndUserStylesEnabled() ;
1393 m_styleSelector = new CSSStyleSelector(this, userStyleSheet(), m_styleSh eets.get(), m_mappedElementSheet.get(), !inCompatMode(), matchAuthorAndUserStyle s); 1383 m_styleSelector = new CSSStyleSelector(this, userStyleSheet(), m_styleSh eets.get(), m_mappedElementSheet.get(), !inCompatMode(), matchAuthorAndUserStyle s);
1394 } 1384 }
1395 1385
1396 recalcStyle(Force); 1386 recalcStyle(Force);
1397 1387
1398 RenderObject* render = renderer(); 1388 RenderObject* render = renderer();
1399 setRenderer(0); 1389 setRenderer(0);
1400 1390
1401 ContainerNode::attach(); 1391 ContainerNode::attach();
1402 1392
1403 setRenderer(render); 1393 setRenderer(render);
1404 } 1394 }
1405 1395
1406 void Document::detach() 1396 void Document::detach()
1407 { 1397 {
1408 ASSERT(attached()); 1398 ASSERT(attached());
1409 ASSERT(!m_inPageCache); 1399 ASSERT(!m_inPageCache);
1410 1400
1411 clearAXObjectCache(); 1401 clearAXObjectCache();
1412 stopActiveDOMObjects(); 1402 stopActiveDOMObjects();
1413 1403
1414 RenderObject* render = renderer(); 1404 RenderObject* render = renderer();
1415 1405
1416 #if USE(ACCELERATED_COMPOSITING)
1417 if (render)
1418 renderView()->willMoveOffscreen();
1419 #endif
1420
1421 // indicate destruction mode, i.e. attached() but renderer == 0 1406 // indicate destruction mode, i.e. attached() but renderer == 0
1422 setRenderer(0); 1407 setRenderer(0);
1423 1408
1424 // Empty out these lists as a performance optimization, since detaching 1409 // Empty out these lists as a performance optimization, since detaching
1425 // all the individual render objects will cause all the RenderImage 1410 // all the individual render objects will cause all the RenderImage
1426 // objects to remove themselves from the lists. 1411 // objects to remove themselves from the lists.
1427 m_imageLoadEventDispatchSoonList.clear(); 1412 m_imageLoadEventDispatchSoonList.clear();
1428 m_imageLoadEventDispatchingList.clear(); 1413 m_imageLoadEventDispatchingList.clear();
1429 1414
1430 m_hoverNode = 0; 1415 m_hoverNode = 0;
(...skipping 22 matching lines...) Expand all
1453 m_frame = 0; 1438 m_frame = 0;
1454 } 1439 }
1455 1440
1456 void Document::removeAllEventListenersFromAllNodes() 1441 void Document::removeAllEventListenersFromAllNodes()
1457 { 1442 {
1458 size_t size = m_windowEventListeners.size(); 1443 size_t size = m_windowEventListeners.size();
1459 for (size_t i = 0; i < size; ++i) 1444 for (size_t i = 0; i < size; ++i)
1460 m_windowEventListeners[i]->setRemoved(true); 1445 m_windowEventListeners[i]->setRemoved(true);
1461 m_windowEventListeners.clear(); 1446 m_windowEventListeners.clear();
1462 removeAllDisconnectedNodeEventListeners(); 1447 removeAllDisconnectedNodeEventListeners();
1463 for (Node* node = this; node; node = node->traverseNextNode()) 1448 removeAllEventListeners();
1464 node->removeAllEventListeners(); 1449 Element* documentElement = this->documentElement();
1450 for (Node* node = documentElement; node; node = node->traverseNextNode(docum entElement))
1451 toEventTargetNode(node)->removeAllEventListeners();
1465 } 1452 }
1466 1453
1467 void Document::registerDisconnectedNodeWithEventListeners(Node* node) 1454 void Document::registerDisconnectedNodeWithEventListeners(Node* node)
1468 { 1455 {
1469 m_disconnectedNodesWithEventListeners.add(node); 1456 m_disconnectedNodesWithEventListeners.add(node);
1470 } 1457 }
1471 1458
1472 void Document::unregisterDisconnectedNodeWithEventListeners(Node* node) 1459 void Document::unregisterDisconnectedNodeWithEventListeners(Node* node)
1473 { 1460 {
1474 m_disconnectedNodesWithEventListeners.remove(node); 1461 m_disconnectedNodesWithEventListeners.remove(node);
1475 } 1462 }
1476 1463
1477 void Document::removeAllDisconnectedNodeEventListeners() 1464 void Document::removeAllDisconnectedNodeEventListeners()
1478 { 1465 {
1479 HashSet<Node*>::iterator end = m_disconnectedNodesWithEventListeners.end(); 1466 HashSet<Node*>::iterator end = m_disconnectedNodesWithEventListeners.end();
1480 for (HashSet<Node*>::iterator i = m_disconnectedNodesWithEventListeners.begi n(); i != end; ++i) 1467 for (HashSet<Node*>::iterator i = m_disconnectedNodesWithEventListeners.begi n(); i != end; ++i)
1481 (*i)->removeAllEventListeners(); 1468 EventTargetNodeCast(*i)->removeAllEventListeners();
1482 m_disconnectedNodesWithEventListeners.clear(); 1469 m_disconnectedNodesWithEventListeners.clear();
1483 } 1470 }
1484 1471
1485 RenderView* Document::renderView() const 1472 RenderView* Document::renderView() const
1486 { 1473 {
1487 return toRenderView(renderer()); 1474 return toRenderView(renderer());
1488 } 1475 }
1489 1476
1490 void Document::clearAXObjectCache() 1477 void Document::clearAXObjectCache()
1491 { 1478 {
(...skipping 1094 matching lines...) Expand 10 before | Expand all | Expand 10 after
2586 // Remove focus from the existing focus node (if any) 2573 // Remove focus from the existing focus node (if any)
2587 if (oldFocusedNode && !oldFocusedNode->m_inDetach) { 2574 if (oldFocusedNode && !oldFocusedNode->m_inDetach) {
2588 if (oldFocusedNode->active()) 2575 if (oldFocusedNode->active())
2589 oldFocusedNode->setActive(false); 2576 oldFocusedNode->setActive(false);
2590 2577
2591 oldFocusedNode->setFocus(false); 2578 oldFocusedNode->setFocus(false);
2592 2579
2593 // Dispatch a change event for text fields or textareas that have been e dited 2580 // Dispatch a change event for text fields or textareas that have been e dited
2594 RenderObject* r = static_cast<RenderObject*>(oldFocusedNode.get()->rende rer()); 2581 RenderObject* r = static_cast<RenderObject*>(oldFocusedNode.get()->rende rer());
2595 if (r && (r->isTextArea() || r->isTextField()) && r->isEdited()) { 2582 if (r && (r->isTextArea() || r->isTextField()) && r->isEdited()) {
2596 oldFocusedNode->dispatchEventForType(eventNames().changeEvent, true, false); 2583 EventTargetNodeCast(oldFocusedNode.get())->dispatchEventForType(even tNames().changeEvent, true, false);
2597 if ((r = static_cast<RenderObject*>(oldFocusedNode.get()->renderer() ))) 2584 if ((r = static_cast<RenderObject*>(oldFocusedNode.get()->renderer() )))
2598 r->setEdited(false); 2585 r->setEdited(false);
2599 } 2586 }
2600 2587
2601 // Dispatch the blur event and let the node do any other blur related ac tivities (important for text fields) 2588 // Dispatch the blur event and let the node do any other blur related ac tivities (important for text fields)
2602 oldFocusedNode->dispatchBlurEvent(); 2589 EventTargetNodeCast(oldFocusedNode.get())->dispatchBlurEvent();
2603 2590
2604 if (m_focusedNode) { 2591 if (m_focusedNode) {
2605 // handler shifted focus 2592 // handler shifted focus
2606 focusChangeBlocked = true; 2593 focusChangeBlocked = true;
2607 newFocusedNode = 0; 2594 newFocusedNode = 0;
2608 } 2595 }
2609 oldFocusedNode->dispatchUIEvent(eventNames().DOMFocusOutEvent); 2596 EventTargetNodeCast(oldFocusedNode.get())->dispatchUIEvent(eventNames(). DOMFocusOutEvent);
2610 if (m_focusedNode) { 2597 if (m_focusedNode) {
2611 // handler shifted focus 2598 // handler shifted focus
2612 focusChangeBlocked = true; 2599 focusChangeBlocked = true;
2613 newFocusedNode = 0; 2600 newFocusedNode = 0;
2614 } 2601 }
2615 if ((oldFocusedNode.get() == this) && oldFocusedNode->hasOneRef()) 2602 if ((oldFocusedNode.get() == this) && oldFocusedNode->hasOneRef())
2616 return true; 2603 return true;
2617 2604
2618 if (oldFocusedNode.get() == oldFocusedNode->rootEditableElement()) 2605 if (oldFocusedNode.get() == oldFocusedNode->rootEditableElement())
2619 frame()->editor()->didEndEditing(); 2606 frame()->editor()->didEndEditing();
2620 } 2607 }
2621 2608
2622 if (newFocusedNode) { 2609 if (newFocusedNode) {
2623 if (newFocusedNode == newFocusedNode->rootEditableElement() && !acceptsE ditingFocus(newFocusedNode.get())) { 2610 if (newFocusedNode == newFocusedNode->rootEditableElement() && !acceptsE ditingFocus(newFocusedNode.get())) {
2624 // delegate blocks focus change 2611 // delegate blocks focus change
2625 focusChangeBlocked = true; 2612 focusChangeBlocked = true;
2626 goto SetFocusedNodeDone; 2613 goto SetFocusedNodeDone;
2627 } 2614 }
2628 // Set focus on the new node 2615 // Set focus on the new node
2629 m_focusedNode = newFocusedNode.get(); 2616 m_focusedNode = newFocusedNode.get();
2630 2617
2631 // Dispatch the focus event and let the node do any other focus related activities (important for text fields) 2618 // Dispatch the focus event and let the node do any other focus related activities (important for text fields)
2632 m_focusedNode->dispatchFocusEvent(); 2619 EventTargetNodeCast(m_focusedNode.get())->dispatchFocusEvent();
2633 2620
2634 if (m_focusedNode != newFocusedNode) { 2621 if (m_focusedNode != newFocusedNode) {
2635 // handler shifted focus 2622 // handler shifted focus
2636 focusChangeBlocked = true; 2623 focusChangeBlocked = true;
2637 goto SetFocusedNodeDone; 2624 goto SetFocusedNodeDone;
2638 } 2625 }
2639 m_focusedNode->dispatchUIEvent(eventNames().DOMFocusInEvent); 2626 EventTargetNodeCast(m_focusedNode.get())->dispatchUIEvent(eventNames().D OMFocusInEvent);
2640 if (m_focusedNode != newFocusedNode) { 2627 if (m_focusedNode != newFocusedNode) {
2641 // handler shifted focus 2628 // handler shifted focus
2642 focusChangeBlocked = true; 2629 focusChangeBlocked = true;
2643 goto SetFocusedNodeDone; 2630 goto SetFocusedNodeDone;
2644 } 2631 }
2645 m_focusedNode->setFocus(); 2632 m_focusedNode->setFocus();
2646 2633
2647 if (m_focusedNode.get() == m_focusedNode->rootEditableElement()) 2634 if (m_focusedNode.get() == m_focusedNode->rootEditableElement())
2648 frame()->editor()->didBeginEditing(); 2635 frame()->editor()->didBeginEditing();
2649 2636
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
3301 } else { 3288 } else {
3302 ASSERT(renderer() == 0 || renderer() == m_savedRenderer); 3289 ASSERT(renderer() == 0 || renderer() == m_savedRenderer);
3303 ASSERT(m_renderArena); 3290 ASSERT(m_renderArena);
3304 setRenderer(m_savedRenderer); 3291 setRenderer(m_savedRenderer);
3305 m_savedRenderer = 0; 3292 m_savedRenderer = 0;
3306 } 3293 }
3307 } 3294 }
3308 3295
3309 void Document::documentWillBecomeInactive() 3296 void Document::documentWillBecomeInactive()
3310 { 3297 {
3311 #if USE(ACCELERATED_COMPOSITING)
3312 if (renderer())
3313 renderView()->willMoveOffscreen();
3314 #endif
3315
3316 HashSet<Element*>::iterator end = m_documentActivationCallbackElements.end() ; 3298 HashSet<Element*>::iterator end = m_documentActivationCallbackElements.end() ;
3317 for (HashSet<Element*>::iterator i = m_documentActivationCallbackElements.be gin(); i != end; ++i) 3299 for (HashSet<Element*>::iterator i = m_documentActivationCallbackElements.be gin(); i != end; ++i)
3318 (*i)->documentWillBecomeInactive(); 3300 (*i)->documentWillBecomeInactive();
3319 } 3301 }
3320 3302
3321 void Document::documentDidBecomeActive() 3303 void Document::documentDidBecomeActive()
3322 { 3304 {
3323 HashSet<Element*>::iterator end = m_documentActivationCallbackElements.end() ; 3305 HashSet<Element*>::iterator end = m_documentActivationCallbackElements.end() ;
3324 for (HashSet<Element*>::iterator i = m_documentActivationCallbackElements.be gin(); i != end; ++i) 3306 for (HashSet<Element*>::iterator i = m_documentActivationCallbackElements.be gin(); i != end; ++i)
3325 (*i)->documentDidBecomeActive(); 3307 (*i)->documentDidBecomeActive();
3326
3327 #if USE(ACCELERATED_COMPOSITING)
3328 if (renderer())
3329 renderView()->didMoveOnscreen();
3330 #endif
3331 } 3308 }
3332 3309
3333 void Document::registerForDocumentActivationCallbacks(Element* e) 3310 void Document::registerForDocumentActivationCallbacks(Element* e)
3334 { 3311 {
3335 m_documentActivationCallbackElements.add(e); 3312 m_documentActivationCallbackElements.add(e);
3336 } 3313 }
3337 3314
3338 void Document::unregisterForDocumentActivationCallbacks(Element* e) 3315 void Document::unregisterForDocumentActivationCallbacks(Element* e)
3339 { 3316 {
3340 m_documentActivationCallbackElements.remove(e); 3317 m_documentActivationCallbackElements.remove(e);
(...skipping 1187 matching lines...) Expand 10 before | Expand all | Expand 10 after
4528 } 4505 }
4529 } 4506 }
4530 } 4507 }
4531 return 0; 4508 return 0;
4532 } 4509 }
4533 4510
4534 } // namespace WebCore 4511 } // namespace WebCore
4535 4512
4536 4513
4537 4514
OLDNEW
« no previous file with comments | « third_party/WebKit/WebCore/dom/ContainerNode.cpp ('k') | third_party/WebKit/WebCore/dom/Document.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698