Chromium Code Reviews| Index: mojo/services/network/url_loader_impl.cc |
| diff --git a/mojo/services/network/url_loader_impl.cc b/mojo/services/network/url_loader_impl.cc |
| index 89e64b8922ca1a99b7ba693fa21d2a9eadb9eb04..1fb0678f6b76de1656e070ece8221cbd889de8be 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 @@ URLResponsePtr MakeURLResponse(const net::URLRequest* url_request) { |
| 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::Cleanup() { |
| 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); |
|
ppi
2015/08/03 14:50:22
Can the id (here being the value of |this|) be the
|
| + |
| 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(); |
| } |