identity_mint_queue.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/extensions/api/identity/identity_mint_queue.h" 6 7#include "base/logging.h" 8#include "base/stl_util.h" 9 10namespace extensions { 11 12IdentityMintRequestQueue::IdentityMintRequestQueue() { 13} 14 15IdentityMintRequestQueue::~IdentityMintRequestQueue() { 16 for (RequestQueueMap::const_iterator 17 it = interactive_request_queue_map_.begin(); 18 it != interactive_request_queue_map_.end(); 19 ++it) { 20 DCHECK_EQ(it->second.size(), 0lu); 21 } 22 for (RequestQueueMap::const_iterator 23 it = noninteractive_request_queue_map_.begin(); 24 it != noninteractive_request_queue_map_.end(); 25 ++it) { 26 DCHECK_EQ(it->second.size(), 0lu); 27 } 28} 29 30void IdentityMintRequestQueue::RequestStart( 31 IdentityMintRequestQueue::MintType type, 32 const ExtensionTokenKey& key, 33 IdentityMintRequestQueue::Request* request) { 34 RequestQueue& request_queue = GetRequestQueueMap(type)[key]; 35 request_queue.push_back(request); 36 // If this is the first request, start it now. RequestComplete will start 37 // all other requests. 38 if (request_queue.size() == 1) 39 request_queue.front()->StartMintToken(type); 40} 41 42void IdentityMintRequestQueue::RequestComplete( 43 IdentityMintRequestQueue::MintType type, 44 const ExtensionTokenKey& key, 45 IdentityMintRequestQueue::Request* request) { 46 RequestQueue& request_queue = GetRequestQueueMap(type)[key]; 47 CHECK_EQ(request_queue.front(), request); 48 request_queue.pop_front(); 49 if (request_queue.size() > 0) 50 request_queue.front()->StartMintToken(type); 51} 52 53bool IdentityMintRequestQueue::empty(IdentityMintRequestQueue::MintType type, 54 const ExtensionTokenKey& key) { 55 RequestQueueMap& request_queue_map = GetRequestQueueMap(type); 56 return !ContainsKey(request_queue_map, key) || 57 (request_queue_map.find(key))->second.empty(); 58} 59 60IdentityMintRequestQueue::RequestQueueMap& 61IdentityMintRequestQueue::GetRequestQueueMap( 62 IdentityMintRequestQueue::MintType type) { 63 return (type == MINT_TYPE_INTERACTIVE) ? interactive_request_queue_map_ 64 : noninteractive_request_queue_map_; 65} 66 67} // namespace extensions 68