blob: 32c7fd71523fe322aa6a8d203143e196f5602b4f [file] [log] [blame]
// Copyright 2015 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.
// Use the <code>chrome.passwordsPrivate</code> API to add or remove password
// data from the settings UI.
namespace passwordsPrivate {
enum ExportProgressStatus {
// No export was started.
NOT_STARTED,
// Data is being written to the destination.
IN_PROGRESS,
// Data has been written.
SUCCEEDED,
// The user rejected the file selection prompts.
FAILED_CANCELLED,
// Writing to the destination failed.
FAILED_WRITE_FAILED
};
dictionary UrlCollection {
// The fully specified URL of the credential's origin.
DOMString origin;
// A human readable version of the URL of the credential's origin.
DOMString shown;
// The URL that will be linked to when an entry is clicked.
DOMString link;
};
// Pair of a URL collection and a username saved for these URLs.
dictionary LoginPair {
UrlCollection urls;
// The username used in conjunction with the saved password.
DOMString username;
};
// Entry used to display a password in the settings UI.
dictionary PasswordUiEntry {
// The login information for this entry.
LoginPair loginPair;
// The number of characters in the password; used to display placeholder
// dots in the UI.
long numCharactersInPassword;
// Text shown if the password was obtained via a federated identity.
DOMString? federationText;
// An index to refer back to a unique password entry record.
long index;
};
// Dictionary passed to listeners for the onPlaintextPasswordRetrieved event.
dictionary PlaintextPasswordEventParameters {
// An index to refer back to a unique password entry record.
long index;
// The password in plaintext.
DOMString plaintextPassword;
};
dictionary ExceptionEntry {
UrlCollection urls;
// An index to refer back to a unique exception entry record.
long index;
};
dictionary PasswordExportProgress {
// The current status of the export task.
ExportProgressStatus status;
// If |status| is $ref(ExportProgressStatus.FAILED_WRITE_FAILED), this will
// be the name of the selected folder to export to.
DOMString? folderName;
};
callback PasswordListCallback = void(PasswordUiEntry[] entries);
callback ExceptionListCallback = void(ExceptionEntry[] exceptions);
callback ExportProgressStatusCallback = void(ExportProgressStatus status);
callback EmptyCallback = void();
interface Functions {
// Removes the saved password corresponding to |loginPair|. If no saved
// password for this pair exists, this function is a no-op.
//
// |index|: The index for the password entry being removed.
static void removeSavedPassword(long index);
// Removes the saved password exception corresponding to |exceptionUrl|. If
// no exception with this URL exists, this function is a no-op.
//
// |index|: The index for the exception url entry being removed.
static void removePasswordException(long index);
// Undoes the last removal of a saved password or exception.
static void undoRemoveSavedPasswordOrException();
// Returns the plaintext password corresponding to |index|. Note that on
// some operating systems, this call may result in an OS-level
// reauthentication. Once the password has been fetched, it will be returned
// via the onPlaintextPasswordRetrieved event.
// TODO(hcarmona): Investigate using a callback for consistency.
//
// |index|: The index for the password entry being being retrieved.
static void requestPlaintextPassword(long index);
// Returns the list of saved passwords.
// |callback|: Called with the list of saved passwords.
static void getSavedPasswordList(PasswordListCallback callback);
// Returns the list of password exceptions.
// |callback|: Called with the list of password exceptions.
static void getPasswordExceptionList(ExceptionListCallback callback);
// Triggers the Password Manager password import functionality.
static void importPasswords();
// Triggers the Password Manager password export functionality. Completion
// Will be signaled by the onPasswordsFileExportProgress event.
//
// |callback| will be called when the request is started or rejected. If
// rejected <code>chrome.runtime.lastError</code> will be set to
// 'in-progress' or 'reauth-failed'.
static void exportPasswords(EmptyCallback callback);
// Requests the export progress status. This is the same as the last value
// seen on the onPasswordsFileExportProgress event. This function is useful
// for checking if an export has already been initiated from an older tab,
// where we might have missed the original event.
static void requestExportProgressStatus(ExportProgressStatusCallback callback);
// Stops exporting passwords and cleans up any passwords, which were already
// written to the filesystem.
static void cancelExportPasswords();
};
interface Events {
// Fired when the saved passwords list has changed, meaning that an entry
// has been added or removed.
//
// |entries|: The updated list of password entries.
static void onSavedPasswordsListChanged(PasswordUiEntry[] entries);
// Fired when the password exceptions list has changed, meaning that an
// entry has been added or removed.
//
// |exceptions|: The updated list of password exceptions.
static void onPasswordExceptionsListChanged(ExceptionEntry[] exceptions);
// Fired when a plaintext password has been fetched in response to a call to
// chrome.passwordsPrivate.requestPlaintextPassword().
//
// |index|: The index for the password entry being being retrieved.
// |plaintextPassword|: The plaintext password which was retrieved.
static void onPlaintextPasswordRetrieved(
PlaintextPasswordEventParameters dict);
// Fired when the status of the export has changed.
//
// |status|: The progress status and an optional UI message.
static void onPasswordsFileExportProgress(PasswordExportProgress status);
};
};