#include "chrome/browser/extensions/api/identity/identity_mint_queue.h"
+#include "base/debug/trace_event.h"
#include "base/logging.h"
#include "base/stl_util.h"
IdentityMintRequestQueue::MintType type,
const ExtensionTokenKey& key,
IdentityMintRequestQueue::Request* request) {
+ TRACE_EVENT_ASYNC_BEGIN1(
+ "identity", "IdentityMintRequestQueue", request, "type", type);
RequestQueue& request_queue = GetRequestQueueMap(type)[key];
request_queue.push_back(request);
// If this is the first request, start it now. RequestComplete will start
// all other requests.
if (request_queue.size() == 1)
- request_queue.front()->StartMintToken(type);
+ RunRequest(type, request_queue);
}
void IdentityMintRequestQueue::RequestComplete(
IdentityMintRequestQueue::MintType type,
const ExtensionTokenKey& key,
IdentityMintRequestQueue::Request* request) {
+ TRACE_EVENT_ASYNC_END1("identity",
+ "IdentityMintRequestQueue",
+ request,
+ "completed",
+ "RequestComplete");
RequestQueue& request_queue = GetRequestQueueMap(type)[key];
CHECK_EQ(request_queue.front(), request);
request_queue.pop_front();
if (request_queue.size() > 0)
- request_queue.front()->StartMintToken(type);
+ RunRequest(type, request_queue);
}
void IdentityMintRequestQueue::RequestCancel(
const ExtensionTokenKey& key,
IdentityMintRequestQueue::Request* request) {
+ TRACE_EVENT_ASYNC_END1("identity",
+ "IdentityMintRequestQueue",
+ request,
+ "completed",
+ "RequestCancel");
GetRequestQueueMap(MINT_TYPE_INTERACTIVE)[key].remove(request);
GetRequestQueueMap(MINT_TYPE_NONINTERACTIVE)[key].remove(request);
}
: noninteractive_request_queue_map_;
}
+void IdentityMintRequestQueue::RunRequest(
+ IdentityMintRequestQueue::MintType type,
+ RequestQueue& request_queue) {
+ TRACE_EVENT_ASYNC_STEP_INTO0(
+ "identity", "IdentityMintRequestQueue", request_queue.front(), "RUNNING");
+ request_queue.front()->StartMintToken(type);
+}
+
} // namespace extensions