| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Apple Inc. All rights reserved. | 3 * Copyright (C) 2013 Apple Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 return ClientRect::create(document->frame()->selection()->absoluteCaretBound
s()); | 805 return ClientRect::create(document->frame()->selection()->absoluteCaretBound
s()); |
| 806 } | 806 } |
| 807 | 807 |
| 808 PassRefPtr<ClientRect> Internals::boundingBox(Element* element, ExceptionState&
es) | 808 PassRefPtr<ClientRect> Internals::boundingBox(Element* element, ExceptionState&
es) |
| 809 { | 809 { |
| 810 if (!element) { | 810 if (!element) { |
| 811 es.throwDOMException(InvalidAccessError); | 811 es.throwDOMException(InvalidAccessError); |
| 812 return ClientRect::create(); | 812 return ClientRect::create(); |
| 813 } | 813 } |
| 814 | 814 |
| 815 element->document()->updateLayoutIgnorePendingStylesheets(); | 815 element->document().updateLayoutIgnorePendingStylesheets(); |
| 816 RenderObject* renderer = element->renderer(); | 816 RenderObject* renderer = element->renderer(); |
| 817 if (!renderer) | 817 if (!renderer) |
| 818 return ClientRect::create(); | 818 return ClientRect::create(); |
| 819 return ClientRect::create(renderer->absoluteBoundingBoxRectIgnoringTransform
s()); | 819 return ClientRect::create(renderer->absoluteBoundingBoxRectIgnoringTransform
s()); |
| 820 } | 820 } |
| 821 | 821 |
| 822 PassRefPtr<ClientRectList> Internals::inspectorHighlightRects(Document* document
, ExceptionState& es) | 822 PassRefPtr<ClientRectList> Internals::inspectorHighlightRects(Document* document
, ExceptionState& es) |
| 823 { | 823 { |
| 824 if (!document || !document->page()) { | 824 if (!document || !document->page()) { |
| 825 es.throwDOMException(InvalidAccessError); | 825 es.throwDOMException(InvalidAccessError); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 837 es.throwDOMException(InvalidAccessError); | 837 es.throwDOMException(InvalidAccessError); |
| 838 return 0; | 838 return 0; |
| 839 } | 839 } |
| 840 | 840 |
| 841 DocumentMarker::MarkerTypes markerTypes = 0; | 841 DocumentMarker::MarkerTypes markerTypes = 0; |
| 842 if (!markerTypesFrom(markerType, markerTypes)) { | 842 if (!markerTypesFrom(markerType, markerTypes)) { |
| 843 es.throwDOMException(SyntaxError); | 843 es.throwDOMException(SyntaxError); |
| 844 return 0; | 844 return 0; |
| 845 } | 845 } |
| 846 | 846 |
| 847 return node->document()->markers()->markersFor(node, markerTypes).size(); | 847 return node->document().markers()->markersFor(node, markerTypes).size(); |
| 848 } | 848 } |
| 849 | 849 |
| 850 unsigned Internals::activeMarkerCountForNode(Node* node, ExceptionState& es) | 850 unsigned Internals::activeMarkerCountForNode(Node* node, ExceptionState& es) |
| 851 { | 851 { |
| 852 if (!node) { | 852 if (!node) { |
| 853 es.throwDOMException(InvalidAccessError); | 853 es.throwDOMException(InvalidAccessError); |
| 854 return 0; | 854 return 0; |
| 855 } | 855 } |
| 856 | 856 |
| 857 // Only TextMatch markers can be active. | 857 // Only TextMatch markers can be active. |
| 858 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch; | 858 DocumentMarker::MarkerType markerType = DocumentMarker::TextMatch; |
| 859 Vector<DocumentMarker*> markers = node->document()->markers()->markersFor(no
de, markerType); | 859 Vector<DocumentMarker*> markers = node->document().markers()->markersFor(nod
e, markerType); |
| 860 | 860 |
| 861 unsigned activeMarkerCount = 0; | 861 unsigned activeMarkerCount = 0; |
| 862 for (Vector<DocumentMarker*>::iterator iter = markers.begin(); iter != marke
rs.end(); ++iter) { | 862 for (Vector<DocumentMarker*>::iterator iter = markers.begin(); iter != marke
rs.end(); ++iter) { |
| 863 if ((*iter)->activeMatch()) | 863 if ((*iter)->activeMatch()) |
| 864 activeMarkerCount++; | 864 activeMarkerCount++; |
| 865 } | 865 } |
| 866 | 866 |
| 867 return activeMarkerCount; | 867 return activeMarkerCount; |
| 868 } | 868 } |
| 869 | 869 |
| 870 DocumentMarker* Internals::markerAt(Node* node, const String& markerType, unsign
ed index, ExceptionState& es) | 870 DocumentMarker* Internals::markerAt(Node* node, const String& markerType, unsign
ed index, ExceptionState& es) |
| 871 { | 871 { |
| 872 if (!node) { | 872 if (!node) { |
| 873 es.throwDOMException(InvalidAccessError); | 873 es.throwDOMException(InvalidAccessError); |
| 874 return 0; | 874 return 0; |
| 875 } | 875 } |
| 876 | 876 |
| 877 DocumentMarker::MarkerTypes markerTypes = 0; | 877 DocumentMarker::MarkerTypes markerTypes = 0; |
| 878 if (!markerTypesFrom(markerType, markerTypes)) { | 878 if (!markerTypesFrom(markerType, markerTypes)) { |
| 879 es.throwDOMException(SyntaxError); | 879 es.throwDOMException(SyntaxError); |
| 880 return 0; | 880 return 0; |
| 881 } | 881 } |
| 882 | 882 |
| 883 Vector<DocumentMarker*> markers = node->document()->markers()->markersFor(no
de, markerTypes); | 883 Vector<DocumentMarker*> markers = node->document().markers()->markersFor(nod
e, markerTypes); |
| 884 if (markers.size() <= index) | 884 if (markers.size() <= index) |
| 885 return 0; | 885 return 0; |
| 886 return markers[index]; | 886 return markers[index]; |
| 887 } | 887 } |
| 888 | 888 |
| 889 PassRefPtr<Range> Internals::markerRangeForNode(Node* node, const String& marker
Type, unsigned index, ExceptionState& es) | 889 PassRefPtr<Range> Internals::markerRangeForNode(Node* node, const String& marker
Type, unsigned index, ExceptionState& es) |
| 890 { | 890 { |
| 891 DocumentMarker* marker = markerAt(node, markerType, index, es); | 891 DocumentMarker* marker = markerAt(node, markerType, index, es); |
| 892 if (!marker) | 892 if (!marker) |
| 893 return 0; | 893 return 0; |
| 894 return Range::create(node->document(), node, marker->startOffset(), node, ma
rker->endOffset()); | 894 return Range::create(&node->document(), node, marker->startOffset(), node, m
arker->endOffset()); |
| 895 } | 895 } |
| 896 | 896 |
| 897 String Internals::markerDescriptionForNode(Node* node, const String& markerType,
unsigned index, ExceptionState& es) | 897 String Internals::markerDescriptionForNode(Node* node, const String& markerType,
unsigned index, ExceptionState& es) |
| 898 { | 898 { |
| 899 DocumentMarker* marker = markerAt(node, markerType, index, es); | 899 DocumentMarker* marker = markerAt(node, markerType, index, es); |
| 900 if (!marker) | 900 if (!marker) |
| 901 return String(); | 901 return String(); |
| 902 return marker->description(); | 902 return marker->description(); |
| 903 } | 903 } |
| 904 | 904 |
| 905 void Internals::addTextMatchMarker(const Range* range, bool isActive) | 905 void Internals::addTextMatchMarker(const Range* range, bool isActive) |
| 906 { | 906 { |
| 907 range->ownerDocument()->updateLayoutIgnorePendingStylesheets(); | 907 range->ownerDocument()->updateLayoutIgnorePendingStylesheets(); |
| 908 range->ownerDocument()->markers()->addTextMatchMarker(range, isActive); | 908 range->ownerDocument()->markers()->addTextMatchMarker(range, isActive); |
| 909 } | 909 } |
| 910 | 910 |
| 911 void Internals::setMarkersActive(Node* node, unsigned startOffset, unsigned endO
ffset, bool active, ExceptionState& es) | 911 void Internals::setMarkersActive(Node* node, unsigned startOffset, unsigned endO
ffset, bool active, ExceptionState& es) |
| 912 { | 912 { |
| 913 if (!node) { | 913 if (!node) { |
| 914 es.throwDOMException(InvalidAccessError); | 914 es.throwDOMException(InvalidAccessError); |
| 915 return; | 915 return; |
| 916 } | 916 } |
| 917 | 917 |
| 918 node->document()->markers()->setMarkersActive(node, startOffset, endOffset,
active); | 918 node->document().markers()->setMarkersActive(node, startOffset, endOffset, a
ctive); |
| 919 } | 919 } |
| 920 | 920 |
| 921 void Internals::setScrollViewPosition(Document* document, long x, long y, Except
ionState& es) | 921 void Internals::setScrollViewPosition(Document* document, long x, long y, Except
ionState& es) |
| 922 { | 922 { |
| 923 if (!document || !document->view()) { | 923 if (!document || !document->view()) { |
| 924 es.throwDOMException(InvalidAccessError); | 924 es.throwDOMException(InvalidAccessError); |
| 925 return; | 925 return; |
| 926 } | 926 } |
| 927 | 927 |
| 928 FrameView* frameView = document->view(); | 928 FrameView* frameView = document->view(); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1083 { | 1083 { |
| 1084 if (!element->hasTagName(inputTag)) { | 1084 if (!element->hasTagName(inputTag)) { |
| 1085 es.throwDOMException(InvalidAccessError); | 1085 es.throwDOMException(InvalidAccessError); |
| 1086 return; | 1086 return; |
| 1087 } | 1087 } |
| 1088 toHTMLInputElement(element)->setAutofilled(enabled); | 1088 toHTMLInputElement(element)->setAutofilled(enabled); |
| 1089 } | 1089 } |
| 1090 | 1090 |
| 1091 void Internals::scrollElementToRect(Element* element, long x, long y, long w, lo
ng h, ExceptionState& es) | 1091 void Internals::scrollElementToRect(Element* element, long x, long y, long w, lo
ng h, ExceptionState& es) |
| 1092 { | 1092 { |
| 1093 if (!element || !element->document() || !element->document()->view()) { | 1093 if (!element || !element->document().view()) { |
| 1094 es.throwDOMException(InvalidAccessError); | 1094 es.throwDOMException(InvalidAccessError); |
| 1095 return; | 1095 return; |
| 1096 } | 1096 } |
| 1097 FrameView* frameView = element->document()->view(); | 1097 FrameView* frameView = element->document().view(); |
| 1098 frameView->scrollElementToRect(element, IntRect(x, y, w, h)); | 1098 frameView->scrollElementToRect(element, IntRect(x, y, w, h)); |
| 1099 } | 1099 } |
| 1100 | 1100 |
| 1101 void Internals::paintControlTints(Document* document, ExceptionState& es) | 1101 void Internals::paintControlTints(Document* document, ExceptionState& es) |
| 1102 { | 1102 { |
| 1103 if (!document || !document->view()) { | 1103 if (!document || !document->view()) { |
| 1104 es.throwDOMException(InvalidAccessError); | 1104 es.throwDOMException(InvalidAccessError); |
| 1105 return; | 1105 return; |
| 1106 } | 1106 } |
| 1107 | 1107 |
| 1108 FrameView* frameView = document->view(); | 1108 FrameView* frameView = document->view(); |
| 1109 frameView->paintControlTints(); | 1109 frameView->paintControlTints(); |
| 1110 } | 1110 } |
| 1111 | 1111 |
| 1112 PassRefPtr<Range> Internals::rangeFromLocationAndLength(Element* scope, int rang
eLocation, int rangeLength, ExceptionState& es) | 1112 PassRefPtr<Range> Internals::rangeFromLocationAndLength(Element* scope, int rang
eLocation, int rangeLength, ExceptionState& es) |
| 1113 { | 1113 { |
| 1114 if (!scope) { | 1114 if (!scope) { |
| 1115 es.throwDOMException(InvalidAccessError); | 1115 es.throwDOMException(InvalidAccessError); |
| 1116 return 0; | 1116 return 0; |
| 1117 } | 1117 } |
| 1118 | 1118 |
| 1119 // TextIterator depends on Layout information, make sure layout it up to dat
e. | 1119 // TextIterator depends on Layout information, make sure layout it up to dat
e. |
| 1120 scope->document()->updateLayoutIgnorePendingStylesheets(); | 1120 scope->document().updateLayoutIgnorePendingStylesheets(); |
| 1121 | 1121 |
| 1122 return TextIterator::rangeFromLocationAndLength(scope, rangeLocation, rangeL
ength); | 1122 return TextIterator::rangeFromLocationAndLength(scope, rangeLocation, rangeL
ength); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 unsigned Internals::locationFromRange(Element* scope, const Range* range, Except
ionState& es) | 1125 unsigned Internals::locationFromRange(Element* scope, const Range* range, Except
ionState& es) |
| 1126 { | 1126 { |
| 1127 if (!scope || !range) { | 1127 if (!scope || !range) { |
| 1128 es.throwDOMException(InvalidAccessError); | 1128 es.throwDOMException(InvalidAccessError); |
| 1129 return 0; | 1129 return 0; |
| 1130 } | 1130 } |
| 1131 | 1131 |
| 1132 // TextIterator depends on Layout information, make sure layout it up to dat
e. | 1132 // TextIterator depends on Layout information, make sure layout it up to dat
e. |
| 1133 scope->document()->updateLayoutIgnorePendingStylesheets(); | 1133 scope->document().updateLayoutIgnorePendingStylesheets(); |
| 1134 | 1134 |
| 1135 size_t location = 0; | 1135 size_t location = 0; |
| 1136 size_t unusedLength = 0; | 1136 size_t unusedLength = 0; |
| 1137 TextIterator::getLocationAndLengthFromRange(scope, range, location, unusedLe
ngth); | 1137 TextIterator::getLocationAndLengthFromRange(scope, range, location, unusedLe
ngth); |
| 1138 return location; | 1138 return location; |
| 1139 } | 1139 } |
| 1140 | 1140 |
| 1141 unsigned Internals::lengthFromRange(Element* scope, const Range* range, Exceptio
nState& es) | 1141 unsigned Internals::lengthFromRange(Element* scope, const Range* range, Exceptio
nState& es) |
| 1142 { | 1142 { |
| 1143 if (!scope || !range) { | 1143 if (!scope || !range) { |
| 1144 es.throwDOMException(InvalidAccessError); | 1144 es.throwDOMException(InvalidAccessError); |
| 1145 return 0; | 1145 return 0; |
| 1146 } | 1146 } |
| 1147 | 1147 |
| 1148 // TextIterator depends on Layout information, make sure layout it up to dat
e. | 1148 // TextIterator depends on Layout information, make sure layout it up to dat
e. |
| 1149 scope->document()->updateLayoutIgnorePendingStylesheets(); | 1149 scope->document().updateLayoutIgnorePendingStylesheets(); |
| 1150 | 1150 |
| 1151 size_t unusedLocation = 0; | 1151 size_t unusedLocation = 0; |
| 1152 size_t length = 0; | 1152 size_t length = 0; |
| 1153 TextIterator::getLocationAndLengthFromRange(scope, range, unusedLocation, le
ngth); | 1153 TextIterator::getLocationAndLengthFromRange(scope, range, unusedLocation, le
ngth); |
| 1154 return length; | 1154 return length; |
| 1155 } | 1155 } |
| 1156 | 1156 |
| 1157 String Internals::rangeAsText(const Range* range, ExceptionState& es) | 1157 String Internals::rangeAsText(const Range* range, ExceptionState& es) |
| 1158 { | 1158 { |
| 1159 if (!range) { | 1159 if (!range) { |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1669 return elementLayerTreeAsText(element, 0, es); | 1669 return elementLayerTreeAsText(element, 0, es); |
| 1670 } | 1670 } |
| 1671 | 1671 |
| 1672 static PassRefPtr<NodeList> paintOrderList(Element* element, ExceptionState& es,
RenderLayer::PaintOrderListType type) | 1672 static PassRefPtr<NodeList> paintOrderList(Element* element, ExceptionState& es,
RenderLayer::PaintOrderListType type) |
| 1673 { | 1673 { |
| 1674 if (!element) { | 1674 if (!element) { |
| 1675 es.throwDOMException(InvalidAccessError); | 1675 es.throwDOMException(InvalidAccessError); |
| 1676 return 0; | 1676 return 0; |
| 1677 } | 1677 } |
| 1678 | 1678 |
| 1679 element->document()->updateLayout(); | 1679 element->document().updateLayout(); |
| 1680 | 1680 |
| 1681 RenderObject* renderer = element->renderer(); | 1681 RenderObject* renderer = element->renderer(); |
| 1682 if (!renderer || !renderer->isBox()) { | 1682 if (!renderer || !renderer->isBox()) { |
| 1683 es.throwDOMException(InvalidAccessError); | 1683 es.throwDOMException(InvalidAccessError); |
| 1684 return 0; | 1684 return 0; |
| 1685 } | 1685 } |
| 1686 | 1686 |
| 1687 RenderLayer* layer = toRenderBox(renderer)->layer(); | 1687 RenderLayer* layer = toRenderBox(renderer)->layer(); |
| 1688 if (!layer) { | 1688 if (!layer) { |
| 1689 es.throwDOMException(InvalidAccessError); | 1689 es.throwDOMException(InvalidAccessError); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1705 return paintOrderList(element, es, RenderLayer::AfterPromote); | 1705 return paintOrderList(element, es, RenderLayer::AfterPromote); |
| 1706 } | 1706 } |
| 1707 | 1707 |
| 1708 bool Internals::scrollsWithRespectTo(Element* element1, Element* element2, Excep
tionState& es) | 1708 bool Internals::scrollsWithRespectTo(Element* element1, Element* element2, Excep
tionState& es) |
| 1709 { | 1709 { |
| 1710 if (!element1 || !element2) { | 1710 if (!element1 || !element2) { |
| 1711 es.throwDOMException(InvalidAccessError); | 1711 es.throwDOMException(InvalidAccessError); |
| 1712 return 0; | 1712 return 0; |
| 1713 } | 1713 } |
| 1714 | 1714 |
| 1715 element1->document()->updateLayout(); | 1715 element1->document().updateLayout(); |
| 1716 | 1716 |
| 1717 RenderObject* renderer1 = element1->renderer(); | 1717 RenderObject* renderer1 = element1->renderer(); |
| 1718 RenderObject* renderer2 = element2->renderer(); | 1718 RenderObject* renderer2 = element2->renderer(); |
| 1719 if (!renderer1 || !renderer2 || !renderer1->isBox() || !renderer2->isBox())
{ | 1719 if (!renderer1 || !renderer2 || !renderer1->isBox() || !renderer2->isBox())
{ |
| 1720 es.throwDOMException(InvalidAccessError); | 1720 es.throwDOMException(InvalidAccessError); |
| 1721 return 0; | 1721 return 0; |
| 1722 } | 1722 } |
| 1723 | 1723 |
| 1724 RenderLayer* layer1 = toRenderBox(renderer1)->layer(); | 1724 RenderLayer* layer1 = toRenderBox(renderer1)->layer(); |
| 1725 RenderLayer* layer2 = toRenderBox(renderer2)->layer(); | 1725 RenderLayer* layer2 = toRenderBox(renderer2)->layer(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1741 return document->frame()->layerTreeAsText(flags); | 1741 return document->frame()->layerTreeAsText(flags); |
| 1742 } | 1742 } |
| 1743 | 1743 |
| 1744 String Internals::elementLayerTreeAsText(Element* element, unsigned flags, Excep
tionState& es) const | 1744 String Internals::elementLayerTreeAsText(Element* element, unsigned flags, Excep
tionState& es) const |
| 1745 { | 1745 { |
| 1746 if (!element) { | 1746 if (!element) { |
| 1747 es.throwDOMException(InvalidAccessError); | 1747 es.throwDOMException(InvalidAccessError); |
| 1748 return String(); | 1748 return String(); |
| 1749 } | 1749 } |
| 1750 | 1750 |
| 1751 element->document()->updateLayout(); | 1751 element->document().updateLayout(); |
| 1752 | 1752 |
| 1753 RenderObject* renderer = element->renderer(); | 1753 RenderObject* renderer = element->renderer(); |
| 1754 if (!renderer || !renderer->isBox()) { | 1754 if (!renderer || !renderer->isBox()) { |
| 1755 es.throwDOMException(InvalidAccessError); | 1755 es.throwDOMException(InvalidAccessError); |
| 1756 return String(); | 1756 return String(); |
| 1757 } | 1757 } |
| 1758 | 1758 |
| 1759 RenderLayer* layer = toRenderBox(renderer)->layer(); | 1759 RenderLayer* layer = toRenderBox(renderer)->layer(); |
| 1760 if (!layer | 1760 if (!layer |
| 1761 || !layer->backing() | 1761 || !layer->backing() |
| 1762 || !layer->backing()->graphicsLayer()) { | 1762 || !layer->backing()->graphicsLayer()) { |
| 1763 // Don't raise exception in these cases which may be normally used in te
sts. | 1763 // Don't raise exception in these cases which may be normally used in te
sts. |
| 1764 return String(); | 1764 return String(); |
| 1765 } | 1765 } |
| 1766 | 1766 |
| 1767 return layer->backing()->graphicsLayer()->layerTreeAsText(flags); | 1767 return layer->backing()->graphicsLayer()->layerTreeAsText(flags); |
| 1768 } | 1768 } |
| 1769 | 1769 |
| 1770 void Internals::setNeedsCompositedScrolling(Element* element, unsigned needsComp
ositedScrolling, ExceptionState& es) | 1770 void Internals::setNeedsCompositedScrolling(Element* element, unsigned needsComp
ositedScrolling, ExceptionState& es) |
| 1771 { | 1771 { |
| 1772 if (!element) { | 1772 if (!element) { |
| 1773 es.throwDOMException(InvalidAccessError); | 1773 es.throwDOMException(InvalidAccessError); |
| 1774 return; | 1774 return; |
| 1775 } | 1775 } |
| 1776 | 1776 |
| 1777 element->document()->updateLayout(); | 1777 element->document().updateLayout(); |
| 1778 | 1778 |
| 1779 RenderObject* renderer = element->renderer(); | 1779 RenderObject* renderer = element->renderer(); |
| 1780 if (!renderer || !renderer->isBox()) { | 1780 if (!renderer || !renderer->isBox()) { |
| 1781 es.throwDOMException(InvalidAccessError); | 1781 es.throwDOMException(InvalidAccessError); |
| 1782 return; | 1782 return; |
| 1783 } | 1783 } |
| 1784 | 1784 |
| 1785 RenderLayer* layer = toRenderBox(renderer)->layer(); | 1785 RenderLayer* layer = toRenderBox(renderer)->layer(); |
| 1786 if (!layer) { | 1786 if (!layer) { |
| 1787 es.throwDOMException(InvalidAccessError); | 1787 es.throwDOMException(InvalidAccessError); |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2205 return false; | 2205 return false; |
| 2206 sharedContext->getExtensions()->loseContextCHROMIUM(Extensions3D::GUILTY_CON
TEXT_RESET_ARB, Extensions3D::INNOCENT_CONTEXT_RESET_ARB); | 2206 sharedContext->getExtensions()->loseContextCHROMIUM(Extensions3D::GUILTY_CON
TEXT_RESET_ARB, Extensions3D::INNOCENT_CONTEXT_RESET_ARB); |
| 2207 // To prevent tests that call loseSharedGraphicsContext3D from being | 2207 // To prevent tests that call loseSharedGraphicsContext3D from being |
| 2208 // flaky, we call finish so that the context is guaranteed to be lost | 2208 // flaky, we call finish so that the context is guaranteed to be lost |
| 2209 // synchronously (i.e. before returning). | 2209 // synchronously (i.e. before returning). |
| 2210 sharedContext->finish(); | 2210 sharedContext->finish(); |
| 2211 return true; | 2211 return true; |
| 2212 } | 2212 } |
| 2213 | 2213 |
| 2214 } | 2214 } |
| OLD | NEW |