blob: 9c6aae149e990a600776c6f000003faa0dfb756a [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_AUTHENTICATING_URL_LOADER_AUTHENTICATING_URL_LOADER_APP_H_
#define SERVICES_AUTHENTICATING_URL_LOADER_AUTHENTICATING_URL_LOADER_APP_H_
#include "base/macros.h"
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/interface_factory.h"
#include "mojo/services/authenticating_url_loader/public/interfaces/authenticating_url_loader_factory.mojom.h"
#include "services/authenticating_url_loader/authenticating_url_loader_factory_impl.h"
namespace mojo {
class AuthenticatingURLLoaderApp
: public ApplicationDelegate,
public InterfaceFactory<AuthenticatingURLLoaderFactory> {
public:
AuthenticatingURLLoaderApp();
~AuthenticatingURLLoaderApp() override;
private:
// ApplicationDelegate
void Initialize(ApplicationImpl* app) override;
bool ConfigureIncomingConnection(ApplicationConnection* connection) override;
// InterfaceFactory<AuthenticatingURLLoaderFactory>
void Create(
ApplicationConnection* connection,
InterfaceRequest<AuthenticatingURLLoaderFactory> request) override;
ApplicationImpl* app_;
// Cache received tokens per origin of the connecting app and origin of the
// loaded URL so that once a token has been requested it is not necessary to
// do nultiple http connections to retrieve additional resources on the same
// host.
std::map<GURL, std::map<GURL, std::string>> tokens_;
DISALLOW_COPY_AND_ASSIGN(AuthenticatingURLLoaderApp);
};
} // namespace mojo
#endif // SERVICES_AUTHENTICATING_URL_LOADER_AUTHENTICATING_URL_LOADER_APP_H_