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

Side by Side Diff: third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp

Issue 2751483005: Replace ASSERT, ASSERT_NOT_REACHED, and RELEASE_ASSERT in core/html/parser/ (Closed)
Patch Set: rebase Created 3 years, 9 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) 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 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 // https://bugs.webkit.org/show_bug.cgi?id=110408. 62 // https://bugs.webkit.org/show_bug.cgi?id=110408.
63 static const size_t defaultPendingTokenLimit = 1000; 63 static const size_t defaultPendingTokenLimit = 1000;
64 64
65 using namespace HTMLNames; 65 using namespace HTMLNames;
66 66
67 #if DCHECK_IS_ON() 67 #if DCHECK_IS_ON()
68 68
69 static void checkThatTokensAreSafeToSendToAnotherThread( 69 static void checkThatTokensAreSafeToSendToAnotherThread(
70 const CompactHTMLTokenStream* tokens) { 70 const CompactHTMLTokenStream* tokens) {
71 for (size_t i = 0; i < tokens->size(); ++i) 71 for (size_t i = 0; i < tokens->size(); ++i)
72 ASSERT(tokens->at(i).isSafeToSendToAnotherThread()); 72 DCHECK(tokens->at(i).isSafeToSendToAnotherThread());
73 } 73 }
74 74
75 static void checkThatPreloadsAreSafeToSendToAnotherThread( 75 static void checkThatPreloadsAreSafeToSendToAnotherThread(
76 const PreloadRequestStream& preloads) { 76 const PreloadRequestStream& preloads) {
77 for (size_t i = 0; i < preloads.size(); ++i) 77 for (size_t i = 0; i < preloads.size(); ++i)
78 ASSERT(preloads[i]->isSafeToSendToAnotherThread()); 78 DCHECK(preloads[i]->isSafeToSendToAnotherThread());
79 } 79 }
80 80
81 static void checkThatXSSInfosAreSafeToSendToAnotherThread( 81 static void checkThatXSSInfosAreSafeToSendToAnotherThread(
82 const XSSInfoStream& infos) { 82 const XSSInfoStream& infos) {
83 for (size_t i = 0; i < infos.size(); ++i) 83 for (size_t i = 0; i < infos.size(); ++i)
84 ASSERT(infos[i]->isSafeToSendToAnotherThread()); 84 DCHECK(infos[i]->isSafeToSendToAnotherThread());
85 } 85 }
86 86
87 #endif 87 #endif
88 88
89 WeakPtr<BackgroundHTMLParser> BackgroundHTMLParser::create( 89 WeakPtr<BackgroundHTMLParser> BackgroundHTMLParser::create(
90 std::unique_ptr<Configuration> config, 90 std::unique_ptr<Configuration> config,
91 RefPtr<WebTaskRunner> loadingTaskRunner) { 91 RefPtr<WebTaskRunner> loadingTaskRunner) {
92 auto* backgroundParser = 92 auto* backgroundParser =
93 new BackgroundHTMLParser(std::move(config), std::move(loadingTaskRunner)); 93 new BackgroundHTMLParser(std::move(config), std::move(loadingTaskRunner));
94 return backgroundParser->m_weakFactory.createWeakPtr(); 94 return backgroundParser->m_weakFactory.createWeakPtr();
(...skipping 26 matching lines...) Expand all
121 m_pendingTokenLimit(config->pendingTokenLimit), 121 m_pendingTokenLimit(config->pendingTokenLimit),
122 m_xssAuditor(std::move(config->xssAuditor)), 122 m_xssAuditor(std::move(config->xssAuditor)),
123 m_decoder(std::move(config->decoder)), 123 m_decoder(std::move(config->decoder)),
124 m_loadingTaskRunner(std::move(loadingTaskRunner)), 124 m_loadingTaskRunner(std::move(loadingTaskRunner)),
125 m_tokenizedChunkQueue(std::move(config->tokenizedChunkQueue)), 125 m_tokenizedChunkQueue(std::move(config->tokenizedChunkQueue)),
126 m_pendingCSPMetaTokenIndex( 126 m_pendingCSPMetaTokenIndex(
127 HTMLDocumentParser::TokenizedChunk::noPendingToken), 127 HTMLDocumentParser::TokenizedChunk::noPendingToken),
128 m_startingScript(false), 128 m_startingScript(false),
129 m_lastBytesReceivedTime(0.0), 129 m_lastBytesReceivedTime(0.0),
130 m_shouldCoalesceChunks(config->shouldCoalesceChunks) { 130 m_shouldCoalesceChunks(config->shouldCoalesceChunks) {
131 ASSERT(m_outstandingTokenLimit > 0); 131 DCHECK_GT(m_outstandingTokenLimit, 0u);
132 ASSERT(m_pendingTokenLimit > 0); 132 DCHECK_GT(m_pendingTokenLimit, 0u);
133 ASSERT(m_outstandingTokenLimit >= m_pendingTokenLimit); 133 DCHECK_GE(m_outstandingTokenLimit, m_pendingTokenLimit);
134 } 134 }
135 135
136 BackgroundHTMLParser::~BackgroundHTMLParser() {} 136 BackgroundHTMLParser::~BackgroundHTMLParser() {}
137 137
138 void BackgroundHTMLParser::appendRawBytesFromMainThread( 138 void BackgroundHTMLParser::appendRawBytesFromMainThread(
139 std::unique_ptr<Vector<char>> buffer, 139 std::unique_ptr<Vector<char>> buffer,
140 double bytesReceivedTime) { 140 double bytesReceivedTime) {
141 ASSERT(m_decoder); 141 DCHECK(m_decoder);
142 m_lastBytesReceivedTime = bytesReceivedTime; 142 m_lastBytesReceivedTime = bytesReceivedTime;
143 DEFINE_STATIC_LOCAL(CustomCountHistogram, queueDelay, 143 DEFINE_STATIC_LOCAL(CustomCountHistogram, queueDelay,
144 ("Parser.AppendBytesDelay", 1, 5000, 50)); 144 ("Parser.AppendBytesDelay", 1, 5000, 50));
145 queueDelay.count(monotonicallyIncreasingTimeMS() - bytesReceivedTime); 145 queueDelay.count(monotonicallyIncreasingTimeMS() - bytesReceivedTime);
146 updateDocument(m_decoder->decode(buffer->data(), buffer->size())); 146 updateDocument(m_decoder->decode(buffer->data(), buffer->size()));
147 } 147 }
148 148
149 void BackgroundHTMLParser::appendDecodedBytes(const String& input) { 149 void BackgroundHTMLParser::appendDecodedBytes(const String& input) {
150 ASSERT(!m_input.current().isClosed()); 150 DCHECK(!m_input.current().isClosed());
151 m_input.append(input); 151 m_input.append(input);
152 pumpTokenizer(); 152 pumpTokenizer();
153 } 153 }
154 154
155 void BackgroundHTMLParser::setDecoder( 155 void BackgroundHTMLParser::setDecoder(
156 std::unique_ptr<TextResourceDecoder> decoder) { 156 std::unique_ptr<TextResourceDecoder> decoder) {
157 ASSERT(decoder); 157 DCHECK(decoder);
158 m_decoder = std::move(decoder); 158 m_decoder = std::move(decoder);
159 } 159 }
160 160
161 void BackgroundHTMLParser::flush() { 161 void BackgroundHTMLParser::flush() {
162 ASSERT(m_decoder); 162 DCHECK(m_decoder);
163 updateDocument(m_decoder->flush()); 163 updateDocument(m_decoder->flush());
164 } 164 }
165 165
166 void BackgroundHTMLParser::updateDocument(const String& decodedData) { 166 void BackgroundHTMLParser::updateDocument(const String& decodedData) {
167 DocumentEncodingData encodingData(*m_decoder.get()); 167 DocumentEncodingData encodingData(*m_decoder.get());
168 168
169 if (encodingData != m_lastSeenEncodingData) { 169 if (encodingData != m_lastSeenEncodingData) {
170 m_lastSeenEncodingData = encodingData; 170 m_lastSeenEncodingData = encodingData;
171 171
172 m_xssAuditor->setEncoding(encodingData.encoding()); 172 m_xssAuditor->setEncoding(encodingData.encoding());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 213
214 void BackgroundHTMLParser::forcePlaintextForTextDocument() { 214 void BackgroundHTMLParser::forcePlaintextForTextDocument() {
215 // This is only used by the TextDocumentParser (a subclass of 215 // This is only used by the TextDocumentParser (a subclass of
216 // HTMLDocumentParser) to force us into the PLAINTEXT state w/o using a 216 // HTMLDocumentParser) to force us into the PLAINTEXT state w/o using a
217 // <plaintext> tag. The TextDocumentParser uses a <pre> tag for historical / 217 // <plaintext> tag. The TextDocumentParser uses a <pre> tag for historical /
218 // compatibility reasons. 218 // compatibility reasons.
219 m_tokenizer->setState(HTMLTokenizer::PLAINTEXTState); 219 m_tokenizer->setState(HTMLTokenizer::PLAINTEXTState);
220 } 220 }
221 221
222 void BackgroundHTMLParser::markEndOfFile() { 222 void BackgroundHTMLParser::markEndOfFile() {
223 ASSERT(!m_input.current().isClosed()); 223 DCHECK(!m_input.current().isClosed());
224 m_input.append(String(&kEndOfFileMarker, 1)); 224 m_input.append(String(&kEndOfFileMarker, 1));
225 m_input.close(); 225 m_input.close();
226 } 226 }
227 227
228 void BackgroundHTMLParser::pumpTokenizer() { 228 void BackgroundHTMLParser::pumpTokenizer() {
229 TRACE_EVENT0("loading", "BackgroundHTMLParser::pumpTokenizer"); 229 TRACE_EVENT0("loading", "BackgroundHTMLParser::pumpTokenizer");
230 HTMLTreeBuilderSimulator::SimulatedToken simulatedToken = 230 HTMLTreeBuilderSimulator::SimulatedToken simulatedToken =
231 HTMLTreeBuilderSimulator::OtherToken; 231 HTMLTreeBuilderSimulator::OtherToken;
232 232
233 // No need to start speculating until the main thread has almost caught up. 233 // No need to start speculating until the main thread has almost caught up.
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 if (isMainThread()) { 379 if (isMainThread()) {
380 (*WTF::bind(function, std::forward<Ps>(parameters)...))(); 380 (*WTF::bind(function, std::forward<Ps>(parameters)...))();
381 } else { 381 } else {
382 m_loadingTaskRunner->postTask( 382 m_loadingTaskRunner->postTask(
383 BLINK_FROM_HERE, 383 BLINK_FROM_HERE,
384 crossThreadBind(function, std::forward<Ps>(parameters)...)); 384 crossThreadBind(function, std::forward<Ps>(parameters)...));
385 } 385 }
386 } 386 }
387 387
388 } // namespace blink 388 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698