blob: 5f313fee696c7e58c5e4cdc7670b8dc1ac9459ff [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/public/browser/identity_request_dialog_controller.h"
#include <memory>
#include <optional>
#include "content/public/browser/web_contents.h"
namespace content {
ClientMetadata::ClientMetadata(const GURL& terms_of_service_url,
const GURL& privacy_policy_url,
const GURL& brand_icon_url,
const gfx::Image& brand_decoded_icon)
: terms_of_service_url{terms_of_service_url},
privacy_policy_url(privacy_policy_url),
brand_icon_url(brand_icon_url),
brand_decoded_icon(brand_decoded_icon) {}
ClientMetadata::ClientMetadata(const ClientMetadata& other) = default;
ClientMetadata::~ClientMetadata() = default;
IdentityProviderMetadata::IdentityProviderMetadata() = default;
IdentityProviderMetadata::~IdentityProviderMetadata() = default;
IdentityProviderMetadata::IdentityProviderMetadata(
const IdentityProviderMetadata& other) = default;
IdentityProviderData::IdentityProviderData(
const std::string& idp_for_display,
const IdentityProviderMetadata& idp_metadata,
const ClientMetadata& client_metadata,
blink::mojom::RpContext rp_context,
std::optional<blink::mojom::Format> format,
const std::vector<IdentityRequestDialogDisclosureField>& disclosure_fields,
bool has_login_status_mismatch)
: idp_for_display{idp_for_display},
idp_metadata{idp_metadata},
client_metadata{client_metadata},
rp_context(rp_context),
format(format),
disclosure_fields(disclosure_fields),
has_login_status_mismatch(has_login_status_mismatch) {}
IdentityProviderData::~IdentityProviderData() = default;
RelyingPartyData::RelyingPartyData(const std::string& rp_for_display,
const std::string& iframe_for_display)
: rp_for_display(rp_for_display), iframe_for_display(iframe_for_display) {}
RelyingPartyData::RelyingPartyData(const RelyingPartyData& other) = default;
RelyingPartyData::~RelyingPartyData() = default;
int IdentityRequestDialogController::GetBrandIconIdealSize(
blink::mojom::RpMode rp_mode) {
return 0;
}
int IdentityRequestDialogController::GetBrandIconMinimumSize(
blink::mojom::RpMode rp_mode) {
return 0;
}
void IdentityRequestDialogController::SetIsInterceptionEnabled(bool enabled) {
is_interception_enabled_ = enabled;
}
bool IdentityRequestDialogController::ShowAccountsDialog(
content::RelyingPartyData rp_data,
const std::vector<scoped_refptr<content::IdentityProviderData>>& idp_list,
const std::vector<scoped_refptr<content::IdentityRequestAccount>>& accounts,
content::IdentityRequestAccount::SignInMode sign_in_mode,
blink::mojom::RpMode rp_mode,
const std::vector<scoped_refptr<content::IdentityRequestAccount>>&
new_accounts,
AccountSelectionCallback on_selected,
LoginToIdPCallback on_add_account,
DismissCallback dismiss_callback,
AccountsDisplayedCallback accounts_displayed_callback) {
if (!is_interception_enabled_) {
std::move(dismiss_callback).Run(DismissReason::kOther);
return false;
}
return true;
}
bool IdentityRequestDialogController::ShowFailureDialog(
const std::string& rp_for_display,
const std::string& idp_for_display,
blink::mojom::RpContext rp_context,
blink::mojom::RpMode rp_mode,
const IdentityProviderMetadata& idp_metadata,
DismissCallback dismiss_callback,
LoginToIdPCallback login_callback) {
if (!is_interception_enabled_) {
std::move(dismiss_callback).Run(DismissReason::kOther);
return false;
}
return true;
}
bool IdentityRequestDialogController::ShowErrorDialog(
const std::string& rp_for_display,
const std::string& idp_for_display,
blink::mojom::RpContext rp_context,
blink::mojom::RpMode rp_mode,
const IdentityProviderMetadata& idp_metadata,
const std::optional<IdentityCredentialTokenError>& error,
DismissCallback dismiss_callback,
MoreDetailsCallback more_details_callback) {
if (!is_interception_enabled_) {
std::move(dismiss_callback).Run(DismissReason::kOther);
return false;
}
return true;
}
bool IdentityRequestDialogController::ShowLoadingDialog(
const std::string& rp_for_display,
const std::string& idp_for_display,
blink::mojom::RpContext rp_context,
blink::mojom::RpMode rp_mode,
DismissCallback dismiss_callback) {
if (!is_interception_enabled_) {
std::move(dismiss_callback).Run(DismissReason::kOther);
return false;
}
return true;
}
std::string IdentityRequestDialogController::GetTitle() const {
return std::string();
}
std::optional<std::string> IdentityRequestDialogController::GetSubtitle()
const {
return std::nullopt;
}
void IdentityRequestDialogController::ShowUrl(LinkType type, const GURL& url) {}
WebContents* IdentityRequestDialogController::ShowModalDialog(
const GURL& url,
blink::mojom::RpMode rp_mode,
DismissCallback dismiss_callback) {
if (!is_interception_enabled_) {
std::move(dismiss_callback).Run(DismissReason::kOther);
}
return nullptr;
}
void IdentityRequestDialogController::CloseModalDialog() {}
WebContents* IdentityRequestDialogController::GetRpWebContents() {
return nullptr;
}
void IdentityRequestDialogController::RequestIdPRegistrationPermision(
const url::Origin& origin,
base::OnceCallback<void(bool accepted)> callback) {
std::move(callback).Run(false);
}
void IdentityRequestDialogController::NotifyAutofillSourceReadyForTesting() {}
} // namespace content