diff --git a/mojo/services/network/url_loader_impl.cc b/mojo/services/network/url_loader_impl.cc
index 89e64b8..1fb0678 100644
--- a/mojo/services/network/url_loader_impl.cc
+++ b/mojo/services/network/url_loader_impl.cc
@@ -8,6 +8,7 @@
 
 #include "base/memory/scoped_vector.h"
 #include "base/message_loop/message_loop.h"
+#include "base/trace_event/trace_event.h"
 #include "mojo/common/common_type_converters.h"
 #include "mojo/common/url_type_converters.h"
 #include "mojo/services/network/net_adapters.h"
@@ -56,6 +57,14 @@
   return response.Pass();
 }
 
+void RunCallbackAndTrace(const char* event_name,
+                         void* id,
+                         const Callback<void(URLResponsePtr)>& callback,
+                         URLResponsePtr response) {
+  callback.Run(response.Pass());
+  TRACE_EVENT_ASYNC_END0("net", event_name, id);
+}
+
 // Reads the request body upload data from a DataPipe.
 class UploadDataPipeElementReader : public net::UploadElementReader {
  public:
@@ -297,27 +306,36 @@
 
 void URLLoaderImpl::Start(URLRequestPtr request,
                           const Callback<void(URLResponsePtr)>& callback) {
+  TRACE_EVENT_ASYNC_BEGIN1("net", "URLLoaderImpl::Start", this, "url",
+                           request->url.get());
+  Callback<void(URLResponsePtr)> traced_callback =
+      base::Bind(&RunCallbackAndTrace, "URLLoaderImpl::Start", this, callback);
+
   if (url_request_) {
-    SendError(net::ERR_UNEXPECTED, callback);
+    SendError(net::ERR_UNEXPECTED, traced_callback);
     return;
   }
 
-  callback_ = callback;
+  callback_ = traced_callback;
   StartInternal(request.Pass());
 }
 
 void URLLoaderImpl::FollowRedirect(
     const Callback<void(URLResponsePtr)>& callback) {
+  TRACE_EVENT_ASYNC_BEGIN0("net", "URLLoaderImpl::FollowRedirect", this);
+  Callback<void(URLResponsePtr)> traced_callback = base::Bind(
+      &RunCallbackAndTrace, "URLLoaderImpl::FollowRedirect", this, callback);
+
   if (!redirect_info_) {
     DLOG(ERROR) << "Spurious call to FollowRedirect";
-    SendError(net::ERR_UNEXPECTED, callback);
+    SendError(net::ERR_UNEXPECTED, traced_callback);
     return;
   }
   DCHECK(url_request_);
   DCHECK(url_request_->is_redirecting());
   DCHECK(!auto_follow_redirects_);
 
-  callback_ = callback;
+  callback_ = traced_callback;
   FollowRedirectInternal();
 }
 
