// Copyright 2012 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_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ #define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ #include <optional> #include <string> #include "base/feature_list.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "content/public/browser/web_contents_observer.h" #include "ui/gfx/geometry/rect.h" #include "url/gurl.h" class Profile; namespace base { class OneShotTimer; class TickClock; } // namespace base namespace extensions { class WebAuthFlowInfoBarDelegate; // Controller class for web based auth flows. The WebAuthFlow creates // a browser popup window (or a new tab based on the feature setting) // with a webview that will navigate to the |provider_url| passed to the // WebAuthFlow constructor. // // The WebAuthFlow monitors the WebContents of the webview, and // notifies its delegate interface any time the WebContents navigates // to a new URL or changes title. The delegate is expected to delete // the flow when navigation reaches a known target location. // // The window is not displayed until the first page load // completes. This allows the flow to complete without flashing a // window on screen if the provider immediately redirects to the // target URL. // // A WebAuthFlow can be started in Mode::SILENT, which never displays // a window. If a window would be required, the flow fails. class WebAuthFlow : public content::WebContentsObserver { … }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_