#include "chrome/browser/extensions/api/identity/web_auth_flow.h"
#include <memory>
#include <utility>
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "base/trace_event/trace_event.h"
#include "chrome/browser/extensions/api/identity/web_auth_flow_info_bar_delegate.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
#include "net/http/http_response_headers.h"
#include "net/http/http_status_code.h"
#include "ui/base/page_transition_types.h"
#include "url/gurl.h"
#include "url/url_constants.h"
WebContents;
WebContentsObserver;
namespace extensions {
WebAuthFlow::WebAuthFlow(
Delegate* delegate,
Profile* profile,
const GURL& provider_url,
Mode mode,
bool user_gesture,
AbortOnLoad abort_on_load_for_non_interactive,
std::optional<base::TimeDelta> timeout_for_non_interactive,
std::optional<gfx::Rect> popup_bounds)
: … { … }
WebAuthFlow::~WebAuthFlow() { … }
void WebAuthFlow::SetClockForTesting(
const base::TickClock* tick_clock,
scoped_refptr<base::SequencedTaskRunner> task_runner) { … }
void WebAuthFlow::Start() { … }
void WebAuthFlow::DetachDelegateAndDelete() { … }
void WebAuthFlow::DisplayInfoBar() { … }
void WebAuthFlow::CloseInfoBar() { … }
bool WebAuthFlow::DisplayAuthPageInPopupWindow() { … }
void WebAuthFlow::BeforeUrlLoaded(const GURL& url) { … }
void WebAuthFlow::AfterUrlLoaded() { … }
void WebAuthFlow::MaybeStartTimeout() { … }
void WebAuthFlow::OnTimeout() { … }
void WebAuthFlow::WebContentsDestroyed() { … }
void WebAuthFlow::TitleWasSet(content::NavigationEntry* entry) { … }
void WebAuthFlow::DidStopLoading() { … }
void WebAuthFlow::DidStartNavigation(
content::NavigationHandle* navigation_handle) { … }
void WebAuthFlow::DidRedirectNavigation(
content::NavigationHandle* navigation_handle) { … }
void WebAuthFlow::DidFinishNavigation(
content::NavigationHandle* navigation_handle) { … }
void WebAuthFlow::SetShouldShowInfoBar(
const std::string& extension_display_name) { … }
base::WeakPtr<WebAuthFlowInfoBarDelegate>
WebAuthFlow::GetInfoBarDelegateForTesting() { … }
}