summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/devtools/protocol_string.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/devtools/protocol_string.cc')
-rw-r--r--chromium/chrome/browser/devtools/protocol_string.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/chromium/chrome/browser/devtools/protocol_string.cc b/chromium/chrome/browser/devtools/protocol_string.cc
index b48641a7e2b..db3a78ebcf6 100644
--- a/chromium/chrome/browser/devtools/protocol_string.cc
+++ b/chromium/chrome/browser/devtools/protocol_string.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/devtools/protocol_string.h"
+#include <utility>
+#include "base/base64.h"
#include "base/json/json_reader.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string16.h"
@@ -162,4 +164,42 @@ void StringBuilder::reserveCapacity(size_t capacity) {
string_.reserve(capacity);
}
+Binary::Binary() : bytes_(new base::RefCountedBytes) {}
+Binary::Binary(const Binary& binary) : bytes_(binary.bytes_) {}
+Binary::Binary(scoped_refptr<base::RefCountedMemory> bytes) : bytes_(bytes) {}
+Binary::~Binary() {}
+
+String Binary::toBase64() const {
+ std::string encoded;
+ base::Base64Encode(
+ base::StringPiece(reinterpret_cast<const char*>(bytes_->front()),
+ bytes_->size()),
+ &encoded);
+ return encoded;
+}
+
+// static
+Binary Binary::fromBase64(const String& base64, bool* success) {
+ std::string decoded;
+ *success = base::Base64Decode(base::StringPiece(base64), &decoded);
+ if (*success) {
+ return Binary::fromString(std::move(decoded));
+ }
+ return Binary();
+}
+
+// static
+Binary Binary::fromRefCounted(scoped_refptr<base::RefCountedMemory> memory) {
+ return Binary(memory);
+}
+
+// static
+Binary Binary::fromVector(std::vector<uint8_t> data) {
+ return Binary(base::RefCountedBytes::TakeVector(&data));
+}
+
+// static
+Binary Binary::fromString(std::string data) {
+ return Binary(base::RefCountedString::TakeString(&data));
+}
} // namespace protocol