1 // Copyright 2014 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.
6 * @fileoverview Provides an implementation of approved origins that relies
7 * on the chrome.cryptotokenPrivate.requestPermission API.
8 * (and only) allows google.com to use security keys.
14 * Allows the caller to check whether the user has approved the use of
15 * security keys from an origin.
17 * @implements {ApprovedOrigins}
19 function CryptoTokenApprovedOrigin() {}
22 * Checks whether the origin is approved to use security keys. (If not, an
23 * approval prompt may be shown.)
24 * @param {string} origin The origin to approve.
25 * @param {number=} opt_tabId A tab id to display approval prompt in.
26 * For this implementation, the tabId is always necessary, even though
27 * the type allows undefined.
28 * @return {Promise<boolean>} A promise for the result of the check.
30 CryptoTokenApprovedOrigin
.prototype.isApprovedOrigin
=
31 function(origin
, opt_tabId
) {
32 return new Promise(function(resolve
, reject
) {
33 if (opt_tabId
=== undefined) {
37 var tabId
= /** @type {number} */ (opt_tabId
);
38 tabInForeground(tabId
).then(function(result
) {
43 if (!chrome
.tabs
|| !chrome
.tabs
.get) {
47 chrome
.tabs
.get(tabId
, function(tab
) {
48 if (chrome
.runtime
.lastError
) {
52 var tabOrigin
= getOriginFromUrl(tab
.url
);
53 resolve(tabOrigin
== origin
);