1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// Copyright 2011 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "remoting/protocol/authenticator.h"
#include "base/functional/bind.h"
#include "base/logging.h"
#include "remoting/base/constants.h"
#include "third_party/libjingle_xmpp/xmllite/xmlelement.h"
namespace remoting::protocol {
namespace {
const jingle_xmpp::StaticQName kAuthenticationQName = {kChromotingXmlNamespace,
"authentication"};
} // namespace
Authenticator::RejectionDetails::RejectionDetails() = default;
Authenticator::RejectionDetails::RejectionDetails(RejectionDetails&&) = default;
Authenticator::RejectionDetails::RejectionDetails(const RejectionDetails&) =
default;
Authenticator::RejectionDetails::RejectionDetails(
std::string_view message,
const base::Location& location)
: message(std::string(message)), location(location) {}
Authenticator::RejectionDetails::~RejectionDetails() = default;
Authenticator::RejectionDetails& Authenticator::RejectionDetails::operator=(
RejectionDetails&&) = default;
Authenticator::RejectionDetails& Authenticator::RejectionDetails::operator=(
const RejectionDetails&) = default;
Authenticator::Authenticator() = default;
Authenticator::~Authenticator() = default;
// static
bool Authenticator::IsAuthenticatorMessage(
const jingle_xmpp::XmlElement* message) {
return message->Name() == kAuthenticationQName;
}
// static
std::unique_ptr<jingle_xmpp::XmlElement>
Authenticator::CreateEmptyAuthenticatorMessage() {
return std::make_unique<jingle_xmpp::XmlElement>(kAuthenticationQName);
}
// static
const jingle_xmpp::XmlElement* Authenticator::FindAuthenticatorMessage(
const jingle_xmpp::XmlElement* message) {
return message->FirstNamed(kAuthenticationQName);
}
void Authenticator::NotifyStateChangeAfterAccepted() {
if (on_state_change_after_accepted_) {
on_state_change_after_accepted_.Run();
} else {
LOG(WARNING)
<< "State change notification ignored because callback is not set.";
}
}
void Authenticator::ChainStateChangeAfterAcceptedWithUnderlying(
Authenticator& underlying) {
underlying.set_state_change_after_accepted_callback(base::BindRepeating(
&Authenticator::NotifyStateChangeAfterAccepted, base::Unretained(this)));
}
} // namespace remoting::protocol
|