// 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 CONTENT_BROWSER_WEBID_IDP_NETWORK_REQUEST_MANAGER_H_ #define CONTENT_BROWSER_WEBID_IDP_NETWORK_REQUEST_MANAGER_H_ #include <memory> #include <optional> #include <string> #include <vector> #include "base/functional/callback.h" #include "content/common/content_export.h" #include "content/public/browser/identity_request_account.h" #include "content/public/browser/identity_request_dialog_controller.h" #include "content/public/browser/web_contents.h" #include "services/data_decoder/public/cpp/data_decoder.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/mojom/client_security_state.mojom-forward.h" #include "url/gurl.h" #include "url/origin.h" namespace gfx { class Image; } namespace net { enum class ReferrerPolicy; } namespace network { class SimpleURLLoader; } namespace content { class RenderFrameHostImpl; // Manages network requests and maintains relevant state for interaction with // the Identity Provider across a FedCM transaction. Owned by // FederatedAuthRequestImpl and has a lifetime limited to a single identity // transaction between an RP and an IDP. // // Diagram of the permission-based data flows between the browser and the IDP: // .-------. .---. // |Browser| |IDP| // '-------' '---' // | | // | GET /fedcm.json | // |-------------------------------->| // | | // | JSON{idp_url} | // |<--------------------------------| // | | // | POST /idp_url with OIDC request | // |-------------------------------->| // | | // | token or login_url | // |<--------------------------------| // .-------. .---. // |Browser| |IDP| // '-------' '---' // // If the IDP returns an token, the sequence finishes. If it returns a // login_url, that URL is loaded as a rendered Document into a new window for // the user to interact with the IDP. class CONTENT_EXPORT IdpNetworkRequestManager { … }; } // namespace content #endif // CONTENT_BROWSER_WEBID_IDP_NETWORK_REQUEST_MANAGER_H_