Index: ios/chrome/browser/autofill/form_input_accessory_view_controller.h |
diff --git a/ios/chrome/browser/autofill/form_input_accessory_view_controller.h b/ios/chrome/browser/autofill/form_input_accessory_view_controller.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1ecb8ef473e296831cf72d2fc5100474c5c67119 |
--- /dev/null |
+++ b/ios/chrome/browser/autofill/form_input_accessory_view_controller.h |
@@ -0,0 +1,95 @@ |
+// Copyright 2014 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_AUTOFILL_FORM_INPUT_ACCESSORY_VIEW_CONTROLLER_H_ |
+#define IOS_CHROME_BROWSER_AUTOFILL_FORM_INPUT_ACCESSORY_VIEW_CONTROLLER_H_ |
+ |
+#import <UIKit/UIKit.h> |
+ |
+#import "ios/chrome/browser/autofill/form_input_accessory_view_delegate.h" |
+#import "ios/web/public/web_state/web_state_observer_bridge.h" |
+ |
+@protocol CRWWebViewProxy; |
+ |
+namespace ios_internal { |
+namespace autofill { |
+extern NSString* const kFormSuggestionAssistButtonPreviousElement; |
+extern NSString* const kFormSuggestionAssistButtonNextElement; |
+extern NSString* const kFormSuggestionAssistButtonDone; |
+} // namespace autofill |
+} // namespace ios_internal |
+ |
+@protocol FormInputAccessoryViewProvider; |
+@class FormInputAccessoryViewController; |
+ |
+// Block type to indicate that a FormInputAccessoryViewProvider has an accessory |
+// view to provide. |
+typedef void (^AccessoryViewAvailableCompletion)( |
+ BOOL inputAccessoryViewAvailable); |
+ |
+// Block type to provide an accessory view asynchronously. |
+typedef void (^AccessoryViewReadyCompletion)( |
+ UIView* view, |
+ id<FormInputAccessoryViewProvider> provider); |
+ |
+// Represents an object that can provide a custom keyboard input accessory view. |
+@protocol FormInputAccessoryViewProvider<NSObject> |
+ |
+// A delegate for form navigation. |
+@property(nonatomic, assign) |
+ id<FormInputAccessoryViewDelegate> accessoryViewDelegate; |
+ |
+// Determines asynchronously if this provider has a view available for the |
+// specified form/field and invokes |completionHandler| with the answer. |
+- (void)checkIfAccessoryViewAvailableForFormNamed:(const std::string&)formName |
+ fieldName:(const std::string&)fieldName |
+ webState:(web::WebState*)webState |
+ completionHandler: |
+ (AccessoryViewAvailableCompletion) |
+ completionHandler; |
+ |
+// Asynchronously retrieves an accessory view from this provider for the |
+// specified form/field and returns it via |completionHandler|. |
+- (void)retrieveAccessoryViewForFormNamed:(const std::string&)formName |
+ fieldName:(const std::string&)fieldName |
+ value:(const std::string&)value |
+ type:(const std::string&)type |
+ webState:(web::WebState*)webState |
+ completionHandler: |
+ (AccessoryViewReadyCompletion)completionHandler; |
+ |
+// Notifies this provider that the accessory view is going away. |
+- (void)inputAccessoryViewControllerDidReset: |
+ (FormInputAccessoryViewController*)controller; |
+ |
+// Notifies this provider that the accessory view frame is changing. If the |
+// view provided by this provider needs to change, the updated view should be |
+// returned using the completion received in |
+// |retrieveAccessoryViewForForm:field:value:type:webState:completionHandler:|. |
+- (void)resizeAccessoryView; |
+ |
+@end |
+ |
+// Creates and manages a custom input accessory view while the user is |
+// interacting with a form. Also handles hiding and showing the default |
+// accessory view elements. |
+@interface FormInputAccessoryViewController |
+ : NSObject<CRWWebStateObserver, FormInputAccessoryViewDelegate> |
+ |
+// Initializes a new controller with the specified |providers| of input |
+// accessory views. |
+- (instancetype)initWithWebState:(web::WebState*)webState |
+ providers:(NSArray*)providers; |
+ |
+// Hides the default input accessory view and replaces it with one that shows |
+// |customView| and form navigation controls. |
+- (void)showCustomInputAccessoryView:(UIView*)customView; |
+ |
+// Restores the default input accessory view, removing (if necessary) any |
+// previously-added custom view. |
+- (void)restoreDefaultInputAccessoryView; |
+ |
+@end |
+ |
+#endif // IOS_CHROME_BROWSER_AUTOFILL_FORM_INPUT_ACCESSORY_VIEW_CONTROLLER_H_ |