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

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

Issue 440913002: DevTools: Async call stacks for FileSystem API part 2. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 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) 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 21 matching lines...) Expand all
32 #include "core/fileapi/FileReader.h" 32 #include "core/fileapi/FileReader.h"
33 33
34 #include "bindings/core/v8/ExceptionState.h" 34 #include "bindings/core/v8/ExceptionState.h"
35 #include "core/dom/CrossThreadTask.h" 35 #include "core/dom/CrossThreadTask.h"
36 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
37 #include "core/dom/ExceptionCode.h" 37 #include "core/dom/ExceptionCode.h"
38 #include "core/dom/ExecutionContext.h" 38 #include "core/dom/ExecutionContext.h"
39 #include "core/events/ProgressEvent.h" 39 #include "core/events/ProgressEvent.h"
40 #include "core/fileapi/File.h" 40 #include "core/fileapi/File.h"
41 #include "core/frame/LocalFrame.h" 41 #include "core/frame/LocalFrame.h"
42 #include "core/inspector/InspectorInstrumentation.h"
42 #include "core/workers/WorkerClients.h" 43 #include "core/workers/WorkerClients.h"
43 #include "core/workers/WorkerGlobalScope.h" 44 #include "core/workers/WorkerGlobalScope.h"
44 #include "platform/Logging.h" 45 #include "platform/Logging.h"
45 #include "platform/Supplementable.h" 46 #include "platform/Supplementable.h"
46 #include "wtf/ArrayBuffer.h" 47 #include "wtf/ArrayBuffer.h"
47 #include "wtf/CurrentTime.h" 48 #include "wtf/CurrentTime.h"
48 #include "wtf/Deque.h" 49 #include "wtf/Deque.h"
49 #include "wtf/HashSet.h" 50 #include "wtf/HashSet.h"
50 #include "wtf/text/CString.h" 51 #include "wtf/text/CString.h"
51 52
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 ~ThrottlingController() { } 112 ~ThrottlingController() { }
112 113
113 enum FinishReaderType { DoNotRunPendingReaders, RunPendingReaders }; 114 enum FinishReaderType { DoNotRunPendingReaders, RunPendingReaders };
114 115
115 static void pushReader(ExecutionContext* context, FileReader* reader) 116 static void pushReader(ExecutionContext* context, FileReader* reader)
116 { 117 {
117 ThrottlingController* controller = from(context); 118 ThrottlingController* controller = from(context);
118 if (!controller) 119 if (!controller)
119 return; 120 return;
120 121
122 reader->m_asyncOperationId = InspectorInstrumentation::traceAsyncOperati onStarting(context, "FileReader");
121 controller->pushReader(reader); 123 controller->pushReader(reader);
122 } 124 }
123 125
124 static FinishReaderType removeReader(ExecutionContext* context, FileReader* reader) 126 static FinishReaderType removeReader(ExecutionContext* context, FileReader* reader)
125 { 127 {
126 ThrottlingController* controller = from(context); 128 ThrottlingController* controller = from(context);
127 if (!controller) 129 if (!controller)
128 return DoNotRunPendingReaders; 130 return DoNotRunPendingReaders;
129 131
130 return controller->removeReader(reader); 132 return controller->removeReader(reader);
131 } 133 }
132 134
133 static void finishReader(ExecutionContext* context, FileReader* reader, Fini shReaderType nextStep) 135 static void finishReader(ExecutionContext* context, FileReader* reader, Fini shReaderType nextStep)
134 { 136 {
137 InspectorInstrumentation::traceAsyncOperationCompleted(context, reader-> m_asyncOperationId);
138
135 ThrottlingController* controller = from(context); 139 ThrottlingController* controller = from(context);
136 if (!controller) 140 if (!controller)
137 return; 141 return;
138 142
139 controller->finishReader(reader, nextStep); 143 controller->finishReader(reader, nextStep);
140 } 144 }
141 145
142 void trace(Visitor* visitor) 146 void trace(Visitor* visitor)
143 { 147 {
144 #if ENABLE(OILPAN) 148 #if ENABLE(OILPAN)
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 fileReader->suspendIfNeeded(); 219 fileReader->suspendIfNeeded();
216 return fileReader.release(); 220 return fileReader.release();
217 } 221 }
218 222
219 FileReader::FileReader(ExecutionContext* context) 223 FileReader::FileReader(ExecutionContext* context)
220 : ActiveDOMObject(context) 224 : ActiveDOMObject(context)
221 , m_state(EMPTY) 225 , m_state(EMPTY)
222 , m_loadingState(LoadingStateNone) 226 , m_loadingState(LoadingStateNone)
223 , m_readType(FileReaderLoader::ReadAsBinaryString) 227 , m_readType(FileReaderLoader::ReadAsBinaryString)
224 , m_lastProgressNotificationTimeMS(0) 228 , m_lastProgressNotificationTimeMS(0)
229 , m_asyncOperationId(0)
225 { 230 {
226 ScriptWrappable::init(this); 231 ScriptWrappable::init(this);
227 } 232 }
228 233
229 FileReader::~FileReader() 234 FileReader::~FileReader()
230 { 235 {
231 terminate(); 236 terminate();
232 } 237 }
233 238
234 const AtomicString& FileReader::interfaceName() const 239 const AtomicString& FileReader::interfaceName() const
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 458
454 fireEvent(EventTypeNames::error); 459 fireEvent(EventTypeNames::error);
455 fireEvent(EventTypeNames::loadend); 460 fireEvent(EventTypeNames::loadend);
456 461
457 // All possible events have fired and we're done, no more pending activity. 462 // All possible events have fired and we're done, no more pending activity.
458 ThrottlingController::finishReader(executionContext(), this, finalStep); 463 ThrottlingController::finishReader(executionContext(), this, finalStep);
459 } 464 }
460 465
461 void FileReader::fireEvent(const AtomicString& type) 466 void FileReader::fireEvent(const AtomicString& type)
462 { 467 {
468 InspectorInstrumentationCookie cookie = InspectorInstrumentation::traceAsync CallbackStarting(executionContext(), m_asyncOperationId);
463 if (!m_loader) { 469 if (!m_loader) {
464 dispatchEvent(ProgressEvent::create(type, false, 0, 0)); 470 dispatchEvent(ProgressEvent::create(type, false, 0, 0));
471 InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
465 return; 472 return;
466 } 473 }
467 474
468 if (m_loader->totalBytes() >= 0) 475 if (m_loader->totalBytes() >= 0)
469 dispatchEvent(ProgressEvent::create(type, true, m_loader->bytesLoaded(), m_loader->totalBytes())); 476 dispatchEvent(ProgressEvent::create(type, true, m_loader->bytesLoaded(), m_loader->totalBytes()));
470 else 477 else
471 dispatchEvent(ProgressEvent::create(type, false, m_loader->bytesLoaded() , 0)); 478 dispatchEvent(ProgressEvent::create(type, false, m_loader->bytesLoaded() , 0));
479
480 InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
472 } 481 }
473 482
474 PassRefPtr<ArrayBuffer> FileReader::arrayBufferResult() const 483 PassRefPtr<ArrayBuffer> FileReader::arrayBufferResult() const
475 { 484 {
476 if (!m_loader || m_error) 485 if (!m_loader || m_error)
477 return nullptr; 486 return nullptr;
478 return m_loader->arrayBufferResult(); 487 return m_loader->arrayBufferResult();
479 } 488 }
480 489
481 String FileReader::stringResult() 490 String FileReader::stringResult()
482 { 491 {
483 if (!m_loader || m_error) 492 if (!m_loader || m_error)
484 return String(); 493 return String();
485 return m_loader->stringResult(); 494 return m_loader->stringResult();
486 } 495 }
487 496
488 void FileReader::trace(Visitor* visitor) 497 void FileReader::trace(Visitor* visitor)
489 { 498 {
490 visitor->trace(m_error); 499 visitor->trace(m_error);
491 EventTargetWithInlineData::trace(visitor); 500 EventTargetWithInlineData::trace(visitor);
492 } 501 }
493 502
494 } // namespace blink 503 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698