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

Side by Side Diff: third_party/WebKit/Source/core/fileapi/FileReader.cpp

Issue 2804403003: Replace ASSERT, ASSERT_NOT_REACHED, and RELEASE_ASSERT in core/fileapi (Closed)
Patch Set: fix Created 3 years, 8 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) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 private: 126 private:
127 explicit ThrottlingController(ExecutionContext& context) 127 explicit ThrottlingController(ExecutionContext& context)
128 : Supplement<ExecutionContext>(context), 128 : Supplement<ExecutionContext>(context),
129 max_running_readers_(kMaxOutstandingRequestsPerThread) {} 129 max_running_readers_(kMaxOutstandingRequestsPerThread) {}
130 130
131 void PushReader(FileReader* reader) { 131 void PushReader(FileReader* reader) {
132 if (pending_readers_.IsEmpty() && 132 if (pending_readers_.IsEmpty() &&
133 running_readers_.size() < max_running_readers_) { 133 running_readers_.size() < max_running_readers_) {
134 reader->ExecutePendingRead(); 134 reader->ExecutePendingRead();
135 ASSERT(!running_readers_.Contains(reader)); 135 DCHECK(!running_readers_.Contains(reader));
136 running_readers_.insert(reader); 136 running_readers_.insert(reader);
137 return; 137 return;
138 } 138 }
139 pending_readers_.push_back(reader); 139 pending_readers_.push_back(reader);
140 ExecuteReaders(); 140 ExecuteReaders();
141 } 141 }
142 142
143 FinishReaderType RemoveReader(FileReader* reader) { 143 FinishReaderType RemoveReader(FileReader* reader) {
144 FileReaderHashSet::const_iterator hash_iter = running_readers_.Find(reader); 144 FileReaderHashSet::const_iterator hash_iter = running_readers_.Find(reader);
145 if (hash_iter != running_readers_.end()) { 145 if (hash_iter != running_readers_.end()) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 } 217 }
218 Terminate(); 218 Terminate();
219 } 219 }
220 220
221 bool FileReader::HasPendingActivity() const { 221 bool FileReader::HasPendingActivity() const {
222 return state_ == kLoading || still_firing_events_; 222 return state_ == kLoading || still_firing_events_;
223 } 223 }
224 224
225 void FileReader::readAsArrayBuffer(Blob* blob, 225 void FileReader::readAsArrayBuffer(Blob* blob,
226 ExceptionState& exception_state) { 226 ExceptionState& exception_state) {
227 ASSERT(blob); 227 DCHECK(blob);
228 DVLOG(1) << "reading as array buffer: " << Utf8BlobUUID(blob).Data() << " " 228 DVLOG(1) << "reading as array buffer: " << Utf8BlobUUID(blob).Data() << " "
229 << Utf8FilePath(blob).Data(); 229 << Utf8FilePath(blob).Data();
230 230
231 ReadInternal(blob, FileReaderLoader::kReadAsArrayBuffer, exception_state); 231 ReadInternal(blob, FileReaderLoader::kReadAsArrayBuffer, exception_state);
232 } 232 }
233 233
234 void FileReader::readAsBinaryString(Blob* blob, 234 void FileReader::readAsBinaryString(Blob* blob,
235 ExceptionState& exception_state) { 235 ExceptionState& exception_state) {
236 ASSERT(blob); 236 DCHECK(blob);
237 DVLOG(1) << "reading as binary: " << Utf8BlobUUID(blob).Data() << " " 237 DVLOG(1) << "reading as binary: " << Utf8BlobUUID(blob).Data() << " "
238 << Utf8FilePath(blob).Data(); 238 << Utf8FilePath(blob).Data();
239 239
240 ReadInternal(blob, FileReaderLoader::kReadAsBinaryString, exception_state); 240 ReadInternal(blob, FileReaderLoader::kReadAsBinaryString, exception_state);
241 } 241 }
242 242
243 void FileReader::readAsText(Blob* blob, 243 void FileReader::readAsText(Blob* blob,
244 const String& encoding, 244 const String& encoding,
245 ExceptionState& exception_state) { 245 ExceptionState& exception_state) {
246 ASSERT(blob); 246 DCHECK(blob);
247 DVLOG(1) << "reading as text: " << Utf8BlobUUID(blob).Data() << " " 247 DVLOG(1) << "reading as text: " << Utf8BlobUUID(blob).Data() << " "
248 << Utf8FilePath(blob).Data(); 248 << Utf8FilePath(blob).Data();
249 249
250 encoding_ = encoding; 250 encoding_ = encoding;
251 ReadInternal(blob, FileReaderLoader::kReadAsText, exception_state); 251 ReadInternal(blob, FileReaderLoader::kReadAsText, exception_state);
252 } 252 }
253 253
254 void FileReader::readAsText(Blob* blob, ExceptionState& exception_state) { 254 void FileReader::readAsText(Blob* blob, ExceptionState& exception_state) {
255 readAsText(blob, String(), exception_state); 255 readAsText(blob, String(), exception_state);
256 } 256 }
257 257
258 void FileReader::readAsDataURL(Blob* blob, ExceptionState& exception_state) { 258 void FileReader::readAsDataURL(Blob* blob, ExceptionState& exception_state) {
259 ASSERT(blob); 259 DCHECK(blob);
260 DVLOG(1) << "reading as data URL: " << Utf8BlobUUID(blob).Data() << " " 260 DVLOG(1) << "reading as data URL: " << Utf8BlobUUID(blob).Data() << " "
261 << Utf8FilePath(blob).Data(); 261 << Utf8FilePath(blob).Data();
262 262
263 ReadInternal(blob, FileReaderLoader::kReadAsDataURL, exception_state); 263 ReadInternal(blob, FileReaderLoader::kReadAsDataURL, exception_state);
264 } 264 }
265 265
266 void FileReader::ReadInternal(Blob* blob, 266 void FileReader::ReadInternal(Blob* blob,
267 FileReaderLoader::ReadType type, 267 FileReaderLoader::ReadType type,
268 ExceptionState& exception_state) { 268 ExceptionState& exception_state) {
269 // If multiple concurrent read methods are called on the same FileReader, 269 // If multiple concurrent read methods are called on the same FileReader,
(...skipping 29 matching lines...) Expand all
299 299
300 // "Snapshot" the Blob data rather than the Blob itself as ongoing 300 // "Snapshot" the Blob data rather than the Blob itself as ongoing
301 // read operations should not be affected if close() is called on 301 // read operations should not be affected if close() is called on
302 // the Blob being read. 302 // the Blob being read.
303 blob_data_handle_ = blob->GetBlobDataHandle(); 303 blob_data_handle_ = blob->GetBlobDataHandle();
304 blob_type_ = blob->type(); 304 blob_type_ = blob->type();
305 read_type_ = type; 305 read_type_ = type;
306 state_ = kLoading; 306 state_ = kLoading;
307 loading_state_ = kLoadingStatePending; 307 loading_state_ = kLoadingStatePending;
308 error_ = nullptr; 308 error_ = nullptr;
309 ASSERT(ThrottlingController::From(context)); 309 DCHECK(ThrottlingController::From(context));
310 ThrottlingController::PushReader(context, this); 310 ThrottlingController::PushReader(context, this);
311 } 311 }
312 312
313 void FileReader::ExecutePendingRead() { 313 void FileReader::ExecutePendingRead() {
314 ASSERT(loading_state_ == kLoadingStatePending); 314 DCHECK_EQ(loading_state_, kLoadingStatePending);
315 loading_state_ = kLoadingStateLoading; 315 loading_state_ = kLoadingStateLoading;
316 316
317 loader_ = FileReaderLoader::Create(read_type_, this); 317 loader_ = FileReaderLoader::Create(read_type_, this);
318 loader_->SetEncoding(encoding_); 318 loader_->SetEncoding(encoding_);
319 loader_->SetDataType(blob_type_); 319 loader_->SetDataType(blob_type_);
320 loader_->Start(GetExecutionContext(), blob_data_handle_); 320 loader_->Start(GetExecutionContext(), blob_data_handle_);
321 blob_data_handle_ = nullptr; 321 blob_data_handle_ = nullptr;
322 } 322 }
323 323
324 void FileReader::abort() { 324 void FileReader::abort() {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 kProgressNotificationIntervalMS) { 390 kProgressNotificationIntervalMS) {
391 AutoReset<bool> firing_events(&still_firing_events_, true); 391 AutoReset<bool> firing_events(&still_firing_events_, true);
392 FireEvent(EventTypeNames::progress); 392 FireEvent(EventTypeNames::progress);
393 last_progress_notification_time_ms_ = now; 393 last_progress_notification_time_ms_ = now;
394 } 394 }
395 } 395 }
396 396
397 void FileReader::DidFinishLoading() { 397 void FileReader::DidFinishLoading() {
398 if (loading_state_ == kLoadingStateAborted) 398 if (loading_state_ == kLoadingStateAborted)
399 return; 399 return;
400 ASSERT(loading_state_ == kLoadingStateLoading); 400 DCHECK_EQ(loading_state_, kLoadingStateLoading);
401 401
402 // TODO(jochen): When we set m_state to DONE below, we still need to fire 402 // TODO(jochen): When we set m_state to DONE below, we still need to fire
403 // the load and loadend events. To avoid GC to collect this FileReader, we 403 // the load and loadend events. To avoid GC to collect this FileReader, we
404 // use this separate variable to keep the wrapper of this FileReader alive. 404 // use this separate variable to keep the wrapper of this FileReader alive.
405 // An alternative would be to keep any ActiveScriptWrappables alive that is on 405 // An alternative would be to keep any ActiveScriptWrappables alive that is on
406 // the stack. 406 // the stack.
407 AutoReset<bool> firing_events(&still_firing_events_, true); 407 AutoReset<bool> firing_events(&still_firing_events_, true);
408 408
409 // It's important that we change m_loadingState before firing any events 409 // It's important that we change m_loadingState before firing any events
410 // since any of the events could call abort(), which internally checks 410 // since any of the events could call abort(), which internally checks
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 ProgressEvent::Create(type, false, loader_->BytesLoaded(), 0)); 467 ProgressEvent::Create(type, false, loader_->BytesLoaded(), 0));
468 } 468 }
469 469
470 DEFINE_TRACE(FileReader) { 470 DEFINE_TRACE(FileReader) {
471 visitor->Trace(error_); 471 visitor->Trace(error_);
472 EventTargetWithInlineData::Trace(visitor); 472 EventTargetWithInlineData::Trace(visitor);
473 ContextLifecycleObserver::Trace(visitor); 473 ContextLifecycleObserver::Trace(visitor);
474 } 474 }
475 475
476 } // namespace blink 476 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fileapi/FileError.cpp ('k') | third_party/WebKit/Source/core/fileapi/FileReaderLoader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698