blob: 6f2bd0905523e61e08924dd671f71e68c9a91238 [file] [log] [blame]
// Copyright 2020 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_LOGIN_DETECTION_LOGIN_DETECTION_UTIL_H_
#define CHROME_BROWSER_LOGIN_DETECTION_LOGIN_DETECTION_UTIL_H_
#include <set>
#include <string>
#include <vector>
#include "base/feature_list.h"
#include "url/gurl.h"
namespace login_detection {
// Enables login detection to sited based on various heuristics.
BASE_DECLARE_FEATURE(kLoginDetection);
// Returns whether login detection should be enabled.
bool IsLoginDetectionFeatureEnabled();
// Returns the site which is the scheme and effective TLD+1 of the URL. The
// other components of the URL such as the port and path are ignored.
std::string GetSiteNameForURL(const GURL& url);
// Returns the query parameters that should be found in the navigation URL to
// recognize that as start of OAuth login flow.
std::set<std::string> GetOAuthLoginStartQueryParams();
// Returns the query parameters that should be found in the navigation URL to
// recognize that as successful completion of OAuth login flow.
std::set<std::string> GetOAuthLoginCompleteQueryParams();
// Returns the number of navigations within which OAuth login flow should start
// and complete successfully.
size_t GetOAuthLoginFlowStartToCompleteLimit();
// Returns the maximum allowed number of OAuth logged-in sites. This is to cap
// the size of the pref that stores the list.
size_t GetOauthLoggedInSitesMaxSize();
// Returns the sites retrieved from field trial, that should be treated as
// logged-in.
std::vector<std::string> GetLoggedInSitesFromFieldTrial();
} // namespace login_detection
#endif // CHROME_BROWSER_LOGIN_DETECTION_LOGIN_DETECTION_UTIL_H_