#include "chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.h"
#include <algorithm>
#include <memory>
#include <utility>
#include "base/metrics/histogram_functions.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "chrome/browser/extensions/api/identity/identity_constants.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/identity.h"
#include "components/prefs/pref_service.h"
#include "extensions/browser/pref_names.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/extensions/api/identity/launch_web_auth_flow_delegate_ash.h"
#endif
namespace extensions {
namespace {
static const char kChromiumDomainRedirectUrlPattern[] = …;
IdentityLaunchWebAuthFlowFunction::Error WebAuthFlowFailureToError(
WebAuthFlow::Failure failure) { … }
std::string ErrorToString(IdentityLaunchWebAuthFlowFunction::Error error) { … }
void RecordHistogramFunctionResult(
IdentityLaunchWebAuthFlowFunction::Error error) { … }
}
BASE_FEATURE(…);
IdentityLaunchWebAuthFlowFunction::IdentityLaunchWebAuthFlowFunction() { … }
IdentityLaunchWebAuthFlowFunction::~IdentityLaunchWebAuthFlowFunction() { … }
ExtensionFunction::ResponseAction IdentityLaunchWebAuthFlowFunction::Run() { … }
void IdentityLaunchWebAuthFlowFunction::StartAuthFlow(
Profile* profile,
GURL auth_url,
WebAuthFlow::Mode mode,
WebAuthFlow::AbortOnLoad abort_on_load_for_non_interactive,
std::optional<base::TimeDelta> timeout_for_non_interactive,
std::optional<gfx::Rect> popup_bounds) { … }
bool IdentityLaunchWebAuthFlowFunction::ShouldKeepWorkerAliveIndefinitely() { … }
void IdentityLaunchWebAuthFlowFunction::InitFinalRedirectURLDomainsForTest(
const std::string& extension_id) { … }
void IdentityLaunchWebAuthFlowFunction::InitFinalRedirectURLDomains(
const std::string& extension_id,
const base::Value::List* redirect_urls) { … }
void IdentityLaunchWebAuthFlowFunction::OnAuthFlowFailure(
WebAuthFlow::Failure failure) { … }
void IdentityLaunchWebAuthFlowFunction::OnAuthFlowURLChange(
const GURL& redirect_url) { … }
WebAuthFlow* IdentityLaunchWebAuthFlowFunction::GetWebAuthFlowForTesting() { … }
void IdentityLaunchWebAuthFlowFunction::SetLaunchWebAuthFlowDelegateForTesting(
std::unique_ptr<LaunchWebAuthFlowDelegate> delegate) { … }
}