Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc

Issue 2485203005: [NaCl SDK] Refactor FakeURLRequestInfoResource, FakeURLResponseInfoResource, and GetHeaderValue (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc
index c26c8983ca8b4235843e66f896f520908d3ce85d..32b32511feff91d226bcc9ffc9b0f35a5975ed99 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.cc
@@ -4,6 +4,10 @@
#include "fake_ppapi/fake_util.h"
+#include <strings.h>
+
+#include <string>
+
#include <ppapi/c/pp_completion_callback.h>
#include <ppapi/c/pp_errors.h>
@@ -24,3 +28,35 @@ int32_t RunCompletionCallback(PP_CompletionCallback* callback, int32_t result) {
}
return result;
}
+
+bool GetHeaderValue(const std::string& headers,
+ const std::string& key,
+ std::string* out_value) {
+ out_value->clear();
+
+ size_t offset = 0;
+ while (offset != std::string::npos) {
+ // Find the next colon; this separates the key from the value.
+ size_t colon = headers.find(':', offset);
+ if (colon == std::string::npos)
+ return false;
+
+ // Find the newline; this separates the value from the next header.
+ size_t newline = headers.find('\n', offset);
+ if (strncasecmp(key.c_str(), &headers.data()[offset], key.size()) != 0) {
+ // Key doesn't match, skip to next header.
+ offset = newline + 1;
chanpatorikku 2016/11/14 13:54:13 Can we make this allow multiple newlines in "heade
binji 2016/11/14 22:52:31 Yes, I think this should be newline + 1.
+ continue;
+ }
+
+ // Key matches, extract value. First, skip leading spaces.
+ size_t nonspace = headers.find_first_not_of(' ', colon + 1);
+ if (nonspace == std::string::npos)
+ return false;
+
+ out_value->assign(headers, nonspace, newline - nonspace);
+ return true;
+ }
+
+ return false;
+}
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698