// 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.

#ifndef IOS_CHROME_BROWSER_PASSWORDS_JS_CREDENTIAL_MANAGER_H_
#define IOS_CHROME_BROWSER_PASSWORDS_JS_CREDENTIAL_MANAGER_H_

#include "ios/web/public/web_state/credential.h"
#import "ios/web/public/web_state/js/crw_js_injection_manager.h"

namespace base {
class DictionaryValue;
}  // namespace base

// Constants for rejecting requests.
extern const char kCredentialsPendingRequestErrorType[];
extern const char kCredentialsPendingRequestErrorMessage[];
extern const char kCredentialsSecurityErrorType[];
extern const char kCredentialsPasswordStoreUnavailableErrorType[];
extern const char kCredentialsPasswordStoreUnavailableErrorMessage[];
extern const char kCredentialsSecurityErrorMessageUntrustedOrigin[];

// Injects the JavaScript that implements the request credentials API and
// provides an app-side interface for interacting with it.
@interface JSCredentialManager : CRWJSInjectionManager

// Resolves the JavaScript Promise associated with |requestID| with the
// specified |credential|. |completionHandler| will be invoked after the
// operation has completed with YES if successful.
- (void)resolvePromiseWithRequestID:(NSInteger)requestID
                         credential:(const web::Credential&)credential
                  completionHandler:(void (^)(BOOL))completionHandler;

// Resolves the JavaScript Promise associated with |requestID|.
// |completionHandler| will be invoked after the operation has completed with
// YES if successful.
- (void)resolvePromiseWithRequestID:(NSInteger)requestID
                  completionHandler:(void (^)(BOOL))completionHandler;

// Rejects the JavaScript Promise associated with |requestID| with an Error of
// the specified |errorType| and |message|. |completionHandler| will be invoked
// after the operation has completed with YES if successful.
- (void)rejectPromiseWithRequestID:(NSInteger)requestID
                         errorType:(NSString*)errorType
                           message:(NSString*)message
                 completionHandler:(void (^)(BOOL))completionHandler;

@end

#endif  // IOS_CHROME_BROWSER_PASSWORDS_JS_CREDENTIAL_MANAGER_H_