blob: 481a3793e8d4eda57098539dcd4386f05b9c968a [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_CUSTOM_HANDLERS_TEST_PROTOCOL_HANDLER_REGISTRY_DELEGATE_H_
#define COMPONENTS_CUSTOM_HANDLERS_TEST_PROTOCOL_HANDLER_REGISTRY_DELEGATE_H_
#include <set>
#include <string>
#include "components/custom_handlers/protocol_handler_registry.h"
namespace custom_handlers {
// A test ProtocolHandlerRegistry::Delegate implementation that keeps track of
// registered protocols and doesn't change any OS settings.
class TestProtocolHandlerRegistryDelegate
: public custom_handlers::ProtocolHandlerRegistry::Delegate {
public:
TestProtocolHandlerRegistryDelegate();
~TestProtocolHandlerRegistryDelegate() override;
TestProtocolHandlerRegistryDelegate(
const TestProtocolHandlerRegistryDelegate& other) = delete;
TestProtocolHandlerRegistryDelegate& operator=(
const TestProtocolHandlerRegistryDelegate& other) = delete;
// ProtocolHandlerRegistry::Delegate:
void RegisterExternalHandler(const std::string& protocol) override;
void DeregisterExternalHandler(const std::string& protocol) override;
bool IsExternalHandlerRegistered(const std::string& protocol) override;
void RegisterWithOSAsDefaultClient(const std::string& protocol,
DefaultClientCallback callback) override;
void CheckDefaultClientWithOS(const std::string& protocol,
DefaultClientCallback callback) override;
bool ShouldRemoveHandlersNotInOS() override;
bool IsFakeRegistered(const std::string& protocol);
bool IsFakeRegisteredWithOS(const std::string& protocol);
void set_force_os_failure(bool force) { force_os_failure_ = force; }
bool force_os_failure() { return force_os_failure_; }
void Reset();
private:
// Holds registered protocols.
std::set<std::string> registered_protocols_;
std::set<std::string> os_registered_protocols_;
bool force_os_failure_{false};
};
} // namespace custom_handlers
#endif // COMPONENTS_CUSTOM_HANDLERS_TEST_PROTOCOL_HANDLER_REGISTRY_DELEGATE_H_