diff options
author | Jordan Bayles <jophba@chromium.org> | 2021-04-06 09:43:46 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-06 19:42:26 +0000 |
commit | 6f3efdbca7c64eb7cca52b77d2131c1e81b1a4a4 (patch) | |
tree | 799b8202660ecf2c9b2ecd5d557d28484ecaeb20 /util | |
parent | 5acd0d59800d883115aa6c0286cdc692bc18732b (diff) | |
download | openscreen-6f3efdbca7c64eb7cca52b77d2131c1e81b1a4a4.tar.gz |
[Cast] Enable Remoting in the SenderSession
This patch exposes remoting functionality on the SenderSession class,
allowing embedders to request starting remoting.
Bug: b/184186374
Change-Id: If82cffab9eda78e8b7d83d3f46a657e45267e8d6
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2626352
Commit-Queue: Jordan Bayles <jophba@chromium.org>
Reviewed-by: Brandon Tolsch <btolsch@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/base64.cc | 16 | ||||
-rw-r--r-- | util/base64.h | 3 | ||||
-rw-r--r-- | util/base64_unittest.cc | 12 |
3 files changed, 19 insertions, 12 deletions
diff --git a/util/base64.cc b/util/base64.cc index 06e120e0..64e34175 100644 --- a/util/base64.cc +++ b/util/base64.cc @@ -6,6 +6,10 @@ #include <stddef.h> +#include <string> +#include <utility> +#include <vector> + #include "third_party/modp_b64/modp_b64.h" #include "util/osp_logging.h" #include "util/std_util.h" @@ -33,20 +37,18 @@ std::string Encode(absl::string_view input) { return out; } -bool Decode(absl::string_view input, std::string* output) { - std::string out; - out.resize(modp_b64_decode_len(input.size())); +bool Decode(absl::string_view input, std::vector<uint8_t>* output) { + std::vector<uint8_t> out(modp_b64_decode_len(input.size())); - // We don't null terminate the result since it is binary data. - const size_t output_size = - modp_b64_decode(data(out), input.data(), input.size()); + const size_t output_size = modp_b64_decode( + reinterpret_cast<char*>(out.data()), input.data(), input.size()); if (output_size == MODP_B64_ERROR) { return false; } // The output size from decode_len is generally larger than needed. out.resize(output_size); - output->swap(out); + *output = std::move(out); return true; } diff --git a/util/base64.h b/util/base64.h index b24c3b3f..a7af9eca 100644 --- a/util/base64.h +++ b/util/base64.h @@ -6,6 +6,7 @@ #define UTIL_BASE64_H_ #include <string> +#include <vector> #include "absl/strings/string_view.h" #include "absl/types/span.h" @@ -23,7 +24,7 @@ std::string Encode(absl::string_view input); // Decodes the base64 input string. Returns true if successful and false // otherwise. The output string is only modified if successful. The decoding can // be done in-place. -bool Decode(absl::string_view input, std::string* output); +bool Decode(absl::string_view input, std::vector<uint8_t>* output); } // namespace base64 } // namespace openscreen diff --git a/util/base64_unittest.cc b/util/base64_unittest.cc index 28d4fb1d..bb1b7432 100644 --- a/util/base64_unittest.cc +++ b/util/base64_unittest.cc @@ -4,6 +4,9 @@ #include "util/base64.h" +#include <string> +#include <vector> + #include "gtest/gtest.h" namespace openscreen { @@ -18,9 +21,9 @@ void CheckEncodeDecode(const char* to_encode, const char* encode_expected) { std::string encoded = Encode(to_encode); EXPECT_EQ(encode_expected, encoded); - std::string decoded; + std::vector<uint8_t> decoded; EXPECT_TRUE(Decode(encoded, &decoded)); - EXPECT_EQ(to_encode, decoded); + EXPECT_STREQ(to_encode, reinterpret_cast<char*>(decoded.data())); } } // namespace @@ -52,8 +55,9 @@ TEST(Base64Test, InPlace) { text = Encode(text); EXPECT_EQ(kBase64Text, text); - EXPECT_TRUE(Decode(text, &text)); - EXPECT_EQ(text, kText); + std::vector<uint8_t> out; + EXPECT_TRUE(Decode(text, &out)); + EXPECT_STREQ(reinterpret_cast<const char*>(out.data()), kText); } } // namespace base64 |