Commit fd63def9 authored by Glen Robertson's avatar Glen Robertson Committed by Commit Bot

digitalgoods:Ensure "payments" feature is enabled to use DG.

Trying to match the restrictions in the Payment Request API spec [1]
(DG isn't spec'd yet).

We require that the "payment" feature policy is enabled. Secure context
is already ensured by the IDL.
Also add some logging of errors so developers can figure out what is
going wrong.

[1]: https://w3c.github.io/payment-request/#dfn-payment-relevant-browsing-context

Bug: 1061503
Change-Id: I2c13663148ad8736a4d9ab3ea124d96038d8e878
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2526872Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Commit-Queue: Glen Robertson <glenrob@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826681}
parent a927c079
......@@ -23,7 +23,7 @@ void OnCreateDigitalGoodsResponse(
mojo::PendingRemote<payments::mojom::blink::DigitalGoods> pending_remote) {
if (code != CreateDigitalGoodsResponseCode::kOk) {
DCHECK(!pending_remote);
DVLOG(1) << "CreateDigitalGoodsResponseCode " << code;
VLOG(1) << "CreateDigitalGoodsResponseCode " << code;
resolver->Resolve(v8::Null(resolver->GetScriptState()->GetIsolate()));
return;
}
......@@ -53,14 +53,36 @@ ScriptPromise DOMWindowDigitalGoods::GetDigitalGoodsService(
auto promise = resolver->Promise();
if (payment_method.IsEmpty()) {
VLOG(1) << "GetDigitalGoodsService error: Empty payment method.";
resolver->Resolve(v8::Null(script_state->GetIsolate()));
return promise;
}
if (!script_state->ContextIsValid()) {
VLOG(1) << "GetDigitalGoodsService error: Context invalid.";
resolver->Resolve(v8::Null(script_state->GetIsolate()));
return promise;
}
auto* execution_context = ExecutionContext::From(script_state);
DCHECK(execution_context);
if (execution_context->IsContextDestroyed()) {
VLOG(1) << "GetDigitalGoodsService error: Context destroyed.";
resolver->Resolve(v8::Null(script_state->GetIsolate()));
return promise;
}
if (!execution_context->IsFeatureEnabled(
mojom::blink::FeaturePolicyFeature::kPayment)) {
VLOG(1) << "GetDigitalGoodsService error: Payments not enabled.";
resolver->Resolve(v8::Null(script_state->GetIsolate()));
return promise;
}
if (!mojo_service_) {
ExecutionContext::From(script_state)
->GetBrowserInterfaceBroker()
.GetInterface(mojo_service_.BindNewPipeAndPassReceiver());
execution_context->GetBrowserInterfaceBroker().GetInterface(
mojo_service_.BindNewPipeAndPassReceiver());
}
mojo_service_->CreateDigitalGoods(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment