| Index: Source/modules/filesystem/FileSystemCallbacks.cpp
 | 
| diff --git a/Source/modules/filesystem/FileSystemCallbacks.cpp b/Source/modules/filesystem/FileSystemCallbacks.cpp
 | 
| index 2b6bf3f4cbde46887fc89ecacbe8b2732dc95f4c..787fa220b4d9cf3a0b3de6bf3d43a9ecbb18730e 100644
 | 
| --- a/Source/modules/filesystem/FileSystemCallbacks.cpp
 | 
| +++ b/Source/modules/filesystem/FileSystemCallbacks.cpp
 | 
| @@ -35,6 +35,7 @@
 | 
|  #include "core/fileapi/File.h"
 | 
|  #include "core/fileapi/FileError.h"
 | 
|  #include "core/html/VoidCallback.h"
 | 
| +#include "core/inspector/InspectorInstrumentation.h"
 | 
|  #include "modules/filesystem/DOMFilePath.h"
 | 
|  #include "modules/filesystem/DOMFileSystem.h"
 | 
|  #include "modules/filesystem/DOMFileSystemBase.h"
 | 
| @@ -59,15 +60,20 @@ FileSystemCallbacksBase::FileSystemCallbacksBase(PassOwnPtr<ErrorCallback> error
 | 
|      : m_errorCallback(errorCallback)
 | 
|      , m_fileSystem(fileSystem)
 | 
|      , m_executionContext(context)
 | 
| +    , m_asyncOperationId(0)
 | 
|  {
 | 
|      if (m_fileSystem)
 | 
|          m_fileSystem->addPendingCallbacks();
 | 
| +    if (m_executionContext)
 | 
| +        m_asyncOperationId = InspectorInstrumentation::traceAsyncOperationStarting(m_executionContext.get(), "FileSystem");
 | 
|  }
 | 
|  
 | 
|  FileSystemCallbacksBase::~FileSystemCallbacksBase()
 | 
|  {
 | 
|      if (m_fileSystem)
 | 
|          m_fileSystem->removePendingCallbacks();
 | 
| +    if (m_asyncOperationId && m_executionContext)
 | 
| +        InspectorInstrumentation::traceAsyncOperationCompleted(m_executionContext.get(), m_asyncOperationId);
 | 
|  }
 | 
|  
 | 
|  void FileSystemCallbacksBase::didFail(int code)
 | 
| @@ -85,33 +91,39 @@ template <typename CB, typename CBArg>
 | 
|  void FileSystemCallbacksBase::handleEventOrScheduleCallback(PassOwnPtr<CB> callback, CBArg* arg)
 | 
|  {
 | 
|      ASSERT(callback.get());
 | 
| +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::traceAsyncOperationCompletedCallbackStarting(m_executionContext.get(), m_asyncOperationId);
 | 
|      if (shouldScheduleCallback())
 | 
|          DOMFileSystem::scheduleCallback(m_executionContext.get(), callback, arg);
 | 
|      else if (callback)
 | 
|          callback->handleEvent(arg);
 | 
|      m_executionContext.clear();
 | 
| +    InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
 | 
|  }
 | 
|  
 | 
|  template <typename CB, typename CBArg>
 | 
|  void FileSystemCallbacksBase::handleEventOrScheduleCallback(PassOwnPtr<CB> callback, PassRefPtrWillBeRawPtr<CBArg> arg)
 | 
|  {
 | 
|      ASSERT(callback.get());
 | 
| +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::traceAsyncOperationCompletedCallbackStarting(m_executionContext.get(), m_asyncOperationId);
 | 
|      if (shouldScheduleCallback())
 | 
|          DOMFileSystem::scheduleCallback(m_executionContext.get(), callback, arg);
 | 
|      else if (callback)
 | 
|          callback->handleEvent(arg.get());
 | 
|      m_executionContext.clear();
 | 
| +    InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
 | 
|  }
 | 
|  
 | 
|  template <typename CB>
 | 
|  void FileSystemCallbacksBase::handleEventOrScheduleCallback(PassOwnPtr<CB> callback)
 | 
|  {
 | 
|      ASSERT(callback.get());
 | 
| +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::traceAsyncOperationCompletedCallbackStarting(m_executionContext.get(), m_asyncOperationId);
 | 
|      if (shouldScheduleCallback())
 | 
|          DOMFileSystem::scheduleCallback(m_executionContext.get(), callback);
 | 
|      else if (callback)
 | 
|          callback->handleEvent();
 | 
|      m_executionContext.clear();
 | 
| +    InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
 | 
|  }
 | 
|  
 | 
|  // EntryCallbacks -------------------------------------------------------------
 | 
| @@ -169,8 +181,12 @@ void EntriesCallbacks::didReadDirectoryEntries(bool hasMore)
 | 
|      EntryHeapVector entries;
 | 
|      entries.swap(m_entries);
 | 
|      // FIXME: delay the callback iff shouldScheduleCallback() is true.
 | 
| +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::traceAsyncCallbackStarting(m_executionContext.get(), m_asyncOperationId);
 | 
|      if (m_successCallback)
 | 
|          m_successCallback->handleEvent(entries);
 | 
| +    InspectorInstrumentation::traceAsyncCallbackCompleted(cookie);
 | 
| +    if (!hasMore)
 | 
| +        InspectorInstrumentation::traceAsyncOperationCompleted(m_executionContext.get(), m_asyncOperationId);
 | 
|  }
 | 
|  
 | 
|  // FileSystemCallbacks --------------------------------------------------------
 | 
| 
 |