// Copyright (c) 2019 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef SHELL_BROWSER_ELECTRON_AUTOFILL_DRIVER_FACTORY_H_ #define SHELL_BROWSER_ELECTRON_AUTOFILL_DRIVER_FACTORY_H_ #include #include #include "base/callback_forward.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" #include "shell/common/api/api.mojom.h" namespace electron { class AutofillDriver; class AutofillDriverFactory : public content::WebContentsObserver, public content::WebContentsUserData { public: typedef base::OnceCallback()> CreationCallback; ~AutofillDriverFactory() override; static void BindAutofillDriver( mojom::ElectronAutofillDriverAssociatedRequest request, content::RenderFrameHost* render_frame_host); // content::WebContentsObserver: void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; void DidFinishNavigation( content::NavigationHandle* navigation_handle) override; AutofillDriver* DriverForFrame(content::RenderFrameHost* render_frame_host); void AddDriverForFrame(content::RenderFrameHost* render_frame_host, CreationCallback factory_method); void DeleteDriverForFrame(content::RenderFrameHost* render_frame_host); void CloseAllPopups(); WEB_CONTENTS_USER_DATA_KEY_DECL(); private: explicit AutofillDriverFactory(content::WebContents* web_contents); friend class content::WebContentsUserData; std::unordered_map> driver_map_; }; } // namespace electron #endif // SHELL_BROWSER_ELECTRON_AUTOFILL_DRIVER_FACTORY_H_