| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 | 652 |
| 653 return false; | 653 return false; |
| 654 } | 654 } |
| 655 | 655 |
| 656 FastTextAutosizer::Cluster* FastTextAutosizer::currentCluster() const | 656 FastTextAutosizer::Cluster* FastTextAutosizer::currentCluster() const |
| 657 { | 657 { |
| 658 ASSERT(!m_clusterStack.isEmpty()); | 658 ASSERT(!m_clusterStack.isEmpty()); |
| 659 return m_clusterStack.last().get(); | 659 return m_clusterStack.last().get(); |
| 660 } | 660 } |
| 661 | 661 |
| 662 #ifndef NDEBUG |
| 663 void FastTextAutosizer::FingerprintMapper::assertMapsAreConsistent() |
| 664 { |
| 665 // For each fingerprint -> block mapping in m_blocksForFingerprint we should
have an associated |
| 666 // map from block -> fingerprint in m_fingerprints. |
| 667 ReverseFingerprintMap::iterator end = m_blocksForFingerprint.end(); |
| 668 for (ReverseFingerprintMap::iterator fingerprintIt = m_blocksForFingerprint.
begin(); fingerprintIt != end; ++fingerprintIt) { |
| 669 Fingerprint fingerprint = fingerprintIt->key; |
| 670 BlockSet* blocks = fingerprintIt->value.get(); |
| 671 for (BlockSet::iterator blockIt = blocks->begin(); blockIt != blocks->en
d(); ++blockIt) { |
| 672 const RenderBlock* block = (*blockIt); |
| 673 ASSERT(m_fingerprints.get(block) == fingerprint); |
| 674 } |
| 675 } |
| 676 } |
| 677 #endif |
| 678 |
| 662 void FastTextAutosizer::FingerprintMapper::add(const RenderObject* renderer, Fin
gerprint fingerprint) | 679 void FastTextAutosizer::FingerprintMapper::add(const RenderObject* renderer, Fin
gerprint fingerprint) |
| 663 { | 680 { |
| 681 remove(renderer); |
| 682 |
| 664 m_fingerprints.set(renderer, fingerprint); | 683 m_fingerprints.set(renderer, fingerprint); |
| 684 #ifndef NDEBUG |
| 685 assertMapsAreConsistent(); |
| 686 #endif |
| 665 } | 687 } |
| 666 | 688 |
| 667 void FastTextAutosizer::FingerprintMapper::addTentativeClusterRoot(const RenderB
lock* block, Fingerprint fingerprint) | 689 void FastTextAutosizer::FingerprintMapper::addTentativeClusterRoot(const RenderB
lock* block, Fingerprint fingerprint) |
| 668 { | 690 { |
| 669 add(block, fingerprint); | 691 add(block, fingerprint); |
| 670 | 692 |
| 671 ReverseFingerprintMap::AddResult addResult = m_blocksForFingerprint.add(fing
erprint, PassOwnPtr<BlockSet>()); | 693 ReverseFingerprintMap::AddResult addResult = m_blocksForFingerprint.add(fing
erprint, PassOwnPtr<BlockSet>()); |
| 672 if (addResult.isNewEntry) | 694 if (addResult.isNewEntry) |
| 673 addResult.storedValue->value = adoptPtr(new BlockSet); | 695 addResult.storedValue->value = adoptPtr(new BlockSet); |
| 674 addResult.storedValue->value->add(block); | 696 addResult.storedValue->value->add(block); |
| 697 #ifndef NDEBUG |
| 698 assertMapsAreConsistent(); |
| 699 #endif |
| 675 } | 700 } |
| 676 | 701 |
| 677 void FastTextAutosizer::FingerprintMapper::remove(const RenderObject* renderer) | 702 void FastTextAutosizer::FingerprintMapper::remove(const RenderObject* renderer) |
| 678 { | 703 { |
| 679 Fingerprint fingerprint = m_fingerprints.take(renderer); | 704 Fingerprint fingerprint = m_fingerprints.take(renderer); |
| 680 if (!fingerprint || !renderer->isRenderBlock()) | 705 if (!fingerprint || !renderer->isRenderBlock()) |
| 681 return; | 706 return; |
| 682 | 707 |
| 683 ReverseFingerprintMap::iterator blocksIter = m_blocksForFingerprint.find(fin
gerprint); | 708 ReverseFingerprintMap::iterator blocksIter = m_blocksForFingerprint.find(fin
gerprint); |
| 684 if (blocksIter == m_blocksForFingerprint.end()) | 709 if (blocksIter == m_blocksForFingerprint.end()) |
| 685 return; | 710 return; |
| 686 | 711 |
| 687 BlockSet& blocks = *blocksIter->value; | 712 BlockSet& blocks = *blocksIter->value; |
| 688 blocks.remove(toRenderBlock(renderer)); | 713 blocks.remove(toRenderBlock(renderer)); |
| 689 if (blocks.isEmpty()) | 714 if (blocks.isEmpty()) |
| 690 m_blocksForFingerprint.remove(blocksIter); | 715 m_blocksForFingerprint.remove(blocksIter); |
| 716 #ifndef NDEBUG |
| 717 assertMapsAreConsistent(); |
| 718 #endif |
| 691 } | 719 } |
| 692 | 720 |
| 693 FastTextAutosizer::Fingerprint FastTextAutosizer::FingerprintMapper::get(const R
enderObject* renderer) | 721 FastTextAutosizer::Fingerprint FastTextAutosizer::FingerprintMapper::get(const R
enderObject* renderer) |
| 694 { | 722 { |
| 695 return m_fingerprints.get(renderer); | 723 return m_fingerprints.get(renderer); |
| 696 } | 724 } |
| 697 | 725 |
| 698 FastTextAutosizer::BlockSet& FastTextAutosizer::FingerprintMapper::getTentativeC
lusterRoots(Fingerprint fingerprint) | 726 FastTextAutosizer::BlockSet& FastTextAutosizer::FingerprintMapper::getTentativeC
lusterRoots(Fingerprint fingerprint) |
| 699 { | 727 { |
| 700 return *m_blocksForFingerprint.get(fingerprint); | 728 return *m_blocksForFingerprint.get(fingerprint); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 728 m_textAutosizer = 0; | 756 m_textAutosizer = 0; |
| 729 } | 757 } |
| 730 | 758 |
| 731 FastTextAutosizer::LayoutScope::~LayoutScope() | 759 FastTextAutosizer::LayoutScope::~LayoutScope() |
| 732 { | 760 { |
| 733 if (m_textAutosizer) | 761 if (m_textAutosizer) |
| 734 m_textAutosizer->endLayout(m_block); | 762 m_textAutosizer->endLayout(m_block); |
| 735 } | 763 } |
| 736 | 764 |
| 737 } // namespace WebCore | 765 } // namespace WebCore |
| OLD | NEW |