// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_MANUAL_FILLING_CONTROLLER_H_ #define CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_MANUAL_FILLING_CONTROLLER_H_ #include "base/memory/weak_ptr.h" #include "base/types/strong_alias.h" #include "chrome/browser/keyboard_accessory/android/accessory_sheet_data.h" #include "chrome/browser/keyboard_accessory/android/accessory_sheet_enums.h" #include "components/autofill/core/common/mojom/autofill_types.mojom-forward.h" #include "components/autofill/core/common/unique_ids.h" #include "content/public/browser/web_contents_user_data.h" // Controller interface for the view that includes the keyboard accessory and // the accessory sheet below it. Implementations of this interface create and // own a ManualFillingViewInterface. // // The manual filling controller forwards requests from type-specific accessory // controllers (Passwords and Autofill) to the view. The view notifies this // controller about interactions (such as requesting to fill a password // suggestion) and forwards the request to the corresponding type-specific // accessory controller. // // This controller also implements the logic to show/hide the keyboard // accessory. // // ManualFillingController::GetOrCreate() should be used // by type-specific controllers to obtain an instance of this class for a given // WebContents. There is only one instance per WebContents, which is created the // first time |GetOrCreate()| is invoked. // // Usage example: // auto controller = ManualFillingController::GetOrCreate(web_contents); // DCHECK(controller); // controller->RefreshSuggestionsForField(...); class ManualFillingController { … }; #endif // CHROME_BROWSER_KEYBOARD_ACCESSORY_ANDROID_MANUAL_FILLING_CONTROLLER_H_