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

Side by Side Diff: Source/core/rendering/RenderNamedFlowThread.cpp

Issue 23467007: Have Range constructor take a Document reference in argument (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 Node* node = *it; 590 Node* node = *it;
591 if (!isContainedInNodes(nodes, node)) 591 if (!isContainedInNodes(nodes, node))
592 nodes.append(node); 592 nodes.append(node);
593 } 593 }
594 594
595 for (size_t i = 0; i < nodes.size(); i++) { 595 for (size_t i = 0; i < nodes.size(); i++) {
596 Node* contentNode = nodes.at(i); 596 Node* contentNode = nodes.at(i);
597 if (!contentNode->renderer()) 597 if (!contentNode->renderer())
598 continue; 598 continue;
599 599
600 RefPtr<Range> range = Range::create(&contentNode->document()); 600 RefPtr<Range> range = Range::create(contentNode->document());
601 bool foundStartPosition = false; 601 bool foundStartPosition = false;
602 bool startsAboveRegion = true; 602 bool startsAboveRegion = true;
603 bool endsBelowRegion = true; 603 bool endsBelowRegion = true;
604 bool skipOverOutsideNodes = false; 604 bool skipOverOutsideNodes = false;
605 Node* lastEndNode = 0; 605 Node* lastEndNode = 0;
606 606
607 for (Node* node = contentNode; node; node = NodeTraversal::next(node, co ntentNode)) { 607 for (Node* node = contentNode; node; node = NodeTraversal::next(node, co ntentNode)) {
608 RenderObject* renderer = node->renderer(); 608 RenderObject* renderer = node->renderer();
609 if (!renderer) 609 if (!renderer)
610 continue; 610 continue;
(...skipping 20 matching lines...) Expand all
631 631
632 // if the bounding box of the current element doesn't intersect the region box 632 // if the bounding box of the current element doesn't intersect the region box
633 // close the current range only if the start element began inside th e region, 633 // close the current range only if the start element began inside th e region,
634 // otherwise just move the start position after this node and keep s kipping them until we found a proper start position. 634 // otherwise just move the start position after this node and keep s kipping them until we found a proper start position.
635 if (!boxIntersectsRegion(logicalTopForRenderer, logicalBottomForRend erer, logicalTopForRegion, logicalBottomForRegion)) { 635 if (!boxIntersectsRegion(logicalTopForRenderer, logicalBottomForRend erer, logicalTopForRegion, logicalBottomForRegion)) {
636 if (foundStartPosition) { 636 if (foundStartPosition) {
637 if (!startsAboveRegion) { 637 if (!startsAboveRegion) {
638 if (range->intersectsNode(node, IGNORE_EXCEPTION)) 638 if (range->intersectsNode(node, IGNORE_EXCEPTION))
639 range->setEndBefore(node, IGNORE_EXCEPTION); 639 range->setEndBefore(node, IGNORE_EXCEPTION);
640 rangeObjects.append(range->cloneRange(IGNORE_EXCEPTION)) ; 640 rangeObjects.append(range->cloneRange(IGNORE_EXCEPTION)) ;
641 range = Range::create(&contentNode->document()); 641 range = Range::create(contentNode->document());
642 startsAboveRegion = true; 642 startsAboveRegion = true;
643 } else 643 } else
644 skipOverOutsideNodes = true; 644 skipOverOutsideNodes = true;
645 } 645 }
646 if (skipOverOutsideNodes) 646 if (skipOverOutsideNodes)
647 range->setStartAfter(node, IGNORE_EXCEPTION); 647 range->setStartAfter(node, IGNORE_EXCEPTION);
648 foundStartPosition = false; 648 foundStartPosition = false;
649 continue; 649 continue;
650 } 650 }
651 651
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 lastEndNode = node; 710 lastEndNode = node;
711 } 711 }
712 } 712 }
713 } 713 }
714 if (foundStartPosition || skipOverOutsideNodes) 714 if (foundStartPosition || skipOverOutsideNodes)
715 rangeObjects.append(range); 715 rangeObjects.append(range);
716 } 716 }
717 } 717 }
718 718
719 } 719 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698