| Index: components/payments/core/can_make_payment_query.cc
|
| diff --git a/components/payments/core/can_make_payment_query.cc b/components/payments/core/can_make_payment_query.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1f2296b4d9e92cdba498a70617ff20dd9348ad69
|
| --- /dev/null
|
| +++ b/components/payments/core/can_make_payment_query.cc
|
| @@ -0,0 +1,45 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "components/payments/core/can_make_payment_query.h"
|
| +
|
| +#include <utility>
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/bind_helpers.h"
|
| +#include "base/location.h"
|
| +#include "base/memory/ptr_util.h"
|
| +#include "base/time/time.h"
|
| +
|
| +namespace payments {
|
| +
|
| +CanMakePaymentQuery::CanMakePaymentQuery() {}
|
| +
|
| +CanMakePaymentQuery::~CanMakePaymentQuery() {}
|
| +
|
| +bool CanMakePaymentQuery::CanQuery(
|
| + const GURL& iframe_origin,
|
| + const std::map<std::string, std::set<std::string>>& query) {
|
| + const auto& it = queries_.find(iframe_origin);
|
| + if (it == queries_.end()) {
|
| + std::unique_ptr<base::OneShotTimer> timer =
|
| + base::MakeUnique<base::OneShotTimer>();
|
| + timer->Start(FROM_HERE, base::TimeDelta::FromMinutes(30),
|
| + base::Bind(&CanMakePaymentQuery::ExpireQuotaForIframeOrigin,
|
| + base::Unretained(this), iframe_origin));
|
| + timers_.insert(std::make_pair(iframe_origin, std::move(timer)));
|
| + queries_.insert(std::make_pair(iframe_origin, query));
|
| + return true;
|
| + }
|
| +
|
| + return it->second == query;
|
| +}
|
| +
|
| +void CanMakePaymentQuery::ExpireQuotaForIframeOrigin(
|
| + const GURL& iframe_origin) {
|
| + timers_.erase(iframe_origin);
|
| + queries_.erase(iframe_origin);
|
| +}
|
| +
|
| +} // namespace payments
|
|
|